Do you love programming for its own sake, or do you do for the outcomes it allows? Depending on which describes you best you will face different problems in your career as a software developer.
Enthusiasts code out of love. If you’re an enthusiast you’d write software just for fun, but one day you discovered your hobby could also be your career, and now you get paid to do what you love.
Pragmatists may enjoy coding, but they do it for the outcomes. If you’re a pragmatist, you write software because it’s a good career, or for what it enables you to do and build.
There’s nothing inherently good or bad about either, and obviously this is just a simplification. But understanding your own starting point can help you understand and avoid some of the problems you might encounter in your career.
In this post I will cover:
- Why many companies prefer to hire enthusiasts.
- The career problems facing enthusiasts, and how they can solve them.
- The career problems facing pragmatists, and how they can solve them.
Before we move on to specific career problems you might face, it’s worth looking at the bigger picture: the hiring and work environment.
Many companies prefer to hire enthusiast programmers: from the way they screen candidates to the way they advertise jobs, they try to hire people who care about the technology for its own sake. From an employer’s point of view, enthusiasts have a number of advantages:
- In a rapidly changing environment, they’re more likely to keep up with the latest technologies. Even better, they’re more likely to do so in their free time, which means the company can spend less on training.
- Since they’d write software for free, it’s easier to pay enthusiasts less money.
- It’s also easier to get enthusiasts to work long hours.
- Finally, since enthusiasts care more about the technical challenge than the goals of the product, they’re less likely to choose their work based on ethical or moral judgments.
But while many companies prefer enthusiasts, this isn’t always in the best interest of either side, as we’ll see next.
So let’s say you’re an enthusiast. Here are some of the career problems you might face; not everyone will have all these problems, but it’s worth paying attention to see if you’re suffering from one or more of them.
As I alluded to above, companies like enthusiasts because they’re worse negotiators.
If you love what you do you’ll accept less money, you’ll work long hours, and you’ll ask less questions. This can cause you problems in the long run:
- Long hours can lead to burnout, in which case you might not enjoy coding at all, even in your spare time.
- Less money reduces your options outside of work.
- Finally, you really shouldn’t do work that’s immoral or unethical: there are plenty of fun problems that won’t make you feel guilty.
So even if you code for fun, you should still learn how to negotiate, if only out of self-defense.
Matt Dupree has an excellent writeup about why being an enthusiast can make you a worse worker; I don’t want to repeat his well-stated points here.Here are some additional ways in which enthusiasm can make you worse at your job:
- Shiny Object Syndrome: As an enthusiast it’s easy to choose a trendy technology or technique for your work because you want to play with it, not because it’s actually necessary in your situation. The most egregious example I’ve seen in recent years is microservices, where an organizational pattern designed for products with hundreds of programmers is being applied by teams with just a handful of developers.
- Writing code instead of solving problems: If you enjoy writing code for its own sake, it’s tempting to write more code just because it’s fun. Productivity as a programmer, however, comes from solving problems with as little work as needed.
Finally, as an enthusiast you might face a constant sense of frustration.As an enthusiast, you want to write software for fun: solve interesting problems, write quality code, fine-tune your work until it’s beautiful.
But a work environment is all about outcomes, not about craft. And that means a constant pressure to compromise your artistic standards, a constant need to work on things that aren’t fun, and a constant need to finish things on time, rather than when you’re ready.
So unless you want to become a pragmatist, you might want to get back more time for yourself, time where you can write code however you like.You could, for example, negotiate a 3-day weekend.
Pragmatists face the opposite set of problems; again, not all pragmatists will have all of these problems, but you should keep your eye out to see if they’re affecting you.
Since many companies actively seek out enthusiasts, finding a job as a pragmatist can be somewhat harder. Here are some things you can do to work around this:
- Actively seek out companies that talk about work/life balance.
- When interviewing, amplify your enthusiasm for technology beyond what it actually is. After all, you will learn what you need to to get the results you want, right?
- Demonstrate the ways in which pragmatism actually makes you a more valuable employee.
Since you don’t care about technology for technology’s sake, it can be easy to let your skills get out of date, especially if you work for a company that doesn’t invest in training. To avoid this:
- Actively seek out tasks, projects, or new jobs that will force you to learn new technologies on the job, in depth.
- Spend an hour every week gathering a broad but superficial knowledge of new technologies.
Finally, you will often encounter pressure both from management and—indirectly—from enthusiast peers to work long hours. Just remember that working long hours is bad for you and your boss (even if they don’t realize it).
So are you an enthusiast or a pragmatist?
These are not exclusive categories, nor will they stay frozen with time—these days I’m more of a pragmatist, but I used to be more of an enthusiast—but there is a difference in attitudes. And that difference will lead to different choices, and different problems.
Once you know who you are, you can figure out what you want—and avoid the inevitable obstacles along the way.