Today I attended a talk at Dev Bootcamp by their ex-CTO Myles Bryne who is now teaching at Bradfield (preparing students and professionals for tech job interviews). A disclaimer: There is no such thing as a 10X programmer, neither does programming look like the animation on the right.
Personal plug: If you would like to get more reviews on tech talks in the Bay Area that I attend, subscribe to my blog. I usually do 1-2 posts a week.
Although the talk was geared more towards in-the-making and junior engineers, there was a lot of takeaway for experienced people as well. I’ll summarize a few takeaways and then discuss my biggest takeaway in detail.
- Invest your time in “Mind vim”. Vim is a simple text editor that has made so many people so productive. Easier != Better. Invest your time in techniques to stretch the brain muscle.
- Learn about evils of software state and side effects and avoid them whenever possible. Prefer function of methods. A simple google search on Function vs Method would result in a more nitty gritty answer and some go on a pedantic journey for explanation. Myle’s point was to learn the original soul of functions: i.e. to produce the same output for the given inputs predictably without side effects in any other part of the system. This makes it more manageable, readable and testable.
- Learn about ‘reduce’ (also called inject in ruby) and treat them as primitive building blocks of programming thinking.
- My first biggest take away was the introduction to Epigrams of Programming. What a gem of a reading. Thanks Myles!
- Learn beyond just libraries and frameworks and dig deeper into the basics. Learn data structure primitives like trees and graphs. Learn their application and use that instead of regexing your way thru all the things (and treating everything as a string). Do leetcode and hackerRank problems.
- The command line has been around and Lindy’s principle suggests that it will be around for as much again. Its a pretty good bet to learn it early on.
- Learn the event loop. Its the staple of all programming models and will make life easier in any development environment or framework.
In the Q&A that followed after the talk, I asked Myles whether his talk goes against the very basis of Dev Bootcamp: To teach programming in a very small time skipping over a lot of really fundamental things which are only taught in an undergrad course in computer science? Here is what he said which I think is my biggest takeaway tonight:
Courses like Dev Bootcamp show you in 9-12 weeks whether you are made for this stuff or not. Undergrad CS would be much easier and relatable after some work in the software world, in fact – it should be mandatory for undergrads to do 2-3 years of real world industry programming before starting the degree.
Oh boy, what is he talking about?
As unintuitive as it sounds, Myles makes perfect sense to me. In my experience, the most ‘talented’ programmers were all those who had prior real world programming experience before joining the undergrad course. We knew what a process is and what happens when it gets killed so operating systems was more interesting to us. Other students always painfully asked me (or those who have had prior programming experience) how on earth was I able to enjoy those courses.
So its not the students fault that they find themselves in such a miserable situation. There really is a great deal of homework required by most people to understand really hard and deep concepts that are taught in theoretical computer sciences courses. A lot of people I know in the industry want to go back to college and learn more! A little priming before the university is absolutely critical.
The idea that students should invest time in going through Dev Bootcamp or similar activity (in a paid institute or on their own) really struck me and is my biggest take away today.
Until next time, code away!