... but the vastness of my ambition is such that it is an impossible task to tackle it head on and alone.
I want to be able to create something that combines massive datasets, distributed in-memory calculations, visualizations, functional programming, malware analysis, reverse engineering, incident response, GPU programming (CUDA).
That means I would need at least 4-5 other people involved — actual subject-matter experts. I want to fiddle around in each of these subjects — maybe diving deeper in some — but I don't want to be stuck doing just one of these disciplines since I feel like I would be missing out on the fun of the others. Of course there is the notion of grass is greener syndrome, but I think that there is a difference between that and being drawn to these quite different fields almost equally depending on the day, week or month.
In some sense my chosen Master's specialization of 'distributed systems and networking' applies to one portion of that big project, but I am more interested in doing, discussing and designing than researching. I need someone with more in-depth knowledge to ground me. I know what that feels like since I have been the grounding wire for some more creative sorts before.
But I was also the first to come up with any and all potential solutions to their wild ideas. That's what I love about being a generalist — I get to have a mixed bag of candy instead of subscribing to 50 shades of vanilla for all of eternity.
I love to be an enabler and the best way to enable creative sorts is being well-versed enough in multitude of disciplines so that you have a good feel of the field and know what is possible, probable, improbable and impossible. For the latter two I would always first check Google and then if no immediate ready-made solutions exist then turn to the experts.
I know some brilliant experts and my hat's off to them for having the fortitude... well no.. they are just built differently. It does not require fortitude for them to specialize, to go deep. It is natural for them.
This draws an easy parallel to the world of computer games and especially massively multiplayer online roleplaying games, MMORPGs. In these sorts of games you usually have multiple different character classes to choose from and these different classes do different things. One might be suited to being all stealthy, one to be the valiant defender of the weak and one the support character who makes sure everyone can stay alive for as long as possible.
When I used to play these games I had two characteristics: firstly I would favor the support characters and secondly, I always played each class. And not just like sampling for a few nights but then returning to my favorite. No. My favorite rotated. In the long run I favored the support classes — because I loved helping people succeed —, but I was unable to commit to just one.
At the height of my time spent in these games, I regularly had one of each character class maxed out and then spent an unholy amount of time trying to better them all to be game-worthy.
In the meanwhile I had friends who were specialists. They knew exactly which class beckoned them and they went for it. They were reading all about their class, they knew everything. This also meant that all of their time was spent on progressing that one endeavor.
Think about file downloads. You have a limited amount of bandwidth. You can either see one file go to 100% really fast or have 10 files each trudging along at 1/10th the speed. Of course in games, we rarely get to 100% so it was more like my friends were at 60% while I was at 6% on 10 different game characters.
Back then I was so jealous of my friends who could be so single-mindedly focused. I couldn't. It just wasn't in my nature. The character I ended up playing the most was what you could call a hybrid - you could do multiple roles with a switch of a button.
Incidentally if you look at my career history, I think it was extremely fortuitous that I chose the path of small companies end of 2004 and have been on it for the past almost 12 years now. It has meant that I have been able to do it all. Had I gone to a larger organization I would've undoubtedly been siloed as a programmer or a sysadmin - not both. I feel like I have really flourished in roles where I was able to have my hands dirty in multiple different facets of the business: infrastructure, software architecture, UI/UX design, security, recruiting and so forth.
At the same time I have friends who started their careers roughly at the same time as I did and they have specialized and are now very highly skilled in their particular craft. I will never reach that level - mostly because I don't want to dive deep. And despite the occasional what if thoughts that pop up, I am OK with this. At least I know where to find my subject-matter experts when my Grand Project needs building!
This of course brings with it certain mixed emotions of my current goal of in some form specializing in malware/reversing/forensics. But I guess that last bit is telling. I am not specializing only in malware analysis; the specialization is split into three connected but slightly different fields.
I doubt I'll really be a specialist in malware analysis in the real, deep, decade-long meaning of the word. I will find some way to bastardize my tradecraft and mix in some bits of visualization, software development and whatever else. But perhaps with that I am able to bring some tools to the specialists that they did not know they needed.
Interesting things happen at intersections of skills.
- Becky Walsh: The genius of the interdisciplinary mind [Youtube]
- James Altucher: Idea sex [Youtube]
From the book that set me on this path:
- Pragmatic Programmer: Be A Generalist [PDF]