When I was a little girl growing up we didn’t have a computer at home. My dad was an electrical engineer and had access to computers (and video games) at work. Therefore, my deal with dad was this: if he came to my room and told me that he could take me to work with him, and I would get up. At any hour of day or night, I was willing to go just so I could play with computers.
Perhaps I should have known then where my career path would take me.
It took me through four years of bachelor in computer science, information systems specialist, and on to being a software developer.
Many people have an image in their head of what a programmer’s life is like, and I will admit a lot of the stereotypes fit. We do spend hours in front of the computer, forgetting to eat, and consume copious amounts of coffee.
I love my job. There is nothing in the world I’d rather be doing, and I’m lucky enough to think I would do my job for free if I didn’t have to work for money. That said it wasn’t without hard work and some intense courses at the university that I got to where I am.
A reassuring note for those only moderately fond of math: completing a computer science degree may require surprisingly little of it compared to some other disciplines. The stereotype of a computer geek being what it is, I went into the university thinking I’d be doing math all the time, but as it turned out it was my double major in Economics responsible for that. Once I got a little tired of lambda calculus and switched to Computer Science Specialist I only had to do first year calculus and linear algebra, and second year linear algebra. (Of course this will depend on the university you get accepted to.)
A reassuring note for those very interested in math: in later years you can specialize in areas where calculus and algebra are more applicable and study them to your hearts content. Math has a lot of practical application in computer gaming and graphics in particular.
The courses I took towards my degree fell into the following categories: (a) software development, (b) database management, (c) theory, (d) math & related fields.
A software development course is usually one where you get a lot of assignments and spend the majority of your time coding. These are the most practical of all courses and generally where you develop the basic skills required in the professional world.
A database management course is where you learn about, you guessed it, databases — how to make them perform better and what is the theory behind today’s most popular storage technologies.
In theoretical computer science courses you learn all the deep stuff. (I thought these were the most complicated courses but also the most fascinating!) An example of what you might learn here is the Complexity Theory — how to figure out how complex your algorithm is that is in what amount of time it will complete, and how much memory it will use. These courses are not essential to go out and start developing in the world, but you will find that as your work tasks get progressively more involved this is the knowledge that keeps you afloat among your peers in the workspace.
As for related courses, these are many and varied. In fact, one of the perks of computer science is that many academic fields can be related to computers, which are, after all, based on human brains. You want to study philosophy — why it has applications in computer science, since logic is vital to working with computers! Linguistics? The study of languages is about learning to communicate, and what do we do with computers except try to communicate our ideas to them. Biology, economics, algebra, calculus, psychology, art and many other disciplines can be related to the kind of work you do.
So what is it we do every day at work? This depends mostly on the kind of company and industry you end up going into. In my opinion, the most fulfilling jobs are working for a purely software company (a company whose business it is to develop software) rather than being an in-house developer (for example at a bank, where a small department is kept that supports all of the organization’s computer-related needs).
A developer’s job at a bank or some other institution will generally be easier because these companies are not looking to keep up with the latest and greatest trends, but are rather looking for stability and function. Slow and steady wins the race out there.
At a software company on the other hand, you get to explore the latest technologies, and depending on how forward-thinking your company is, can work on the cutting edge in R&D (Research & Development) departments, coming up with applications that everyone will be using in a couple of year’s time, like, for example, Google Wave.
During one of the years in university I worked in Artificial Intelligence department, and I still consider that area to be the most fascinating area of study. This is when it becomes clear where the horizon of possibilities lies.
And the possibilities are endless.