top | item 15988405

Ask HN: What is the most painful problem you have day-to-day as a software dev?

41 points| putnam | 8 years ago | reply

99 comments

order
[+] ThePadawan|8 years ago|reply
The feeling that writing software doesn't matter in the slightest in the grand picture of things.

As a full-stack web engineer, I don't help cure cancer, fix world hunger, or even make people using the software happier. I help business take the customer's money to make managers on both sides of that deal happy.

[+] ashark|8 years ago|reply
I'd say 95% of the code I've ever written hasn't done enough good for anyone to justify the money, time, and effort that went into its creation. Probably 25% was obviously doomed before I started writing it. Very little of that wasted work was of a sort that improved my skills in some significant way or had any redeeming personal value.

Talk about demoralizing. It'd be nice to have a role that felt a bit farther abstracted from the level of raw, random input to cold economic processes that most development is, so I could at least fool myself into thinking I was a bit less... used.

[+] giveahoot|8 years ago|reply
Wouldn't software help enable accomplishing all of the work you're comparing yourself against? I have the same feeling sometimes but software absolutely has the power to positively impact people's lives, the environment, basically anything. If you really feel strongly about this - I'd suggest looking for a job that enables you to work on something along these lines. Doesn't even have to be a non-profit but there are for-profit companies with great missions
[+] BjoernKW|8 years ago|reply
That's a gloomy stance to take and one that in all likelihood is thoroughly misguided.

While it's true that most software doesn't directly help cure cancer, fix world hunger or any of the other big, seemingly insurmountable problems, software massively helps with those quests:

Where would the Bill & Melinda Gates Foundation be without software (and I don't mean the fortune Bill earned with selling software)?

New cancer treatments are often found through software-assisted processes.

Organisations like GiveWell use software to objectively analyse the positive effect charities have.

Even if you don't take these pretty direct positive impacts of software for the greater good into account, in order to be able to do their job organisations that try to make the world a better place need boring administrative systems like CRMs, ERPs and CMS, too (not to even mention operating systems like Linux and web server software like Apache). If it weren't for software all of this would have to be done manually, which would make these organisations much less effective.

On top of that there's the unprecedented opportunity for worldwide communication and coordination made possible by the Internet.

[+] SeanBoocock|8 years ago|reply
There are lots of ways that writing software can help people's lives, even in small or seemingly frivolous ways. I write games for a living and take satisfaction out of the idea that I'm bringing joy to a lot of people's lives. My work doesn't solve a lot of the fundamental problems or address any of Maslow's lower hierarchy of needs. But if I can create a space where people can experience the feeling of discovery or mastering a new skill, can get their mind off the rest of their lives and escape into fantasy ones, I'll consider that a job well done and the world a marginally better place for it.
[+] edraferi|8 years ago|reply
Software is used everywhere. If you care about the broader impact of your work, take your skills to an organization who’s mission you respect.
[+] buildawesome|8 years ago|reply
I disagree here. I was a pre-med, who, after a wild (and aimless) few years after college got into software because it had such an impact on the collective whole. You may want to consider joining a start-up or finding a project that you can be passionate about. But it does matter - writing good code anyway :)
[+] mceachen|8 years ago|reply
And even if it does (potentially) matter, the lifespan of code is horrifyingly short. Companies shut down. Management regimes want to be "impactful" and rewrite all the things.

It can be to pretty demoralizing when you realize how ephemeral your work is.

(That being said, I still love coding!)

[+] jhowell|8 years ago|reply
What you describe does not sound like engineering.
[+] 5h|8 years ago|reply
Suffering through technical interviews where the potential employers are inexperienced at delivering said interviews.

Simultaneously nitpicking & grandstanding without once discussing the realities of software lifecycle, managing complexity, change of business focus, development pragmatism etc is a red flag.

In a recent interview - with the entire development team for a 10 customer product with great potential - spending a couple of hours picking over a mutli-tier caching architecture to serve a million views of a million variants of a million products, when your login form is broken, doesn't impress me much as a candidate.

[+] SeanBoocock|8 years ago|reply
Compilation times and flakiness of bespoke build systems. Most of my time is C++ (game dev) and while we've reduced our compilation/link times with the standard tricks ("unity" files and distributed compilation) I'd still love for it to be as fast as something like C# or C for that matter.

