I was interviewed for a high school career day recently, and thought it would be fun to share my answers here:
Please describe your current job title and position and responsibilities as a programmer, including some of the daily tasks you perform. Do you find these task enjoyable?
I am a (web) developer at Hashrocket in Chicago. My daily tasks include client interaction at our standup meetings, developing software, organizing and attending Meetups, maintaining an open source project for the company, and trying to represent Hashrocket as best I can across the internet.
What classes did you take in high school and college that you feel were the most helpful in preparing you for a career in computer programming? What classes do you wish you had taken in order to better prepare yourself for your career?
My high school didn't have CS (late 90's). I took one CS101 course in college, and a lot of math, science, and engineering. I came into programming with no formal training. I wish CS classes had been available; you can't start too soon.
Of the classes I did take, I think English and History were important. Communicating and writing well are important skills for a programmer.
What type and level of education did you have in order to qualify for your current position in computer programming? How long did it take you to finish your education and when do you feel that your knowledge came to you comfortably during your work experience?
I have a bachelor's degree in History with a minor in Systems Engineering. My programming skills are 100% self-taught. I learned to code with free resources like Codecademy, books like the 'Ruby on Rails' tutorial by Michael Hartl, and a lot of hard work.
I went from never coding before to getting hired as a junior web developer in about six months. The code 'boot camps' that have sprung up in recent years follow a similar pattern. Web development still isn't really taught in CS programs, so everybody has to learn it another way.
Please describe the physical work environment and atmosphere of your work place. If you could change something about it, what would it be and why?
We pair program (two developers, one workstation) in a loft-style office space. If I could change one thing, I would move our office farther away from the L (Chicago's subway) -- it passes by every few minutes and is loud.
What type of other professionals do you work very closely with on a regular basis and how do you interact with these professionals? Do you enjoy interacting with other professionals?
I work with developers, designers, product managers, and our sales and support staff. I love these interactions because we are a small company and everybody is on the same page.
Do you consider computer programming to be interesting and challenging? Why or why not?
Computer programming is interesting and challenging.
It's interesting because it's always changing. There is so much to learn and do, so many ways to specialize, and so many different paths your career can take. You can blaze your own trail.
It's challenging because sometimes the problems you are solving have never been solved before. There is no manual or resource-- you just have to come up with a solution. Also, the change I mentioned is accelerating. If you want to stay 'on the edge', you have to work hard.
Please describe what you consider to be the most enjoyable and least enjoyable parts of your job and explain why you feel this way.
Most enjoyable: using a new tool to solve a difficult problem. It's amazing to approach a problem, think 'I have no idea how to do this', and then solve it anyway.
Least enjoyable: dealing with dependencies. We rely on a lot of open-source libraries and tools, and this can be tedious if they aren't well-maintained. Limiting your reliance on other programmers is a good idea.
What are some of the most demanding challenges a programmer in your position deals with on a regular basis?
I'd say explaining something super technical to a non-programmer is up there. You have to take a difficult, abstract idea that may be hard for a programmer to understand, and translate it into plain English, taking into account the experience and background of the person you're speaking to. If you get it wrong, you'll know, and even if you get it right, they might not care, or think you are stalling, etc. Getting past the latter situation takes a lot of trust-building.
Staying current on technology is also tough. Everything changes quickly— you have to be selective about where you put your attention.
Knowing what you have experienced in your professional life and the future outlook in programming, would you still select this career for yourself and would you recommend it to someone else? Why or why not?
Yes! Programming is interesting and challenging. I love what I do.
Programming is the future. Our job is difficult to automate because it takes so much experience and context. Even though it's knowledge work, I think (hope) programming will be one of the last jobs to be replaced by a machine.
Is there any additional advice you have for someone my age who is interested in pursuing a computer programming career?
I wrote this a while ago, to try and distill my suggestions: http://www.jakeworth.com/learning-to-program
If I had to add to the list of tips here:
- Hard skills trump soft skills.
- Take notes. I use a Moleskine notebook, and also https://til.hashrocket.com/. People who write things down are just more effective.
- Focus on building, not on learning. When I started, I spent a lot of time reading docs and doing tutorials. Try to get to a point where you can build something simple, then just start doing it.
Hope this helps!