Since I was 10 years old I have been programming - and it has been a wild ride. My career started early in my parents basement, building games in QuickBasic 4.0. I quickly progressed to C/C++ and built some 3D games for DirectX that I never released. Around the age of 18 my aunt and uncle hired me to help with their website business back in the early days of Adobe Flash and the horrors of Internet Explorer 6. I soaked it all up, one after another project consumed my time.
My big-city professional career began with a consulting company in Denver back around 2007. I was 22 years old. Not having a computer science degree, I was oblivious to what I had missed out on and so a few years later in Chicago I went back to UIC to get my computer science bachelors degree. Every bit of the algorithms and data structures classes fascinated me because my real-world experience had taught me just how much time I could have saved if I had applied the principles more thoroughly in my work.
During my employment at Spotify I became fascinated with teaching, and realized that every 3-4 years a new generation of technologies are developed that often repeat the exact same patterns as older technologies.
Senior engineers move up - climbing to manager positions - and often have a hard time passing on their deeper technical knowledge to the next generation. Young engineers reinvent technologies - and struggle against the same issues others have already solved - often on their manager's dime.
Senior engineers know that one simple piece of knowledge can save you days or weeks of work. A little change in the architecture at the beginning might cost no more time, but might save months of refactoring work down the line.
It is a passion of mine to share this knowledge.
My goal with this blog is to brain-dump the things I have learned, and hopefully in a way that can teach others so that you can be the most efficient programmer possible.
- Josh