Friday, April 21, 2017

"Playing Video games on (computers) in the late 90's eventually translated to a programming career for me."

Meet Joe Appleton, Berks Catholic Class of 2012 who gives some great introspection into the world of computer science.
Your college? YOG? Major? Minor?
I attended Mount St. Mary's University from 2012 to 2016, graduating with a bachelor's of science in Computer Science and a minor in Cyber Security. I also attended the University of Cambridge and studied International Security and Intelligence during the summer of 2015.
Graduation from Mount St. Mary's

 Was computer programming always of interest to you? Did you base your college  selection on this school and its program?
When I first came to the Mount, I really did not know what I wanted to do. I was told that this was very normal for most people so I was not alarmed. I actually planned on being a chemistry major, but after two weeks of speaking to other students and teachers I switched to Computer Science. I have grown up with computers; my family has always had a number of them and my brother and I were always encouraged to learn more about them. Playing video games on them in the late 90s eventually translated to a programming career for me.
When did you start to use your computer for more than just papers, Google Searches, etc? I'm trying to see what makes a person want to be an intricate part of this world!
I would have to say this started around sixth or seventh grade. Up to that point, I primarily used computers for video games and schoolwork. It wasn't until my brother put together his first computer that I realized all the incredible things you could do with them. I remember my brother putting a silly little "virus" on my computer over our home's LAN, and it played Rick Astley's "Never Gonna Give You Up" until you exited it. I really wanted to figure out how he did that.
When I was young, a computer was really just a magical box. After getting to know computers better throughout high school and after studying them for four years I realized how incredible the low-level architecture of a computer really is. At the lowest level, computers function with just zeroes and ones - electricity flowing or not flowing, that sort of thing. Billions and billions of microscopic transistors - sometimes trillions depending on the chips in the computer - work together to create the underlying logic that eventually translates into images appearing on a computer monitor.
And we're not just talking desktops and laptops. There are cellphones, calculators, cars, refrigerators, fighter jets - computers are absolutely everywhere. Learning more about them in any way makes you more useful to both yourself and to employers in tech fields. I think that's why I want to be an "intricate part of this world." I built my foundation and I can take it anywhere, but no matter where I take it, there is always more to learn!
What were some of your career-related courses? 
I took many diverse courses throughout my college career. You had your standard Computer Science courses - calculus, applied statistics, data structures and algorithms, courses that simply taught you programming languages, and so on. My two favorite CS-related courses in college were Theory of Computation and Artificial Intelligence. They were also the most difficult.
Theory of Computation delved into the algorithmic logic behind what a "computer" actually is - technically, anything that computes. This terminology dates back to the mid-20th century when Alan Turing, the father of modern computing, performed most of his work. If you've heard of a Turing Test, yep, that's the same guy. You may have also heard of his work in cracking the Nazi Enigma machine, saving countless lives during WWII. In order to do all that, he essentially created computing. We're still using his teachings today.
Some of those teachings revolved around the theoretical capabilities of computers. Essentially, this meant that we were studying questions like "What is impossible for a computer to do?" and "How do we describe the computational complexity of this task/algorithm?" We used Turing machines and finite automata as our main tools in these tasks in order to develop mathematical models to prove or disprove certain problems. If you're interested in the field, google those two terms!
My other favorite course, Artificial Intelligence, had a lot of programming and difficult-to-comprehend algorithms. But one of my favorite parts of the course was the beginning. No computers, no algorithms - simply discussion. We spent the first two weeks asking questions like "Can machines think?" and "What does it mean to be human?" These questions have been debated since Turing's time and gave our class an incredible foundation and appreciation for the topics we were about to explore. I also enjoyed the course because, by the end of the year, there were only 4 people left in it including myself. It was the perfect blend of philosophy and hardcore programming, and if I could go back and experience a single course in my college career over again, this would be the one.
Joe at Cambridge

Is this major generalized or do you focus on a particular area? (again, excuse my ignorance!)
Computer Science is very generalized. The science of computers is just so incredibly broad that you can get the degree and then pursue any facet of computing that you have interest in. It's more of a general groundwork that allows you to find your strongsuits, or even something that you just want to explore more in order for it to become your strongsuit. For example, two of the early courses I took were simply to teach the languages Python and Java. Those languages were used to write computer programs that grew increasingly complex over the course of a semester. 
(I think, If you really wanted to, you could just learn to program and then go job seeking! Of course it looks better to have a 4-year degree, but many people today and even more people in the past went straight to programming jobs after 2 years of schooling or less. If you're an excellent programmer and have enough experience in the field, or if you can at least prove to an employer that you've worked on incredible projects despite a lack of schooling, it would be difficult to deny you.)
Like I said, Computer Science is very broad. You can go to school for that and you can go to school for any of its subcategories, some of which are: programmer analyst, database administrator, computer graphics artist, game developer, cyber security analyst, network systems administrator, web developer, software engineer, and so on. The opportunities are just crazy and you're bound to find something you like.