It would be cool if there was some way to build a "progressive" C++ compiler where initially the generated code was poorer quality (except perhaps along a hot path ala https://en.wikipedia.org/wiki/Profile-guided_optimization) and gradually refined/hot patched into a running process.

[+] tvanantwerp|8 years ago|reply
I am the sole technical person where I work, responsible for basically anything that involves electricity. Nobody knows or cares what I do as long as nothing appears broken.
[+] nulagrithom|8 years ago|reply
A truly astounding amount of technical debt.

Sometimes the sheer weight of it makes me think I'll never finish this project, ever, and I should just give up right now and go find a new job.

What's more is we're about to (unknowingly) add more by rewriting some things in an obscure language that doesn't have any way to automate testing & deployments, use version control, etc...

[+] h_r|8 years ago|reply
This sounds like using the tibco tools!
[+] mbrameld|8 years ago|reply
SI joint. The clock's going to tick over to 40 next year and most of the last 20 was spent in a chair in front of a computer. Now I spend around an hour every day stretching and doing exercises to try to reverse some of the damage.
[+] codewritinfool|8 years ago|reply
Right on. I had major SI problems until I got injections. The next day the pain was completely gone. Once I had no pain I learned exercises and have been pain-free for two years now.
[+] dmalik|8 years ago|reply
Where I work it's lack of process. I get work thrown at me randomly from all directions.

Also with deadlines that I have no say in, usually created by non technical people.

[+] _asummers|8 years ago|reply
Bug reports in Slack can die in a fire. Make me a ticket, I won't remember that there was a bug reported at 2:32 on Thursday if I'm not taking care of it right then, and there will be reams of text to scroll back through to find it.
[+] virtualized|8 years ago|reply
It's a cycle:

Boss: "Please do this one small thing for me immediately!"

Boss' reward center is stimulated and they forget about the one small thing shortly after.

The other ten one small things get pushed back.

Boss remembers about a few one small things from weeks or months ago.

"Why does everything take so long? Your productivity is too low."

Boss comes up with another bad idea to feed their one small thing addiction. Back to the beginning.

[+] psyc|8 years ago|reply
1. Every piece of software and the OS wanting to update/reinstall itself every other morning. So much for app start times!

2. Dependencies that don’t install their dependencies and require hours of configuration.

[+] 11thEarlOfMar|8 years ago|reply
Dealing with management who would rather hope than plan.
[+] virtualized|8 years ago|reply
Developer: "This is a difficult problem that requires careful planning and cooperation between people in different companies."

Product manager: "Yeah whatever it will be fine"

(no planning nor help in cooperation between companies)

six months later

Product manager: "Why didn't you tell me earlier that there was a difficult problem?"

[+] reaperducer|8 years ago|reply
Deadlines. I'm terrible at estimating how long something will take to complete; especially if other people are involved.
[+] ashark|8 years ago|reply
Everyone is. No-one wants to pay for what it takes to get a decent estimate, which incidentally also requires a near-perfect idea of what you're gonna do ahead of time which is also usually lacking and which no-one's interested in figuring out and committing to. Look at the space shuttle software development process and how much time they spent nailing down requirements and such so the rest of the process would be highly predictable—IIRC it was like 1/3 of the duration of a project. Ain't no-one in business gonna commit to that.

Most software projects are half-cocked and operating on a shoestring. Anything other than "start on this, we'll tell you to stop if we don't like your progress, use something like story points so if we're still doing this in 6 months we'll have an OK-ish way to predict the way the project will go for the next month or two" is delusional. Can it be done? Yes. Here's what it costs. Actual development can start in 3-6 months. You gonna pay for it? Didn't think so. Want us to just start now and see how far we can get in a month or two? Cool.

[+] jpmoyn|8 years ago|reply
Managing daily burn-outs where my mind prevents me from looking at code objectively and patiently. I recently have tried putting on meditative music and trying to clear my head so i can be productive again. It is really hard for me to code for 8+ hours a day.
[+] montecarl|8 years ago|reply
I do not aim to code for 8 hours per day in a professional context. I know very few people who can really honestly do 8 hours a day of "thinking" work on a regular basis. It may be possible in some cases: perhaps on a new project where there is a lot of boilerplate code to write and you are free to make design choices as you see fit. However, most of the time when writing code in a existing large complex code base I find that 5-6 hours a day is a very productive day for me.

I work from home I work in bursts of 2 hours. When I get stuck/bored (either because I don't have any more focus left or I'm stuck on a tricky problem) I will read, shower, go for a walk, or take a nap. When I come back to the problem, I generally find I am able to resume work.

I find that I get as much done if not more than my coworkers who must be in the office 8 hours a day. I also graduated from my PhD using similar tactics, while many of my classmates seem to LIVE at school.

My point is just that the 8+ hour work day may be possible for some types of tasks, but for real "thinking" work I don't think it is a good goal. You are burned out because you are trying to do achieve an unreasonable goal. Redefine your goals so you can succeed and be happy.

[+] notacoward|8 years ago|reply
"My virtue is the only virtue" thinking.

The real world is full of tradeoffs. Sure, delivering early is a good thing. Sure, doing everything we can to prevent bugs (or at least find them early) is good. Delivering early is good, more features are good, beautiful interfaces are good. But you can't have all these things at once, even if you could spend infinite money on infinite developers (which would be un-good in its own way). Oh yeah, work-life balance and employee retention are also good.

I'd be a lot happier without the architects who only care about clean APIs. The reviewers who only care about braces and variable names. The devs who only care about core algorithms. The testers who only care about reporting as many bugs as possible. The performance engineers who only care how fast it is. The product managers who only care about features. The project managers who only care about schedules. Work with me, people, instead of just flinging demands at me from every direction at once. Or go screw yourself, because if everyone else is going to be that way then I might as well be too.

And thus do I become part of the problem.

[+] sssilver|8 years ago|reply
The crippling feeling that the way I'm designing this is probably wrong and there surely has to be a better way to do this and I am not smart enough to think of it.

Also, architecting anything always feels like the first time.

[+] majewsky|8 years ago|reply
Not myself, but for my colleagues, it's their toolchain. Whenever I sit with someone else and watch them do something, I grit my teeth at how they work against their tools rather than with them.
[+] ashark|8 years ago|reply
I can't imagine I'm alone in wanting some more details about this, if you'd care to provide them.
[+] mnm1|8 years ago|reply
Repetitive Stress Injuries. They make the entirety of the job, hell. Trying to get worker's compensation and physical therapy has been hell. I used to enjoy programming, like many here. Now, I mostly think about how to minimize typing and trackpadding, while keeping my posture proper and taking breaks every hour. As you can imagine, this does not lead to amazing amounts of productivity as it takes me about an hour to get into the proper mindset to code most days. I work from home, however, so I'm still more productive than anyone in the office. I long for the day when voice recognition becomes decent for people with accents so I can code with my voice like my American coworkers. Right now, the detection rate in a silent room with a very good mic is around 50% on a good day, so it's mostly useless. Yeah, there's shitty tooling, horrible boilerplate all over the place, stupid features to add, and all kinds of shit like that, and all that stuff sucks a million times worse with every single keystroke or tap. I'm still in my 30's too. I just can't imagine doing this shit for another 30 to 40 years or more. I wake up in pain, I go to sleep in pain, and I feel pain from RSI during my sleep as well as most of my days, sometimes including weekends. And on top of all that shit, I still have to think through solutions and program. If I could do anything else and still make a decent living, I would, but I see no other options.
[+] sebazzz|8 years ago|reply
Use general wide-used web development tooling like Webpack.

I'm in a classic .NET web development team that started using web forms, we now use a CSS preprocessor LESS via BundleTransformer the last few years and Typescript using the tooling in Visual Studio. It works, but it misses good stuff like live reloading and LESS source maps. I know from my free-time project that Webpacks works quite well, but I don't know how I can sell this to my team.

[+] breakpointalpha|8 years ago|reply
Opening Hacker News 15+ times a day.

Seriously, "Focus" is the hardest thing to do when I have the entire internet and my phone right in front of me.

How do you manage?

[+] fragmede|8 years ago|reply
How well do you eat? One thing that helped was to realize that HN (and Reddit, et al) is the brain equivalent of junk food, and just as bad for you. (The irony of writing this on HN is not lost to me.)

Discipline, mostly. It's a skill to learn, just like any other, and it helps in all walks of life.

[+] austincheney|8 years ago|reply
Working as a JavaScript developer in a heavy Java shop for a major dot com.

Everybody, on one hand, expects you to be a jack of all trades with mastery of: markup and various templating engines, CSS and presentation, anything related to events and asynchronous logic, distribution, and so forth.

On the other hand your skills are generally not valued, though frequently requested and required. They consider JavaScript and the web an inferior platform and inferior skillset for amateur developers, until they are required to do some of that work themselves. When I am not available to assist the excuses and blaming of things piles up.

Fortunately, I don't work in that industry any more.

[+] virtualized|8 years ago|reply
I hate being the framework, library or programming language guy who has to Google things for his coworkers. I'm good enough to do their jobs for them, but my advice is often times ignored when they didn't explicitly ask for it.
[+] closeparen|8 years ago|reply
The minimal/empty intersection between coding environments with acceptable performance (Vim, Sublime, etc) and environments with reasonable code intelligence (JetBrains).
[+] jitl|8 years ago|reply
Visual Studio Code seems like a good balance. You can push Vim and the others pretty far as well, eith a lot of fiddling with plugins.
[+] sharpercoder|8 years ago|reply
This is my top one as well. Most intelligence is slow yet can be outsourced to a (on premise) cloud. I find it quite strange that in 2017, there is no universal API to delegate code analysis computation onto distributed nodes. Language servers are a good step, yet this concept should be expanded to (macro) code analysis, automated code reviews, memory leak detection, (unit|integration) tests, large scale refactorings, builds, deployments, basically anything a modern IDE does.

Some of above is already there, but they are separate products which don't integrate well. For example: You can find a distributed build environment for .NET & Java. This also runs test, so there is some level of integration. However, I'd also like workflows like refactor-build-test-analyze-fix-refactor until satisfactory.

[+] pvinis|8 years ago|reply
Trying to keep a good posture so I can minimize the back pain. I find that more than any dev problem I face, if I feel uncomfortable sitting while thinking, it distracts me.