26: To Generalize, or to Specialize, that is the Question... Part Two
Published 3/13/2015
Should you be a generalized programmer or a specialized programmer? Generalized programmers learn a wide range of languages and/or frameworks, while a specialized programmer becomes an expert in something very specific. There are pros and cons to both, and in this episode, we'll discuss both.
Transcript (Generated by OpenAI Whisper)
Hey everyone and welcome to this episode of Developer Tea. My name is Jonathan Cutrell and today we're going to continue our discussion about generalized programmers versus specialized programmers. Now in the last episode we kind of introduced the topic and my friend Justin basically sent me a text message and was saying you know I really would like for you to talk about this particular subject because he found himself seeing his role as a generalized programmer connected to the fact that he works at a smaller company. So I decided to cover that topic and it turned out that it was just such a rich topic to talk about and even in the two episodes that we've done here there's no way we could cover the whole thing. There's no way but hopefully you will have seen some value in the first episode and in this episode. If you didn't hear the first one I highly recommend that you go back to the first one and listen to it first because I recorded the whole thing all at once so I recorded the entire discussion non-stop. So I kind of jump in in the middle in the second part. So if you feel a little bit lost you may want to go back and listen even if you just listen to the last couple minutes of the previous episode that will help you get kind of in the flow. I hope you enjoy this discussion about generalized programmers versus specialized programmers. You may not command as high as salary as a specialized programmer would and there's a lot of reasons for this. The main reason is mostly because a specialized programmer quite often is more rare. Many who knows a ton about programming native applications for an old version of Black Berry they are very rare and reasonably so because there's not just there's just not a lot of need for that but when there is a need for somebody who knows everything about an old version of a Black Berry when that person exists they can say hey look I'm the only guy who can do this so pay me more right they can command a higher salary because of their rarity and a general programmer is a little bit less rare. Now that's not a true across the board situation if you have some specific things that make you stand out above the crowd then yeah absolutely you can command a higher salary than the average general programmer so that is a subjective conversation entirely but in general it is possible that a specialized programmer could command a much higher salary than a general programmer. So here's my suggestion if you are going to be a general programmer make sure you stack your knowledge together into logical groupings. What do I mean by stack? Well imagine that you've already learned HTML, CSS and jQuery like you know all the front-end languages to be able to create a static website. Well the next couple of logical steps that you might would take is to learn maybe backbone right backbone JavaScript library that allows you to do some light MVC on top of JavaScript on the front end that would be a great way to stack your knowledge and to cascade things so that your learning of backbone adds value to your existing knowledge. You might also want to learn something like PHP next right which would greater increase the value of your existing knowledge. If you know Java you might want to learn about virtual machines and things that will increase the value of your current knowledge and feed into each other right because as we said before you don't need to learn about underwater basket weaving. If you learn about something that has no applicability to your current knowledge set then it doesn't really help you as much as something else my would. So don't go off and learn unless you are learning for the sake of expanding your mind, expanding your brain power. You don't need to go off and learn Lisp if you are a front end web developer. Yes it may help you become a better JavaScript developer and it might help you become a better programmer and a better thinker. So for those reasons yes go and learn a little bit about Lisp but I wouldn't say for you to go and dive into Lisp as deeply as you can if you're trying to become the best front end web developer that you can. Why? Well because Lisp just simply is never going to be used on the front end. Again you will learn a lot of awesome things about functional programming that you can apply in JavaScript. Sure. But it's not your number one goal to go and learn everything you can about Lisp and add that to your Lisp of things that you can do. It is valuable to learn Lisp but it's not the thing that you it's not going to add as much value at least monetarily into an employer as as you going and learning another JavaScript framework that might be used more practically. Okay so let's move on. If you are a specialized programmer there are some pros for you. There are certain types of specializations that can thrive very well. Okay. That make your specialization a little bit more stable. So this is a pro anacon and this is the thing that's really kind of difficult about choosing to be one or the other of these. If you decide to be a specialized programmer you're kind of making a gamble on whatever it is that you're specializing in. So imagine that you decided that you wanted to dive into just a few years ago the palm trio and making applications for the palm trio and learning everything you could and becoming a palm trio application specialist. Well today that specialization might would be nearly useless. Right? Now however in a very similar situation you might would have decided to become a strict athlete and iOS developer maybe even strictly an iOS developer for the iPhone or just for the iPad. Now that's a similar decision but the outcome of that decision is way better now. So it's a gamble and it might be a gamble of you understanding what technologies are actually going to be around long enough for this to be a viable decision for me to choose to dive into iOS programming or dive into whatever. So that is a con and it's a pro because if you lose a gamble quite often you lose big. If you win a gamble you can win bigger potentially than a general programmer might be able to win. It's not a hard fast rule. Again a lot of this is subjective but that is the kind of thing that you should be thinking about is what is the future of this particular specialization look like for me and for the industry that I'm going into. Okay. And then so another example of a specialization might would be like D3 right D3.js. You can find yourself in a frustrating position if you're asked to solve a problem that requires multiple levels of knowledge that you are clueless about. So in the previous example that I was talking about the SysAdmin, if you're serving attacked and you have absolutely no SysAdmin experience then you might have to hire someone to do that for you which is totally fine. But it could be that that takes longer or you don't have the resources to hire that out or for whatever many reasons. You may not be in the best situation if you are suddenly facing a problem that you don't have any general knowledge or any starting point to know how to begin to solve that problem. So you will still need a base level knowledge even as a specialized programmer of the field that you're working in which makes the specialized programmer position very difficult because you have to choose how much of that generalize knowledge is enough and you have to know when to cut it off. So I hope that this discussion about general programming versus specialized programming what those two types of jobs entail, I hope it's been enlightening. I know that this is a super important discussion that could go on for hours and hours and it's very specific to each individual situation. I would love to hear about your situation, about wherever you're working, about your experience as a specialized programmer or as a general programmer. I'd love to hear about it. I'd also love to hear any thoughts you have about the show. You can get at me on Twitter at at Developer Teaor you can email me at developertea@gmail.com. You can also help support the show by giving just 99 cents or 399 a month. You can go to developertea.com front slash donate and there's a very simple form that you fill out. If you ever have any questions for me, please reach out. I'm always open and willing to answer your questions. A lot of the time I will even answer them on the air on this show. Thank you so much for listening and until next time, enjoy your tea.