Ask HN: What slows you down most when starting new programming projects?

22 points by mlejva ↗ HN

25 comments

[ 2.1 ms ] story [ 69.1 ms ] thread
I am willing to guess a lot of people here would say time is their biggest slow down. Finding time. Making the most of the time you do have.
Interesting, I didn't think about it that way. Sure, I wish I had more time for projects I want to build once I have that time what annoys me sometimes is how much things keeps me from the real development.

What I had in my mind were things like setting up tools, configuring your project, etc. Basically, things that keep you from real productivity programming.

Figuring out where to start. The first brick is the hardest.
Where to start as in what direction start building the project? Or something else like "what technologies do I need to do X"?
These are good questions. Usually my train of thought is "this looks interesting, what should I make with it?"
More about what the project should be. Projects are about solving problems. Problems can be big and split into smaller ones. Which subset of a problem do I pick?

E.g. I wanted to make a random world generator. Continents and terrain are often done. Culture generators have been done too. Plots are rarely done, and they're the easiest, but aren't particular interesting on their own. Plots needed interesting characters. Character generation is common, but rarely clicks. So what flaws in existing character generators are easiest to tackle?

This whole process took me about 3 months before I got it down to a dropdown and a button. Before that it was endless iteration and experiments that went in a direction that wasn't particularly interesting, or too difficult.

Anything worth doing has nobody else go down the same path. So you start to question whether it's the right path and worth dedicating energy to.

Normally: getting a proper development environment configured.

Recently: I've been trying to start a few project where I always hit an early roadblock with an issue only being solved with purchasing and installing new hardware

Do you mind sharing what are those recent projects?

When you say "proper development environment configured" - what were the most annoying things?

Sure, I've most recently been trying to debug and patch a kernel driver, but in order to run kgdb (gdb kernel debugger) I have to have a serial connection between 2 machines of the same architecture. Unfortunately not too many modern PCs have serial ports and I've been running through different motherboard connectors and pci cards with no avail. I've had similar hardware issues doing kernel projects and often by the time I get what I've need, I've lost interest in the project.

As far as "proper development environment" goes, I have a bad habit of wanting a perfectionist environment with everything cleanly structured before I start writing serious core. If course this always bores me to death and prevents me from actually getting anything done, as opposed to just immediately starting to hack away

Setting up the environment is usually the major thing.
Is there any specific part that you setup most often across your projects?
Writing lots of well-tested prototypes and benchmarks to grok the capabilities your building blocks have. Working with things you don't understand is very slow, so I feel doing all of this up front leads to much better results than doing it incrementally every time a new strange bug appears.
Deploying to a server, or figuring out the best way to transition from prototype to production! (Django + JS development)
Not thinking things though.

As an example, recently, I’ve been thinking of building a list of ski resorts near where I live, so that I may then compile it into a kind of weather, snow forecasting site.

The first step was ‘compile and create a list of resorts’. Which was easy to do, but doesn’t lend nicely to the second step, rather, what second step?

I had a huge urge to just code something, anything. I didn’t spend enough time thinking about how it might develop.

I'm not following. It sounds like you'd be further along if you just went with your gut to just code something, anything.

My solution to getting started or continue going is to build the next thing I'm motivated to do, no matter how small. If I'm not motivated to even do that, I just create a setup where I can later start on the next thing, no matter now small. Usually once the setup is done, it's so easy to start that I usually do it in the same session as the setup.

Creating a front end. I actually really enjoying laying out a beautiful design in HTML, but...

I hate hate hate hate hate working in JS. Just throwing up a MPA with a templating engine is not enough functionality for what I want to offer. No matter how many times I try to start using React, Angular, Vue, or just do it with vanilla and maybe jQuery, I just don't get it

In my ideal world I would have a front end engineer friend who wanted to work on all the same things I did and I could just serve up APIs all day.

That’s funny, I’m the opposite. I love front-end work. I adore JavaScript when I can write it using TypeScript. I program in React for my job all day and go home and make more React websites for fun. I do appreciate the more backend-y developers who send data to power the front-ends I build.
I also used to hate making front-ends, from jQuery onwards. This changed when I started using Vue. The components are so lightweight, I'll make ones to do simple output formatting. And with TypeScript it's so nice, almost like back-end code. Oh when using Vue, I avoid the whole redux/vuex whatever and either use local state, vue-stash, or similar simple machinery.
Trying to figure out the project name. I name my projects no matter how small they are. It somehow makes the project important enough for me to come back to it a few days later.
One step further, finding the perfect domain name. I have a long list of expired after 1 year, unused domain names. Sometimes I'll even register a better name for a project I still haven't started.
I'm usually really good at starting things.. and even up to deploying something minimal that does a thing. That's when I hit the slow/stop zone. My initial curiosity itch has been scratched and a proof-of-concept made and possibly deployed using some new infrastructure gizmo.

My question is how do you keep going? Show friends/coworkers, post on sites, get users? I even went as far as setting up a landing page and figuring out auto signup/provisioning and payments, then lack the motivation to market or continue development. I probably need a co-instigator that's not so dev-only.

For me it is the get everything setup to work correctly in a "Windows" environment. Compilers, system variables, command lines (powershell, cmd and bash) and editor/debugger setup take a lot of time. Almost every new project I am forced to use a fresh machine so getting all this setup each time I start a new project is consuming (never mind downloading all the packages/libs I'll need).
Although I like writing tests but following Test-Driven Development slows down the development of side-projects.