26: To Generalize, or to Specialize, that is the Question... Part One
Published 3/11/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 Developer Tea. My name is Jonathan Cottrell and today I'm going to be talking to you about the differences and the pros and cons of being a specialized developer versus being a generalized developer. A friend of mine here in Chattanooga who is also a developer asked me this question. He and I are friends. His name is Justin and Justin considers himself a generalized programmer. He says that basically he's kind of had to be a generalized programmer in the jobs that he's been because he's been at smaller organizations and he's found that these smaller organizations need a wider set of skills and they don't have the resources to hire somebody to do each and every skill specifically full time. And I found myself in similar situations and even at Whiteboard I am still considered probably a generalized programmer. So I totally understand the situation that Justin is in. If you work at a larger company it's likely that you've experienced the flip side of this which is basically that you are kind of more specialized in a particular area whether that's you are only writing and working on a particular project or you are only writing on a particular one language or maybe you're only using one subset of tools. And this is a huge subject. This is a really important one especially for people who are beginners or people who are looking for jobs in development. Being a general programmer versus being a specialized programmer changes the way that you work immensely and it will change the place that you work immensely most likely. And so we're going to talk a little bit about the pros and cons of each of these. But first let me say that being a programmer requires kind of a base set of knowledge. Right. So whether you are a general programmer or a specialized programmer it is absolutely essential that you know how to strike a balance in your code of quality maintainability and performance. And those are the three things that you have to focus on when you're writing code regardless of if you're writing a program or you're writing a program that's not a program. And so I'm going to talk a little bit about that. If you are a specialized programmer or a general programmer. Now it might be that your job is to do prototype code where you are less you're less focused on performance or maintainability and instead you're fully focused on on some sense of quality or a subjective sense of quality. And that's fine. There is nothing wrong with that being your specialty. But to be a general programmer is to be a specialized programmer. To be a good programmer you must have the knowledge of these things. You must know that when you are doing a prototype that that cannot go to production for instance simply because it's likely not a maintainable or performance solution that would need to be created in order to go to production with. So that's one of the cons I would say actually of being a specialized programmer is that no matter how specialized you are no matter how deep your knowledge goes in one particular thing you will still need knowledge of how to write clean code. You will still need knowledge of what it means for a computer to run quickly and the fundamental ways to write code that is faster versus slower. Now it's less important like I said for some people than others but having that base level knowledge is going to be a lot more important. So I'm going to talk a little bit about that in a little bit. In my opinion is essential to the practice of programming. So let's back up. I want to go through these kind of in blocks because that's how I have it written out. I think you will be able to follow this a little bit easier if we do it that way. So we're going to start with the pros of the general programmer. The first and probably the most obvious is that if you're a general programmer and you're looking for a job you are more adaptable to the practice of programming. to a market, right? So more people need at least some of the skills that you already have if you are a general programmer. If you can, for instance, if you know how to create a web application from top to bottom, we talked about this on a previous episode, the concept of the unicorn, it is still incredibly important and valuable for those kinds of people to exist where you have the full stack in your skill set. And that is a general programmer, that would be a general programmer, is somebody who can develop for the full stack. So you're more adaptable to the market, which means that you're more likely to get hired at more places. Now, if those places are looking for deep skills in a particular thing that you only have shallow skills in, then you're less likely to get hired. But the truth still remains that you still have some skills in that particular thing. And many, many, and many employers are willing to bring somebody on and allow them to learn what they need to learn over the course of like an evaluation period or a training period to get deeper skills in particular sets of technology. So that is a huge pro for general programmers. So the other thing that I would say to general programmers is you already have your foot in the door with a lot of different technologies. And that helps you in the hiring process, and probably also in the getting the raise process. So if you have a larger set of knowledge, then it's very likely that you will be able to fill the company's needs in a particular area more easily. So you are also able, and that kind of speaks to the question of, you're also still able to grow in certain areas and become a specialist or a pseudo-specialist where you have more skills in a few things, but you still have the general skills of many things. And this is how I would see myself, right? So I have most of my skill set is in web development. Most of my skills are in Ruby. As you guys already know, I'm a Ruby programmer. but I also work in PHP and CSS, JavaScript, full stack, right? But I also have had to deal with some systems levels things, like systems level things like, you know, sysadmin stuff, right? Very simple, usually, but the fact that I have a little bit of experience in that, whenever our server, for instance, gets hacked, which it did somewhat recently, I plan on doing a show about that, but whenever our server gets hacked at Whiteboard, I have the ability to go in, figure out what the hacker has done, what the vulnerability was on the server, and fix it and avoid it in the future. Now, if I didn't have that ability, Whiteboard would have to hire somebody or rely on another person inside of the team to be able to fulfill that security sysadmin position, but we don't have the money to hire a full-time, full-time sysadmin. I guess the better way to put that is, we don't really need a full-time sysadmin. We aren't getting hacked constantly, and we don't have sites that we've built that are getting the kind of attacks that would need a full-time sysadmin. So many of our sites are relatively simple in terms of configuration, and we can totally handle that, and that's a general programmer's job, is to be able to handle the things that are going on, and to be able to handle the things that you don't necessarily have to have a deep amount of knowledge in, but you do need to have some level of understanding in. So for this reason, it is possible that a general programmer could command a higher salary, or as high of a salary, as a specialized programmer. And this one's kind of up in the air. It depends, right? It depends on the company. It depends on the needs. And it depends on whether or not the fact that you know a little bit of sysadmin is actually even valuable to the company. It could be like whiteboard that we absolutely need that extra knowledge, or it could be that that extra knowledge is just kind of there, right? It's not gonna be utilized. It's just kind of in your mind, which is as valuable as underwater basket weave. It's useless in some ways. So that's a con, right? The tool set is huge for general programmers, and it's growing, and it's constantly changing. What's crazy is that for general programmers, our tool set is huge. It's constantly changing. It's constantly growing. Things that we have already learned are changing underneath our feet. So for instance, look at GitHub. GitHub is running. It's running an older version of Rails than the current version. And you would think, well, that seems crazy. GitHub is like the place where all the code is. Wouldn't they have to run a new version of Rails? And the answer is no. The answer is no, because GitHub doesn't need to run the newest version of things in order to have a working system. But that's aside from the point. The cons of being a general programmer is to keep up with things. It seems like the tool set is somewhat overwhelming. So managing what things we do need to be keeping up with and what things we don't need to be keeping up with can be a little bit of a struggle, and it's kind of difficult to do. So that's about all the time we have for the first part of this conversation. I know that I normally don't split up the episodes that I do that are not interviews into two parts, but I felt like this particular conversation is a really important one, and I felt like it deserved a second episode. And I don't want to take up too much of your time. As you know, that that's the point of this show, is to keep it short and keep it sweet. I hope you have enjoyed this conversation, and I hope that you will enjoy the next part of it as well. If you have questions, if you want to start a conversation, if you want for me to cover a topic on this show, please connect with me on Twitter at You can also email me at Or you can contact me via the form on You click the contact link in the header of the website there. If you would like to support the show, please head over to And that's a way that you can support the show monthly. Really small donation, like less than a cup of tea, but it makes a huge difference. And I will personally thank every single one of you. I'm a very thankful person who does that. You are just the best, the best audience. And I'm so thankful that you listen to this show. And until next time, enjoy your tea.