I had a coworker at my first software job who, despite being a friend, was also insensitive and demeaning on more than a few occasions, not just toward me but also toward others.
He was very technically capable, and for that reason it was hard to dismiss his technical criticism. However, one day I was tasked with finishing one of his tickets and I spent several hours puzzling over what his code was trying to do. Partly, I was very new to programming at the time, and partly, his code was just very convoluted. It used 4 or 5 data structures, passing values from the database back and forth between these to modify the data. When I finally figured out what was going on, I asked myself what really needed to be done instead, and realized that his code could be dramatically simplified, which I did.
It was one of my first introductions to this strange concept that I might actually belong in the industry. I wasn’t smart enough to keep so much in my head at once, but that was actually an asset, since it meant that I might be more capable of writing simple and easy to maintain code. Over-engineering something doesn’t do you any good.
But there were times when he would read something I wrote and say, “This is some of the worst code I’ve ever read”, before later saying, “Oh…now I get it”. Or he would make fun of me or another coworker for not being deeply engrossed in internet culture.
And it’s not that there weren’t fun times and many laughs shared on our team, only that this sort of derision kind of sunk into me over time. Career growth has been painfully slow for me as I’ve struggled to find jobs that use even remotely modern technologies, and it hurts to see some people, now much younger than me, graduate and immediately start working with new technologies, earning salaries almost as high as what I earned. Where did I go wrong? Why hasn’t my career taken off so fast?
And some of those messages from that coworker come back up. “You just don’t know anything”. “You’re not smart enough”. “Everybody knows these things, you must just not have been paying attention”. It’s strange now being in my 30s and still feeling like there were some things people must have learned in their Computer Science degrees that I’m only just learning now.
For example, XML uses this naming scheme to help differentiate sources. But the naming scheme, for whatever dumb reason, has historically always used urls. This was so incredibly difficult for me to understand 7 years ago, because to me, a url should be loaded with meaning, otherwise why would you use it? But urls are used quite arbitrarily for establishing an alias for an XML source. I just felt so stupid over that, and how long it took me to understand it, but it wasn’t entirely unreasonable.
And I know that some of this is bogus. Just because somebody passed a class on operating systems doesn’t mean they still remember memory paging. It doesn’t mean any of it was relevant enough to them at the time to truly sink in. Learning it for the first time in your 30s is different than learning it in your early 20s and then immediately forgetting it for the rest of your life. But even when that isn’t the case, what’s so wrong with learning something for the first time in your 30s?
Most people at my various software jobs have actually been really encouraging. The best people to work with have been those somewhere in the range of 10-20 years older than me who are patient, humble, and willing to help, who readily admit their own limitations and go the extra mile to be encouraging and not to make you feel stupid. But for some reason, it’s that one voice that comes back up in my head more often than not.
We often live in the shadows of these larger-than-life stories about awesome people. There’s the hockey player who put on his first set of skates when he was 4 and went on to become pro. The rambunctious kids who climbed everything and went on to conquer untamed mountains. The programmer who was writing programs in BASIC when he was 12. And even though these are the extreme outliers, its our cultural ethos to hold these people up as heroes of some sort. What lies beneath the narrative is this idea that extreme specialization defines a good person, and that your identity is determined by your gifts and your abilities. To be ultra-specialized is to be somebody, and unless you can be somebody, why bother trying at all?
Of course, being exceptionally smart or capable is often a smokescreen. I’ve been chasing it for well over a decade, and this is finally, truly sinking in.
Specialists are highly praised, while generalists are often disregarded. “Jack of all trades, master of none” is the insult often slung at generalists. However, the time and life commitment to become a specialist is incredibly steep, and I think people underestimate the true cost of reaching this level.
I guess technically I want to be a cyber security specialist. But you can’t really become a cyber security specialists without a solid generalist background in technology. I find this really curious.
Honestly, I’m kind of scared to leave software development. The pay is great, and there seems to always be room for increases. However, I think if I spent the next 10 years in software, I would become incredibly bored, and even if the money was even better than I’ve earned, you have to ask yourself what the price of 40 hours per week over 10 yeas amounts to when you don’t really care about what you do, and otherwise have the option to change this.
And there’s definitely money to be made in cyber security, don’t get me wrong. I suspect that taking a step back in pay will actually allow me to take several steps forward in pay over time. But I also think of the things I could possibly do with some of these generalist skills I’m developing to prepare for this. If I could switch between software development, system administration, and network administration at will, I might never earn as much as a specialist in one of those might earn, but damn, I’d probably never have to worry about not having a decent-paying job, and I could switch things up a lot and probably never get bored.
Of course, this also comes at the price of specialization and association, and the possibility that somebody you work with may scoff at you for not knowing something that supposedly everybody should know.
Frankly, though, I’m starting to fully embrace the fact that I have to read books twice to truly understand them and internalize their messages. I’m on my second read-through of my Network+ book, and so many things are starting to click now. I think it has always been this way for me.
I’d like to tune that old voice out because it’s not fair and it’s not true. It doesn’t build up, but only tears down. And even though people often look down on certifications and scoff at them, too, I feel like I’ve learned a ton from all this study, and I like the idea of doing more.