HACKER Q&A
📣 akudha

How do you find (again) joy in software dev with so much setup?


It takes days to set up the development environment. There are never ending libraries, frameworks, settings to do. Hours upon hours goes in configuring these and they are so finicky. One missed configuration somewhere can ruin one's day.

All I want to do is write code and do creative work. How do you get over this? How do you find joy (or at least not hate) in development again?


  👤 someguy101010 Accepted Answer ✓
I feel your pain,

I try to mitigate this as much as possible with templating projects. I use https://gitlab.com/reedrichards/cookiecutter-goapp for small webservers and this generates the infra i need for aws, and go has been a relatively simple development and packaging platform for me.

I am also working at https://brev.dev and have been using their product at work and on personal projects to help standardize my development environment well. I often found myself at other companies constantly fire fighting developer environments falling into entropy and wishing for something like this so we can not having to worry about the different configurations of N developers * M machines.

*edited to make link clickable


👤 naderkhalil
This is a huge pain, mostly stemming from using the same computer for different projects, because dependencies start to conflict. Big companies (fb, google, workday) solve this with cloud-hosted dev environments. Cloud environments let me contribute to our code base as a technical founder without having to have the technical expertise of a CTO. I'd rather not go back because while I know how to code, I'd rather not spend time configuring dev environments if someone can just share theirs with me. (disclaimer: I work at https://brev.dev)

👤 Juliate
By acknowledging it has become complex, documenting the steps to set it up for others (me being among the others not so far away in time), then automating it.

It's still a slow start.

Then you have the getting to understand what to build/correct, what for, who for (that part is the slowest one).

Then deployment (somehow slow, but akin to automation like setup above).

The production (not slow, but depending on the environment and the history, might be painful).

The fun is occasionally in the coding part. But it more surely happens most of the time in the relationships and discussions around it.

(speaking for me, not a general case)


👤 porcoda
I clear my head with some coding in Processing (it’s fun to make pictures) or Mathematica. Both are 100% batteries included with no effort to start: I just open the app and right away I can just write code. An hour hacking together a little animation feels pretty pleasant and reminds me programming is still fun, even if some of our modern tools make it miserable.

👤 leros
For my personal projects, I keep my setups simple. Node, React, Typescript. Basically use them with the out of the box builds. It works, I have no need to modify things, and it takes less than an hour to fully setup a new computer.

For work, yeah.... it's a grind. All the custom build tools. Multi-step set up processes. That stuff does take days. But corporate jobs are slow for other reasons too and they're valid reasons. It takes a week or two to make a change at work that would take a few hours at home, due to planning, testing, waiting, approvals, etc. So the build environment is just another annoyance of working in a company that I suck up and deal with.


👤 p20z
I've had good luck using containerized development environments along with VS Code's Remote Development features. In short, set up a container image that has all of your dev dependencies and maintain it centrally. Developers can create containers off of this image and work in their private container. When an environment change is needed, someone can make it centrally and then others update their containers.

This doesn't solve the problem of distributing developer-specific configuration, and limits the UI tools that can be used, but if you can live with these constraints then it allows you to treat your development environment as yet-another-service!


👤 duped
I set up a new dev environment when I buy a new machine or join a new company.

For company environments hopefully there is a script to do the setup, or an existing environment you can pull down or otherwise create trivially. If there isn't it's usually a day 1 thing and you're getting paid, so hard to complain.

For personal stuff I have environment files in a git repo and install what I want as I need it. It's not that difficult to manage, certainly not hours.

For provisioning new machines like CI/CD runners and so on, your project should have a configure script to do everything automatically.


👤 zck
I'm hopeful that Nix can help with this. By putting system configuration into a config file, it should be easier to set up a system -- point it at the file and let it install everything.

👤 alvyjudy
A lot of the complexity of the set up comes from the fact we want all the advanced features possible yet the tooling aren’t ready, so developer has to step in and assist in that process. I mentally think of setting up a react project as the equivalent of booting up a linux computer and run a python hello world. If you think about how hard it is to boot up a operating system just to display hello world, maybe the typical set up elsewhere isn’t that bad?

👤 jstx1
Can you explain what you're doing more specifically that takes days? I've never come across setup that takes that long.

👤 rozenmd
Set it up once, keep using the same configuration across multiple projects.

Tweak things that aren't working.

Has been working for my side projects since 2017.


👤 tkiolp4
I feel your pain. That’s why in personal projects I use Go. I install the binary and that’s all. I use Go templates with plain HTML and vanilla JS and CSS. More than enough.

I really hate the whole babel, npm, sass, ts ecosystem. Too many dependencies, too many pre and post processors, pipelines to build, transpile… it sucks.


👤 amerkhalid
I got tired of all the overhead with webdev for personal projects. Also web projects were too much like my day job.

So switched to Swift and Xcode for personal stuff. I am still learning but it has been very refreshing and programming is fun again.


👤 nkko
You could use Cloud IDE like https://codeanywhere.com/ where you can deploy dev environment instantly.

👤 aristofun
Just leave old shitty non dev friendly stacks like java, c++, scala etc and switch to something made for people like ruby, or at least typescript.

This helped me get my motivation back.


👤 oakpond
Just curious, what languages and tools are you using specifically?

👤 whoomp12342
Easy! I dont tolerate finicky tech.