Name: Andrew Kennedy
Born: Seaforth, Ontario
Profession: Computer Programming
Getting computers to perform a certain task requires special programs for each function. To do this, computers need to be told what to do in a language that only computers speak and understand...well computers and computer programmers! Andrew Kennedy speaks about what being a computer programmer is all about.
What is an Applications Developer?
I'm essentially a computer programmer. I happen to be working on computer programs that are used in medical imaging, like CT or MRI scanners. I need to know a number of different computer programming languages, how to design graphical user interfaces, and how to design computer algorithms to do different sorts of calculations.
What do you need to be able to program the computers that run these machines to do?
There are a few different aspects of the machine that require programming. A CT or MRI machine is a complicated mechanical and electrical system that uses computers to control some of the mechanical actions and electronic systems. One prime example is acquiring the images generated by the machine. This is all done using computer control. Once these images are acquired, then you need to analyze them and get numerical data from them. I actually work on the programs that analyze the images.
What other types of fields can computer programmers work in?
Computer programmers are found in lots of different companies and fields. They work in businesses ranging from banking to NASA, depending on what is of interest to you, and where your skills lie.
What is a typical day like for you?
It's hard to say that there's a typical day for a programmer. My day could involve any number of different activities. These could include reading about a new technique or technology that we may use in the future, working on the design of a new feature for a program I'm working on, actually writing the code to make the feature work, fixing a bug in some code (whether I wrote the code or not) or helping a customer with a problem they are having with our program. Most software projects of any significance are too large for one person to accomplish so a lot of this work is done in groups. This means that it is very important to be able to get along with a wide variety of people and also to be able to communicate with others about the work that you are doing.
What do you mean by "writing code"?
Writing code means translating between a written description of an algorithm, to the actual instructions that the computer understands (called the source code), or something close to that. There are a number of different languages that we use in my work. These have their own unique structures and styles that you need to learn. Once the algorithm has been converted to computer instructions, you have a program that someone can use to do something useful.
Did you always want to be an Applications Developer?
No, it is work that I found interesting and appealing during university, and through the work I have done in my jobs since then.
What courses in high school prepared you for this field?
Mathematics, Computer Science, Physics
Where did you go to university?
University of Waterloo
How did you decide where to go?
During my final year of high school, I participated in the campus visiting programs for the University of Toronto (UofT) and the University of Waterloo (UW) that are typically held during March Break. I knew that UW had the strong reputation and the co-op program to gain work experience and help pay for my studies, so I decided to go to UW. I was very interested in science and mathematics, but wanted something that I felt was more practical or applied, so engineering was a natural fit for me in that regard.
Was there extra training required for this career after you finished university? If so, what?
I returned to Waterloo for my Master's. I don't think that this is strictly necessary, but it gave me additional knowledge that I felt would help me do my job more effectively.
What is the coolest part of your job?
Getting to go from nothing but a blank piece of paper and an idea for something that can be done with a computer, and creating a program or part of a program that will do it. Its very creative and interesting work and the problems that we're trying to solve are varied and challenging.
What part of the job could you do without?
Sometimes we wind up with a ton of meetings. Those always feel like the least productive parts of my day, and throw off the flow of work sometimes.
Everyone makes mistakes so what was the dumbest thing you've ever done at work?
Nearly getting electrocuted. We were working on an electronics control box at one of my jobs, and instead of unplugging it, I was working inside the box while it still had power. I felt some current run through me, but fortunately not enough to cause any permanent damage to me. I would never do something like that again in the future.
What do you do in your spare time?
Reading, email my friends, train for running and triathlon racing (that occupies a lot of my time), travel around Canada and the world.
What is the last movie you saw? Thumbs up or thumbs down?
In a movie theatre, I think it was Memoirs of a Geisha. Thumbs only half way up. Visually, I thought it was a great film, but there were a few problems with the way the movie was done otherwise.
What music do you have in your CD player right now?
I actually listen to the radio rather than having a cd player or mp3 player. It exposes me to music I might not otherwise pick, and you know what, I actually like some of it sometimes, and discover new artists I wouldn't otherwise know about.
Any advice that you would give others seeking a similar career?
My first bit of advice would be to visit the universities that you are considering attending. It will give you a good feel for what the environment there will be like. The other piece of advice, and I think is far more important is to do things other than just book learning. Sure, the work you do in your classes is important, but you learn a great deal outside of class in other activities as well. However, try not to get spread too thin with too many different activities. Pick a small group of activities, do them well, and try to take on significant leadership roles in those activities. This will provide you with opportunities to develop the non-technical skills that employers are looking for.
What are some good references for teens thinking about learning more about computer programming as a profession?
There are lots of great resources on the web that you can search for information. If you're really interested in programming, a great and cheap way to start is to use Open Source tools like Linux. Since these are free programs, there's no cost to you, assuming you already have a computer. You can read the source code to learn how other programmers have done something, make changes to the code and see what happens. You can also write your own programs using free tools on the web to further develop your skills. Programming is more than just using tools like Word, PowerPoint, etc.