But I have the wrong degree.
The Software Engineering degree I studied was very heavy on the management side of software engineering, and light on the actual implementation side of programming. I don’t know if this is common to SE degrees, however I found this was the case with mine.
I share Daniel’s love and thirst for information, and have a very strong drive to learn as much about everything as I can. So, on the surface, the dilemma of not having the right degree seems fairly harmless. Daniel describes the phenomena of “perception is reality” – people perceive that having a degree is better than not having a degree. So I guess I have a head start in that aspect. I have the piece of paper, I don’t have to deal with these negative perceptions.
Instead, I had to deal with the mistaken belief that I was more competent than I was.
I have never worked in a large company. The company I’m with now is the largest company I’ve ever been with, and we only have 4 developers, including myself. I’ve always worked with smaller companies, that either only dabble in programming, or were start-ups. It wasn’t until I looked at a job posting at a larger company that I realised that I may have made a huge, 3 year long mistake.
The job posting was your standard outline of positional requirements and expected experience and education, but it also had a puzzle attached. You had to complete the puzzle, in your language of choice, and submit the code along with your resume for consideration. This was in late 2006. I can say now that it was a simple graph problem, finding the minimal spanning tree of any given graph. Back then, however, I thought it was just an odd puzzle.
I didn’t know this was a class of problem. I didn’t know this was rooted in mathematical theory, I didn’t know there were algorithms for solving this. I charged head first into solving the puzzle blindly. I ended up with a 90% complete solution that came very close to Prim’s algorithm. I submitted my crippled solution, and naturally didn’t get the position. Later, someone pointed out what class of problem it was, and I was off searching for it.
That’s when it hit me.
That’s when I found out how little I knew about my craft.
Since that day, I’ve regretted every year in that software engineering degree, every year I learnt things that I wasn’t interested in (management) that I could have spent doing computer science. If I could afford it, and if I could afford the time off, I would go back, start fresh and do a computer science degree. However, the more I learn, the more this desire fades. But there is not a day that I do not strive to fill the gaps in my knowledge myself.
I’m not bashing Software Engineering. I know it was my fault for not properly researching the course material offered, I know that I could have gotten what I missed from another institution. The only reason I know this, however, is because I learnt enough about the industry to know what I was missing, and subsequently, know what I needed. And that’s not something every potential high school graduate looking to get into programming will know.
It’s not enough to get a degree – you have to make sure you get the right degree, from the right place. Unfortunately, that generally takes more experience to judge than you have right out of high-school.