Edit- I’ve added an update as a web developer 4th months in. You can find it here.
I recently completed the online web development bootcamp the FireHoseProject. It was great (you can read my Quora review here). I learned a ton, really enjoyed it and even landed a Ruby developer job a week or so after the course ended.
Now, I didn’t actually enroll in the course planning on being a web developer. I mainly wanted to focus on improving my coding skills, in particular learning object oriented programming. Since the FireHoseProject is very flexible, my mentor and I spent a lot time on algorithms and data structures- things like dynamic programming, recursive functions and balancing binary trees. Once I finished the course, I got a request to write a blog post about why I thought algorithms were so important. Well, here we go-
First, a little background. I have a Ph.D. in computational chemistry. I decided I wanted to leave academia and didn’t see much demand in the private sector. Since I’d been programming for the past decade or so, it seemed like a good fit for a career transition. Unfortunately, I’ve only really coded in Fortran, and without a computer science degree, I was having trouble finding a job. An online coding bootcamp looked like a good idea and it worked well for me.
So, here’s where I try and persuade you that web development is much more than just HTML, CSS, and understanding MVC. In the FireHoseProject, we made three web applications, of increasing complexity, and finished with a group project that was a chess app. The web apps did not require much coding, but the chess app did. Now, if you waited to try and understand Ruby and object oriented programming only once you started the chess app, you were probably in trouble. Why? Well, it’s not because you aren’t smart or hard working. It’s because understanding programming takes time. It’s not just syntax and style, it’s solving problems with computer code. To solve a problem you have to learn how to think about it- how to break it into smaller pieces and how to use the tools provided by the programming language.
Studying algorithms and data structures is one way to learn how to solve problems with computer code. There are other ways, but over the years, computer scientists and mathematicians have developed algorithms to efficiently solve certain categories of problems. A good place to start is by learning these methods and applying them to well-known test cases. Along the way, your coding skills and comfort level with syntax and conventions (such as object oriented programming) will expand. Then, once you’re asked to apply them in practical situations, you have a strong base from which to start.
Another, more practical, motivation for learning algorithms and data structures is that it sounds really good in the interviewing process. Most of the lead developers will have computer science degrees and connecting with them certainly helps your job prospects. I had two technical interviews and I received questions about programming in both. In the first, I was asked to explain binary trees and dynamic programming. In the second, I was asked to go to a white board and write out a class (it was a dragon class with methods for flying and breathing fire). Furthermore, during the interview, the lead developer seemed to smile and engage more when I mentioned some of the algorithms I’d learned.
There are always many paths to the same place. However, I would encourage anyone entering the web development field to try and develop strong programming skills. Learning and practising computer science algorithms is a way I’d recommend improving those skills.