Did you work in this field during college on campus or as an intern?
During my later years of college, I was a tutor for some math and computer science courses. I was helping freshmen and sophomores with the same courses I took years ago. Back then, I struggled with the courses occasionally, but revisiting the material as I was nearing the end of my schooling showed me how far I had come. Writing those programs was easy now! I remember this every time I am faced with a new problem in programming. With enough thought and maybe a change in strategy or two, you'll always be able to overcome a programming challenge whether its incompatible architectures in software engineering, mismatching plugin versions in web development, or confusing logic in your programming homework. It's why tutors are there - and when you start careers, the new tutors are the senior level programmers above you. You can get better at any aspect of Computer Science, but you will need to learn to ask for help many times along the way.
During the summer of 2015, I interned for Boscov's Department Stores for two months as a web developer. I cannot think of a better place to have learned these skills. When I first started, I was looking through the massive codebase that held up the front- and back-ends of their applications. I had previously only worked with one language at a time and maybe across four or five files, but now I was faced with code written in several languages that I had never used, extensions I did not recognize, and thousands of files all working with one another. After those two months, I was able to look back and I wondered why I ever worried. 
That initial time at Boscov's was a great foray into the real world. It's impossible to teach you some of these things with school - you simply need a real taste of it. The team of programmers that I worked with there (and still work with) has been a fantastic help for me along the way.

 What is your current position?  Can you explain your responsibilities? (combined)
I work on both the front end user interface and the backend logic/architecture of the Boscov's website and underlying systems. I suppose you could call me a Web Developer, except that I am able to work on all aspects of their systems in some way. A more accurate job title is a Programmer Analyst or a Full Stack Developer, both of which are worthy of a google if you're interested in working on all the pieces that make up an ecommerce system.
For my job, I am responsible for listening to the business requirements of the "business team." The business team consists of a number of people who make decisions relating to the website and pass those instructions on to the technical team, which is my team. The business team has specialists in digital analytics, marketing, search engine optimization (helping us appear higher on google searches) and so on. Both the business team and my technical team work closely to develop functional specifications for each project, big or small. Projects can range anywhere from simple bug fixes to enormous, year-long endeavors.
I am on-call every month and a half. Our team is on a rotation, taking turns each week. Whenever you are on call you need to be available to handle problems around the clock (which means getting the occasional call at 3 AM and remoting-in to work to take a look at the problem). Some problems might occur if there is an issue with network traffic (people can't get to the site) and such problems may be the result of an issue on our end or an issue external to us (Internet providers experiencing issues). Still other problems may occur if one of our automated computer jobs fails. This could be due to memory issues with the server it's running on or even a programming error. The calls we get come from other Boscovs technical employees. These calls are usually few and far between, but we always want to make sure our support structure is as solid as possible.

What advice do you give to high school student who is considering this career?
Web development is fairly specialized. I would recommend a high school student first become accustomed to what the heck is actually inside a computer. That means understand all of the parts inside and what they do, and that it isn't actually a magic box. I think that should get the interest going. It's what got my interesting going, at least. After some research, get your hands dirty. Take apart an old computer (NOT YOUR PARENT'S CURRENT COMPUTER). Figure out how to install a programming development environment and write your first program. The basic steps are very simple and it's free. Even a small, old laptop would do. There are people who exist that started with the very basics of programming and eventually made world-famous websites, video games, and cell phone apps. All it takes is some practice and creativity, and you really can program whatever you set your mind to. It might take a while but you have to start somewhere.


A major piece of advice is one that is certainly easier said than done: don't feel intimidated when you first start. The world of computer science is incredibly complicated for a reason; I still haven't met a single person who can do it all. In your studies, though, you will come across many people who may seem to be miles ahead of you. Most of the time, they are more skilled at it because they simply got an earlier start of they spent more free time programming. Sometimes, programming does come more easily to some people than it does to others, and that's okay. Just don't give up when you face a problem and don't forget to ask for help. Asking for help in the field of computer science (and any engineering field in general) is arguably much more important than in other fields.

 What are some character traits that you have that make you good for this field?
The stereotype of computer programmers is that we're all nerds or we outsourced all our coders to China or India or something. This isn't the case. I know programmers who play football, drive speedboats, climb mountains, run ultra-marathons, scubadive, and so on. Like any job really, you want to be personable yet professional. You need to be able to communicate effectively. Oftentimes it is very difficult to explain a problem with a program because there are so many variables, so many places other code interacts with it, so many moving parts. This is where effective communication is needed the most.
Unless you're a one-person company, computer programmers always work together. We are a team. And when someone on your immediate team doesn't have the answer, you both can go ask the tens of millions of programmers in various online programming communities. It's very likely that your problem has been experienced before and already has an answer.
Another good, yet underappreciated trait, to have is a small yet firm ego. Sometimes programmers on your team may disagree about a certain way to approach a problem and it is paramount that you respect others' viewpoints. That doesn't mean you shouldn't back down on your opinions immediately, but simply listen and seriously consider your teammates' ideas. You're all working towards the same goal in the end.

During college, I participated in our Math & CS Department's SmallTalk program. Any student could sign up to give a half-hour lecture about any math or computer science topic they wanted. The lectures were open to anyone interested and usually the classroom was full. I ended up giving about 10 or so of these talks throughout my college career, and they helped me tremendously. Everything from the research to the presentation increased my appreciation for my field and made me excited to share it. In the beginning there were some nerves to overcome, but they were nonexistent by senior year. I would recommend that people seeking this field also have that same drive to appreciate the work they're doing. You're working in some of the most advanced fields that humanity has ever created.

BC Students, notice how Joe, like others, has emphasized: 1. the importance of active participation in pre-job activities like clubs or internships and 2. the importance of communication skills---TALKING to others!

THANK-YOU, JOE, FOR PUTTING AN OBVIOUS AMOUNT OF TIME AND THOUGHT INTO MY QUESTIONS....GO SAINTS! (AND GO JOE!)

2 comments:

  1. This might be as a result of memory space problems with the particular server it really is working about or possibly a development problem. The particular telephone calls we all acquire result from some other Boscovs complex staff. These kinds of telephone calls usually are quite few, yet we all constantly need to be sure our own help construction can be as sound as you can help with programming.

    ReplyDelete