« All Episodes

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 Cottrell 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 just no way but hopefully you will have seen some value in the first episode and I'm going to continue to do that. 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 of a 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. Somebody who knows a ton about programming native applications for an old version of BlackBerry. They are very rare. And reasonably so. Because 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 BlackBerry when that person exists they can say, hey look I'm the only guy who can do this so pay me more. They can command a higher salary because of their rarity. And a general programmer is limited. So that's 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 take is to learn maybe backbone. Right? Backbone. A 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. 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 might 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 list of things that you can do. It is valuable to learn Lisp. But it's not the thing that you should. It's not going to. Add as much value at least monetarily into an employer. 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. Your. Specialization a little bit more stable. So this is a pro and a con. 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. Right. 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. Strictly an 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. Right. So it's a gamble. And it might be a gamble of you understanding. Okay. What. 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. That is. It's 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 would be able to win. It's not a hard fast rule. Again. A lot of this is subjective. But that is. 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. So. Another example. Of. A specialization. Might would be like. D3. Right. D3. JS. You can. 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. Right. So. In the previous example. I was talking about the sysadmin. If your survey gets hacked. And you have absolutely no sysadmin. Experience. Then. You might have to hire someone to do that for you. Which is totally fine. Right. 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. Generalized 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. And 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 T. Or you can email me. At developer T. At gmail.com. You can also help support the show. By giving just 99 cents. Or $3.99 a month. You can go to developer T. Dot 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. Thank you.