I have officially been graduated from college for 6 months now. I graduated with a degree in computer science and was preparing myself to become a full time software developer. However, I still didn’t feel prepared or confident enough in my skills to build software in the professional world. I shared this feeling with all of my classmates with whom I graduated. After getting that degree I think most of us could relate to this picture:
In school I was taught a lot of theory and learned many classic algorithms and design patterns. Unfortunately, we were taught next to nothing when it came to real world programming and tools. Sure, it is great to know how to implement Dijkstra’s shortest path algorithm, but it would have also been helpful to be taught how to debug, outside of littering your code with print statements. I went through most of my college career doing all of my debugging this way, or trying to use some giant IDE with an overwhelming amount of features. If it weren’t for my own personal interest in software development, then I would have never touched advanced features of the command line or used source control tools like GitHub, simply because I never had a teacher really mention these things. If I never educated myself beyond what was taught in school, I would still be writing Java code in my NetBeans IDE… I am not saying everyone should screw going through a computer science program and just learn industry standard tools through the web (although that is an option, and I have seen great developers who have taken this path), but simply going through a computer science program doesn’t make you a good programmer. I was still able to get a lot out of my education, and my understanding of computers is a lot more thorough then it would have been without school.
In conclusion, I value the computer science education I received from college, but I have learned in today’s world, going to college is not a requirement to becoming a good developer. Many of the tools you will use in the industry will be self-taught through your own personal education, and working on side projects outside of school. It is this practice of self-teaching and discovering for oneself that can create great software developers. In this field the learning never stops, so learning how to discover information on your own is one of the most valuable skills a developer can have.