No job is perfect, not even in software development. We asked 13 developers what they love and hate about coding for a living. Here's what they told us.
Most software developers will recognize the scenario that John Macpherson, lead developer at Scottish web design company Media Surgery, describes as one of the true highs of his job: that feeling βwhen you test the part you have been working on for days or hoursβand it works! You feel like you are an unstoppable superpower that can do anything. A real feeling of euphoria.β Theyβll also recognize the flipside: βWhen you have been working for days and hours and it doesnβt work. You feel worthless and question why you are even employed at all. You feel a fraud. Either euphoria or imposter syndrome. Itβs a strange old job, but enjoyableβfor the most part.β
I asked developers and the recruiters and managers who work with them what they love about their job, and what they donβt. Answers varied, but there were quite a few points in common. Sometimes, as with Macpherson, it turns out that the pleasures and pains of software development are opposite sides of the same coin.
Solving problems vs. reinventing the wheel
One of the most frequent themes was that developers love problem-solving. Computer programming is just a way to scratch that itch.
Percy Grunwald, full-stack software engineer and co-founder of UK-based webhost Hosting Data, summed it up: βYou wonβt enjoy developing software if you donβt love solving problems.β Jacob Mages-Haskins, a staff software engineer at Contrast Security, also likened software development to solving puzzles:Β βAs a developer, I love the challenge of implementing new features in code. It is like I have a new puzzle to solve every day.β
On the flipside, it can be disheartening to devote long hours to a problem only to discover a solution already exists. βOne thing I donβt love is the constant need to reinvent the wheel,β said Zeeshan Arif, Founder and CEO of software development company Whizpool:
This happens a lot in programming because there are so many ways to do things, and each way has its own tradeoffs. You have to choose which tradeoffs are worth it for your application. It can be frustrating when you realize that the thing you wanted to do was already done before by someone else, but itβs also exciting when you find out thereβs another way of doing things that seems like a better fit for what youβre trying to achieve.
Knowing that you might be able to surpass your fellow developers can be a spur to greatness, suggested Grunwald. βIn software development, there are many ways to accomplish the same task,β he said, βand itβs always a challenge to come up with the best one. Such challenges are very interesting. Being creative and testing different options is one of the best things about being a software engineer.β
Craft vs. process
Most developers also expressed a sense of satisfaction from the process of creating software. As Whizpoolβs Arif put it, βI love being able to create something that other people can use. Itβs like being a craftsman, but with code.β Alexey Sutyagin, who has 10 years of experience as a developer and engineering manager, used an even more powerful metaphor. βThe most fruitful part of being a software developer is a sense of magic when you are creating something new from pure thought,β he said. βI wanted to be a wizard in childhood, and developers look almost like magicians of the modern world.β
In the same way that a craftsman feels a special satisfaction looking at a table or cabinet they constructed, developers can derive happiness from seeing the end product of their labor. βBeing able to communicate with machines feels like a superpower,β said Daniel Jianu, senior front-end engineer coach at Toptal, a freelance developer network, βIβve used it many times to help patients in the healthcare system, to monitor radioactivity levels in nature, and to manage poker tournaments with friends.β
βFor me, the most satisfying feeling is seeing people using your software out in the world,β said Nate Berent-Spillson, vice president of engineering at software development consultancy Nexient. βI rarely ever mention it, but when I walk into a store thatβs running our software and see the person behind the counter tapping on a screen we made or see a delivery driver or a retail worker using a mobile app we wrote, itβs very satisfying.β
On the flipside, some developers mentioned aspects of their job that are disconnected from their sense of craft. Meetings were a frequent sore point. βBeing a software developer includes meetings that are often unproductive, repetitive, and irrelevant,β said Grunwald.
Rajeev Bera, founder of IT training site aCompiler and senior developer at an IT company, concurred: βmost of the time, these meetings do not add any value.β He continued, βoccasionally I have to create documentation, which is non-creative writing, and to be honest, Iβm not too fond of this.β
In general, more corporate environments involve more processβand more frustrations for developers. βWorking in a corporate company can sometimes affect the autonomy of their role,β said Kishan Patel, executive consultant at fintech recruitment firm EC1 Partners. βEndless red tape leaves the developer with less freedom to be expressive in their code as well as less flexibility.β Nexientβs Berent-Spillson noted he gets frustrated when βI see teams wrestling with policy more than code.β
RafaΕ Gatkowski, senior developer at Python development company STX Next, struck the balance: βAll processes impede development, but some level of process is required to create good software.β The key in his mind was not letting processes spin out of control and take up too much of developersβ time. βTurning a daily 15-minute team standup into an hour-long (or longer) cross-functional status meeting is the most common exampleβ of a flawed process, he said.
The joy of teamwork vs. the grind of collaboration
Much of the βprocessβ side of work arises in the context of teamwork and collaboration. For many of the developers that I spoke to, the camaraderie of working with others was one of the best things about their job. For instance, Caleb Chandzamarda Junior, a Python developer and cyber security engineer, said that some of his favorite parts of his job were βthinking and talking about design and weighing pros/cons about each to find the right answer, and working on cool products that I would never be able to do on my own.β
βAt the corporate level specifically, the ability to work cross-functionally with many different types of professionals can be particularly rewarding and interesting for both day-to-day and long-term career development,β said Joe Guarascio, director of talent coaching and talent operations at Toptal. βOur talent love opportunities to work alongside, for example, project managers, product managers, and business operations.β
That said, the day-to-day reality of collaboration can eat up a lot of energy that most developers would rather spend coding. βAs a corporate developer, I hate how the costs of communication and coordination grow so quickly when even just a few teams are collaborating together,β said Contrast Securityβs Mages-Haskins. βAs the late Fred Brooks pointed out in The Mythical Man Month, as the number of people involved in a project increases, the number of communication pathways between those people explodesβand that has certainly been my experience in any non-trivial project.β Still, he added, βeveryone is needed though to make sure the features are useful and delivering value to our customers.β
In a worst-case scenario, what should be collaboration instead turns into a more adversarial relationship between coworkers. βIn big corporations, it is a commonplace to work hard for the whole year, but in the end, your project is closed as unimportant, or you donβt receive a promotion because your impact is too small,β said Sutyagin. βSo you should select projects carefully. If you have a competitor in your team, you should convince him to choose something else. We could say that this is the way the world is. But this isnβt why we become software engineers.β
Work-life balance vs. imbalance
Say what you will about software development, but itβs not like working on an assembly line. βSoftware development lends itself well to freelancing, as well as remote work,β said Toptalβs Guarascio. βThe freedom to work on a variety of projects, from any location in the world, is very alluring to many of our talent.β
And in the past few years, that flexibility has only expanded. βWe are given enough freedom to allocate our time during the day however we choose,β said Tina Liu, senior software engineer at healthcare analytics company LeanTaaS:
The Covid-19 pandemic, which changed how our team and company cooperates and communicates, allowed us to embrace remote work. I recently had a baby in May 2022, and I feel lucky to be able to work from home. I can check and care for the baby during breaks or between meetings. I have the flexibility to make up time and finish my development tasks during the night when the baby sleeps. The freedom I have makes my mom jealous as she didnβt have that kind of flexibility in her career and couldnβt see me during the day when she is at work. She told me βThis is truly living a life.β
But while not having a strict 9-to-5 schedule can be nice, it can also be burden. βSoftware developers have a lot of workload. They juggle an overwhelming amount of projects and continuously multitask, jumping from one task to another,β said Grunwald. βThey are required to work consistent overtime and non-traditional business hours such as nights, weekends, and holidays.β Burak Γzdemir, founder of Character Calculator, added that, in many cases, βwe find ourselves working long hours in front of a computer, with little human interaction. And we may feel like our work is never truly finished, as there is always something new to learn or something that can be improved.β
And while software development isnβt the most physically demanding job, it does have its issues, Γzdemir noted. βErgonomics can also be a challenge, as we often spend our days hunched over a keyboard,β he said.
βIf there is anything else that I hate, it would be that I have to stare at the computer all day long and thatβs hard for the eyes, and the muscles of the neck and upper back, which is really not avoidable,β said Liu. βSo I often give myself reminders to take a break and do some exercises to ease my eyes and release muscle tension.β
The tech dream job vs. the actual job
In the end, much of the experience youβll have as a developer will be determined not by generalities but by the specifics of where you landβand that can have a huge impact on your happiness and well-being. βNot all organizations or departments are created equal,β said Jared Ledbetter, CEO of web design and SEO firm Carbon Digital:
If youβre in a department that is all developers, then itβs got a higher probability of being a decent place. Itβs the non-developers in management positions that I take issue with. The ones who want everything done now, but donβt want to define or establish a process. If I recommend that we utilize a project management system like Jira or Azure DevOps, these managers who donβt understand reject it and point to MS Word/Excel/PowerPoint. Or, if I recommend that we need to utilize a process like agile/scrum, itβs accepted as a good idea, but youβre still forced to work in waterfall mode.
Chandzamarda expressed similar frustrations, noting that itβs stressful to have coworkers or managers βwho are not forward thinkingβitβs all about now and not how do we envision this product in the future. We should be thinking about what steps can we take now to set us up for that future path.β
Still, software development is a high-demand skill, and, as STX Nextβs Gatkowski put it, βThe unquestionable advantage is the fact that it is very easy to find a job.β Jobs in tech also pay pretty well, as EC1βs Patel noted, βthe financial rewards and career progression of working in software development are second to none.β With a little time and effort, most developers can find a job that lets them do more of what they love and less of what they donβt.


