I was recently contacted by a high school senior who wanted to know more about my career in order to complete a school assignment. Following are the questions and my answers. How might you have responded? Or, what questions might you have asked?
What is your job title?
Chief Software Architect
What was your major and is this the major I would need to pursue for this career?
My major was Computer Science. Yes, this is typically the major you would choose to pursue a career in software development.
What are your typical work hours?
For the most part programming is a 40-45 hour/week job. However, there are sometimes deadlines or emergency bug fixes that require more hours.
What is the best / worst thing about your job?
The best and worst thing about programming is adapting to rapid-changing technology. You really have to develop the attitude of continuous education to stay on top. It is this challenge that keeps me excited about my work year after year, pushing myself to learn more and get better at what I do. However, I imagine that any career would require continuous learning to be very successful.
What school has a good program for your major?
I’m sorry, but this is something I’ve really grown out of touch with. With the rate of change of technology, a school that was great even five to ten years ago might no longer be the best college for a career in computer programming. My guess is the big “tech” schools are going to have the best programs, but any major university or private school is going to have good program for computer science in order to stay relevant.
Did you have an internship in college? If yes, in what?
I didn’t have an official internship, but I did work for a software company during my last year of college doing customer service and technical support over the phone with its customers. I got the job through a “temp” agency and was later hired full-time. It wasn’t part of my job, but I found opportunities to use my programming skills to make the job easier for myself as well as others in my position. This was an invaluable experience. As a manager who has hired many people over the years, internships make a huge difference.
What classes do you recommend that I take?
Computer programming at its core requires a lot of analytical thinking, methodical problem solving, and attention to detail. Any classes that will help develop these skills will be of great benefit. However, there’s a lot more to creating software than logic, and there are many areas of software development you can specialize in that have nothing to do with learning computer languages or a bunch of math. For instance, you might want to take art, photography, media, or communication classes to help develop good design skills in order to make software easier to use or aesthetically pleasing. A good understanding of psychology or sociology could be applied to help software more appealing to individuals or large groups of people such as online communities on the Internet. Speaking of the Internet, any classes (regardless of major) that cover the use of it would be valuable. Any classes in project management or time management would also help. The better question might be, “what classes would you not recommend?” I can’t think of any, because with any class there is probably some way it could be applied to an aspect of software development.
Is your job in an office setting or do you travel much?
My job is in an office. I’ve never had to travel much, but there are plenty of consultants who do. I also work from home quite a bit (telecommute). This is also one of the best things about my job, as it gives me a lot of flexibility, more time with my family, and less time spent on the road fuming at traffic conditions. Computer programming is one of the few jobs where telecommuting can work very well.
What made you interested in this career?
From an early age I loved to tinker with computers and spent countless hours on them, but I did not know this would be my career. I changed my major in college several times, including architecture and business administration. One day I realized that the thing I liked most about the classes I took were the opportunities to learn or complete assignments using a computer. For architecture it was learning computer-aided drafting (CAD), and for business it was learning how to create spreadsheets in my finance classes. After taking a class in programming, I was hooked and knew without a doubt this was what I wanted to do. To me, software development is a technological playground with an unlimited, ever-growing supply of toys. The things you can create are only limited by your imagination.