A discussion of CS Theory vs self taught programmers

by Security Dude

One of the things that I routinely ask myself, do I need a CS degree to be the best version of programmer me? For the longest time, I have been using really rudimentary tools to process firewall, IDS, and DNS logs for DFIR/cybercrime investigations. I typically process CSV like files with grep and awk.

I started learning about big data and I learned to process the data with Hadoop, python pandas, and visualize the data in ipython notebook, ElasticSearch, google charts and d3.js. IMHO this was fun learning but it didn’t do much for getting answers quicker.

I’ve come to Hacker School seeking answers and to learn how to be a better programmer. I work beside some brillant programmers who have CS degrees to great programmers that are self taught. Many have an understanding of CS theory and can build fast toy programs.

I wonder if my lack of CS theory makes me a weak programmer. Is this a lack of confidence, curiosity, or true need to fill the CS theory void. I have asked other Hacker Schoolers on recommendations on good learning resources on Algorithms and Data Structures. I found stuff on Coursera, Opencoureware, Udacity, and MIT.

DJ and I discussed the need to learn CS theory. I showed him the online resources and I described my yearning to build a sophisticated security device that used machine learning to alert and suggest attacks proactively. In the picture above, I visually described what my brain was doing naturally without focus or direction. I had that “aha” moment when I realized that I might have the chops to actual build a program more sophisticated than grep and awk. Cool!