

Ask HN: I want to start working on my coding project – how do I start? - codezombie

For some month now there is an idea for a web application, I finally want to realize now. However, coming from a non-professional coding background, i.e. always been teaching myself how to code, I am struggling with how to plan my project?<p>In the past I - most of the time - just started to code without any concepts and planning, but this time, I want to do it the right way. I&#x27;m familiar with concepts as MVC, Server &lt;-&gt; Client, etc. so it&#x27;s not about the technological how but about how to think through the whole app so I can start coding afterwards=<p>I tried to define routes, requests, templastes, models, etc. but I still feel like I&#x27;m missing to plan the whole picture - to make sure that everything works fine with eachother, etc..<p>So how do you plan your projects? What are you doing first, second, third, ...?
Are there any good best practices, articles, etc. you can recommend?
======
facorreia
What I've found to help for small projects is to start with a very lightweight
use case analysis. For instance:

* A small vision document: This project is a (short description) targeted at (accountants / small business / boy scouts). It solves this problem that the target market has: (pain point). Its main features are (what makes it a good solution / what differentiates it from the alternatives).

* Main use cases: Some Trello cards with the main user-facing features, described at a very high level.

* Technical overview: You seem to have that covered. E.g. it will be a web/mobile/desktop/command-line app built on (language/stack) with this architecture (microservices, MVC web app, client/server, etc.) storing data on (S3/SQL database/flat files).

For a 1-person small project, don't overdo this part. Once you have this high-
level overview of the project, try to implement the bare minimum necessary for
the "happy path" of the main use case (i.e. without worrying about exceptional
cases yet). Mock other aspects as necessary (e.g. authentication, dependent
data sets, complex business logic, etc.)

This will leave you with a huge technical debt that you'll need to crawl out
of as move forward, but it will avoid analysis paralysis and over-
architecting.

For a more structured approach, one source that I recommend is "Use Case
Driven Object Modeling with UML"
([http://www.softwarereality.com/UseCaseDriven.jsp](http://www.softwarereality.com/UseCaseDriven.jsp)).
It shows a technique to bridge the gap from the business requirements to the
technical design and implementation.

------
brudgers
Start coding. Then start throwing away code and rewriting. Then start living
with code that you know you could rewrite so you can write more code to throw
away and rewrite. If you're like me, and I hope not but if you are, most of
your code will start out wrong and get rewritten to merely bad with a few good
bits that will keep you coming back.

Anyway, all that planning feels like work but isn't work. Plans don't live
long past contact with reality, and anyway new programmers by definition lack
practical experience in making good plans and bad code is better than bad
plans for no other reason than bad code provides its own feedback while bad
plans don't until there is some code to prove them bad.

tl;dr start writing code.

Good luck.

~~~
mrozel
I like this advice. I don't know many programmers that feel that their code is
perfect or complete. Whiteboards and sticky notes make great planning if you
need help visualizing.

------
kachhalimbu
Find a mentor who can guide you. I will be happy to help you get a head start
(my email in my profile).

------
c-rack
My recommendation:

1\. Choose a programming language you like

2\. Pick the most popular web framework in that language

3\. Follow a pet shop or blog tutorial with that framework

4\. Start coding your own project

