DEV Community

Cover image for Building for Users: The Real Purpose of Software Development
Jake Lundberg
Jake Lundberg Subscriber

Posted on

49 6 3 7 2

Building for Users: The Real Purpose of Software Development

Grab your favorite emotional support squishmallow...this series might sting a bit!

In this collection of posts, we're going to talk about some of the hard truths in the world of software development. Some might make sense. Some might make you question your life choices. Either way, they're lessons I definitely wish I had learned earlier in my career. So let's not waste anymore time and dive in...


So you know that beautiful, elegant code you've been obsessing over for hours, days, or weeks? The one with perfect indentation, clever variable names, and a comment for every sneeze? Yeah, turns out your users don't care about it.

While you're busy debating tabs vs. spaces or whether Python is superior to JavaScript, or which AI tool is the best, your users are out there in the real world, wondering why your app crashes every time they try to upload a cat photo. They don't care about your code – they care about results.

Think about it. When was the last time you heard a user say, "Wow, what language did they use to build this?!" or "I love that you used Next.js to build that feature!" Better yet, when was the last time you yourself walked into a grocery store and said something like, "Wow, I like how they organized these shelves. I wonder what methodology they use?" Never, that's when. Users are like impatient toddlers at a birthday party – they want their cake, and they want it now. They don't care if you baked it from scratch or bought it from the store, as long as it tastes good and doesn't give them food poisoning.

So, what do users actually care about? Brace yourselves, because it's not about you or your precious code:

  1. They want features that solve their problems.
  2. They want their specific use cases accounted for.
  3. They want it all to work flawlessly.

...and if you could get it to them yesterday, that would be great.

Man standing over a cubicle drinking coffee from a mug.

It's like taking your car to a mechanic. Do you care what wrench they used or how they diagnosed the problem? My guess is no. You just want your car to work so you can get on with your life.

Now, before you start crying into your mechanical keyboard, this doesn't mean your code doesn't matter. It absolutely does – but only insofar as it delivers what the user needs. Your users don't care if you used React, Vue, or AI to build your app. They care that it solves their problem and doesn't break when they need it most.

So, what's the takeaway here? Focus on the real impact, delivering solutions. Your users don't care about your tech debt – that's your problem to manage. They only care when it starts delaying the features they need. And when something breaks? They don't want to hear about your elegant error handling – they just want you to fix it, pronto.

Here's a radical idea: instead of endlessly debating the merits of different programming languages or frameworks, focus on actually solving problems. Sometimes that might mean building a fancy new feature with all the bells and whistles. Other times, it might be as simple as a bash script that gets the job done.

Remember, at the end of the day, your job is to make the car work. So stop polishing the engine and start driving. Your users are waiting, and they're not getting any more patient.

Top comments (21)

Collapse
 
brense profile image
Rense Bakker

Users are a lot less shallow than marketeers want them to be. For example, most users don't want their website to be built by child labor.

Also I would absolutely want my mechanic to polish the engine, if it means I don't have to go back to the mechanic every 3 months for expensive repairs due to wear and tear.

Clean code is important because it does help to deliver features faster in the long run, because the car doesn't get bogged down by overdue maintenance. It also helps to prevent the car from breaking down unexpectedly by making it clearer for the mechanic to see what is what, so they don't accidentally hook up the exhaust to the car vents during regular maintenance.

The only question here is: do you focus on short, or long term profit.

Collapse
 
katsu_ profile image
Katsu

both arguments are good but I think author was reminding us to focus on the customer satisfaction. most of time we give to much attension to things that user dont even care!

Collapse
 
wraith profile image
Jake Lundberg

Thank you for your reply @brense ! 😊

I 💯 agree with your statement about user's not being as shallow as marketeers want them to be. And I certainly hope that most users wouldn't want their website to be built by child labor! With that said, however, in my experience, most users aren't seeking out that kind of information for every piece of software they use.

If you do, I would love to chat and learn how you keep up with all that!

Rather, in my experience, there are simply too many systems the average user uses in just 1 day for them to know the inner workings of each one. Instead, they use the tool that does the thing they need to do. Maybe if they hear some terrible piece of news about a company, they might switch...but again, my experience has shown that even then, many still wont.

I would also like to stress that my article was not arguing that clean code is not important. Of course it is! I personally HATE working in "dirty" code bases! The point of the article is to stress the importance of realizing that clean code is not important to users (unless those users are software developers of course 😝). If a system works for them, and it accomplishes the thing they need it to, they don't care if the code behind the scenes is a dream or a nightmare. If their experience is bad, they don't care if it's because of the code, the hosting provider, or if it's caused by gremlins! they just want it to get fixed and work so they can get their stuff done.

Collapse
 
brense profile image
Rense Bakker • Edited

I guess that's true, most users won't switch to a different app. But it would certainly hurt the apps reputation.

I agree it's important to deliver value to the user and to do that, it's important to look at your app from the user's point of view. But, I'm always too scared these days that some person reads this and makes it their life motto to start pumping out user features without any regard for common sense or good coding practices.

Ps. No I don't do background checks on all the apps that I use hehehe 😜

Collapse
 
canro91 profile image
Cesar Aguirre

Totally agree! We're still arguing about variable names during code reviews.

