So You Want to Build Software For a Living (Introduction)

I’ve been building software since about 1978 and I’ve kept up with the technology.  I discovered that I wanted to write software as a career soon after I purchased my own computer in 1984 (ah yes, the Macintosh).  Many of my friends and family have asked me how hard it is to get into the software development industry and I usually steer them towards testing their interest.  Here’s my expert advice: 

“Take an entry level programming class.  If you make it through one class and you think you would enjoy doing something like that as a 9 to 5 job, then go for it.”   

The flip-side of this coin, and the reason I recommend taking one class, is that people who can’t hack the first class have no hope of making it their career.  The bottom line is that you have to have the drive and the interest to be successful.  For me, programming is a hobby.  If I don’t get enough programming done at work in a week, I’ll start writing a program or designing a project at home as a hobby.  I have to get it out of my system.  I’m what you would call “driven.”  I’m the type of person that companies look for when they need a programmer.  In fact, when I interview prospective programmers, I usually ask them what they do for a hobby.  If their hobby relates to programming or they do programming as a hobby, then it’s a sure bet that they are good at it.

So if you’ve stumbled onto this blog and you are sitting on the fence trying to decide if you want to pursue a degree in Computer Science, then you’ve come to the right blog.  In this post, I’m going to try and give you an idea what it takes to get a degree in Computer Science.

So let’s pretend that you’re not quite sure what this “programming” thing is all about.  You’ve been accepted by a university and you’ve declared your major as Computer Science.  You’re about to start your first class and you’re going to jump in head-first.  Except, you’re not sure what that first class is all about.  The first class you take will be a language class.  You’ll need to learn the basic syntax of a structured high-level language.  What does this mean?  It means that you’ll probably learn C or Java.  It doesn’t matter which language is “better” or which is the most used language in the marketplace, because you’re just learning your first language.  By the time you graduate, you’ll have learned at least 4 languages, and probably more.  In fact, you’ll start to discover that there are really only about 3 or 4 language “types” in the world and once you learn one language of each type, learning another is just as easy as learning to drive a different model care from the same manufacturer.  The controls are a bit different, but the operation is the same.  You’ll learn even more languages after you graduate.  I’ve learned at least 16 languages in my lifetime so far.

So what is this “syntax” that I’m talking about.  Well, the syntax is the patterns that are used by the language.  C and Java use very similar syntax.  When I was at the University of Michigan I learned Pascal.  Before that, it was FORTRAN, Basic and COBOL.  In any language, there is a syntax that must be learned first.  The only way to learn the syntax of a language is to write programs.  If you write enough Java programs, you’ll know the syntax of Java like the back of your hand.

The next step in your education will involve algorithms.  Algorithms are hard to escape.  In fact, programming is worthless without an algorithm and even the tiniest program is following some sort of elementary algorithm.  In Computer Science, there are lots of algorithms to handle different situations.  Once you have a few hundred algorithms under your belt, you’ll be able to write programs to perform almost any task.  To learn algorithms, you need to write more programs.  Writing programs that use different algorithms will teach you how to troubleshoot problems in your code and recognize how the algorithms actually work.

After you complete your algorithms classes, you’ll move onto specific upper level 300 and 400 level classes.  These are narrow in subject and they will also focus on algorithms, but they will focus on problems that are specific.  Subjects such as encryption, simulation, compilers, graphics, database design, etc.  Once you have crossed into these classes you’ll start to narrow your interest into subjects that you enjoy and ones that you’ll avoid.  Don’t be surprised by what you discover.  I found that the computer theory and compiler classes held my interest even though they are both about processing streams of text.  My database class was dry and boring, but my career in database design is anything but boring.  Sometimes the classwork doesn’t match real-world.  

So what do you do if you survive the first programming class?  This would be gut-check time.  Are you willing to continue with classes that are going to be like the one you just took?  Did you find the course material to be easy or are you still lost?  Did any of the programs get your blood pumping?  Or did they cause you to pull your hair out?  

In my next blog post, I’m going to try and help you through the first class.  I’ll give you some hints up-front that you should follow to ensure that you do well and learn the material.  Just passing the class, but not learning the material will be of no use.  This degree program requires you to understand and apply your knowledge.  The Computer Science career path is about solving problems.  Similar to solving math word problems (I still hate those), but in this case you’ll be solving real-world computer problems.


Leave a Reply