The other day, the VP of a company I was contracting with told me something like that. "Clean Code is for us when we have to fix problems and deal with our own mess...users don't care about that" Lesson learned since then.

Collapse
 
fredrick_oladipupo profile image
Fredrick Oladipupo

Awesome article.
One thing to note, there are more than one way for an action to have effect on a system.
One is immediate and acute and other is chronic and gradual.

Though, users don't feel the immediate impact of a bad written code base;
In time, the quality of your code will eventually impact the customers.
After months of poor codebase, you will find it hard to release feature fast, the DX on your applications will be so bad even YOU will not want to work on it.

So this things are not mutually exclusive. They are things that have to be cultivated together.
Especially if you are thinking long time.

Collapse
 
fridaycandours profile image
Friday candour

This point is why I came to the comments and you nailed it 😁.

Collapse
 
wraith profile image
Jake Lundberg

Thank you for your reply @fredrick_oladipupo 😊

I absolutely agree there are many things that can have an effect on a system. Code quality is definitely one of them. Poorly written and managed code can 💯 have effect on the user's experience.

However, I would like to stress the point of the article...user's don't care if their poor experience is caused by the code quality, the infrastructure, or if it's all the CEO's fault. The user cares about the experience they have engaging with your system. There's a LOT of terribly written code out there behind very large systems and many of their millions of users are happy. There are also a lot of systems out there that have beautifully written code bases, yet their user's aren't happy (if they have user's at all). This is because the user's needs are either being met, or they aren't (or varying degrees between).

I agree that code quality is absolutely important...of course it is! But average user's don't care if the code is amazing or absolute crap...so long as it serves their needs/wants.

Collapse
 
fredrick_oladipupo profile image
Fredrick Oladipupo

💯 agree with you on that.

Collapse
 
sello_alfred_6ee8790c02f6 profile image
Sello Alfred

Well written article with enlightening perspective . As painful as it is for Software developers who have to write well architectured code and high test code coverage. At the end of the day normal users care about usability and a working end to end functionally.

Using my banking app, all I care about is. I should be able to transact. Whether is running on cloud infrastructure or on someone local machine, Lol. It's immaterial. The software needs to meet what users want.

Collapse
 
nadeem_zia_257af7e986ffc6 profile image
nadeem zia

Well written and well organized

Collapse
 
keyru_nasirusman profile image
keyr_syntax

This is a very good article. I can't wait to read your next blog.

Collapse
 
sunilfgh profile image
Sunil kumar Dubey

Good point

Collapse
 
jyotiraditya_raghuvanshi_ profile image
jyotiraditya raghuvanshi

So exactly the point is that we developers should focus only on final service(outcomes) . Then what about learning, if we only focus on final result then we won't be getting any experience or learning from the services we make but on the other hand this is the harsh reality of the world. So what should we do so that we can make users happy and at the same time we can also fulfill our needs as well

Collapse
 
wraith profile image
Jake Lundberg

Great questions @jyotiraditya_raghuvanshi_ 😁

To address your first statement, yes, we should always be focussing on the final outcomes...but not in the way you may think.

Let's take life as an example. The most successful people spend the majority of their time and effort on achieving some goal(s). They focus on the final outcome in almost every action they take. If something doesn't serve to move them toward that goal (outcome), it often gets removed or deprioritized. Just like these successful people, we too should adopt this same behavior. If our goal is to solve a problem or need for our users, then every single thing we build for that project should move us toward that outcome.

With that idea in mind, let's consider your question, "what about learning?".

I'm assuming here that when you say "learning" you mean personal learning, something like learning a new language or how to use some unfamiliar technology. In that case, if the goal of the project is to learn, then that should be the thing you're focussing on. Every action you take on that project should move you toward that final outcome of learning that thing.

With that said, in my experience projects like these don't have many (if any) users...but in the rare case yours does, unless they are there solely to help you learn, you have to shift your focus. Once you have users, your focus can no longer be on your own personal development. You've accepted the responsibility of supporting a user's needs, and now every action you take on that project should support that new outcome.

Collapse
 
talha_bde0ee4a418bc7c007d profile image
Talha

What big problem in tech have you solved???????????

Collapse
 
wraith profile image
Jake Lundberg

great question @talha_bde0ee4a418bc7c007d 😄

my experience as a software engineer and now engineering manager has mostly been in the client management and sustainability spaces. building applications that allow businesses to perform better for their customers, socially, and environmentally. In addition to the primary applications and infrastructures I helped build for those company's I've built many automation tools to make my engineering teams faster and more efficient. These ranged from simple bash scripts to automate a single task, to complete command line interfaces to automate full workflows.

What about you? I'd love to hear what big problems you've solved in tech!

Collapse
 
marvellousidoko profile image
marvellous-idoko

You sound unhappy
Hope you get better

Collapse
 
wraith profile image
Jake Lundberg

I think you may have misread the tone of the message friend

Collapse
 
aman_kachhal_7aacf8a601e2 profile image
Aman Kachhal

Total waste of time to read this article. That's not how software which last in market works.
Writing redundant code for the sake that it works?

Collapse
 
wraith profile image
Jake Lundberg

I appreciate the feedback @aman_kachhal_7aacf8a601e2 😃

While I haven't personally experienced this in my career, I'd love to hear about the experiences you've had where user's cared about the code you've written. What was the nature of the project? Who were your users? Did you share your code with them?