DEV Community

What's your first step while starting project?

samsha1 on January 29, 2019

Once, I am sure I always start by working in database design, step by step it gets vague. So, I just want to know is it the right first step?

Collapse
 
elmuerte profile image
Michiel Hendriks

The name. If you don't know something's name how do you know what to build?

Collapse
 
sudiukil profile image
Quentin Sonrel

Naming a project is kinda like creating a character in a RPG video game. It takes forever.

Collapse
 
elmuerte profile image
Michiel Hendriks

If you like Foghorn Leghorn, name your character "I say".

Collapse
 
samsha1 profile image
samsha1

Thanks, @elmuerte I don't think I would spend time on name before starting something

Collapse
 
elmuerte profile image
Michiel Hendriks

Before people are taking my original response too serious, it's a joke. It is a reference to the Dilbert animation series from a long time ago. Episode 1: "The Name". I was quoting the PHB (Pointy Haired Boss). He had his presentation backwards (back when they used overhead projectors instead of powerpoint presentations) and "Step 1: the name".

Of course one of the first steps when working on something is to come up with a name. You cannot start working on "untitled" every time. But it is just a name. You can always change it later to something more suitable.

Collapse
 
simonmayerhofer profile image
Simon Mayerhofer • Edited

Brainstorming. In my opinion the most important part. Just collecting ideas about everything. After that sort and pick the most important / best items. Then make a plan and then start working on the tasks.

Collapse
 
goyo profile image
Grzegorz Ziemonski

I doubt there’s anyone who knows what’s the “right” first step and I’m pretty sure there’s a good bit of “it depends” lurking in there.

That said, I like starting out by doing a little amount of initial thinking, followed by a little time of coding. This usually leads to many questions and choices - another block of thinking, which in turns leads to more coding. During this small iterations I constantly think (and sometimes draw) what kind of design I’m going towards but implement only as much as is required at a certain point in the project.

My reason for starting like this over starting with database or class design is that I know that I don’t know a lot of things in the beginning and that I surely won’t get it right for the first time.

Collapse
 
quii profile image
Chris James • Edited

Don't design bottom up, this just leads to incorrect and over-engineered designs.

  • Ship an MVP as fast as you can. Seriously just ship! Don't obsess over design, it will emerge with time if you keep refactoring and reflecting.
  • Get feedback
  • Iterate
  • Repeat until billionaire or project fails.

The basic agile stuff :)

Collapse
 
iuriimednikov profile image
Yuri Mednikov

Create an overall architecture, design classes and interfaces, draw flowcharts etc. I usually want to prepare a helicopter view on the project and make sure that I know exactly what every part does. Then I read docs for libraries and APIs I would use, if I've never used them before. Often, different payments providers have different approaches, so it worth to explore their docs.

Collapse
 
samsha1 profile image
samsha1

Thank you for sharing this! Make sense :) . Generally, I think database design is the most crucial part to analyze the possibility success of any project . So, I spend first most time working on it. What do you think about it?

Collapse
 
iuriimednikov profile image
Yuri Mednikov

Yes, I think data design in general is very important.

Collapse
 
itr13 profile image
Mikael Klages

Depends on what kind of project, but usually one of the following:

  • Generate core files, git init, git add ., git commit -m "Initial Commit"
  • Write the most abstract code that runs the rest first, so I can fill in the gaps and have nice milestones
  • Write the most complex part of the program that is prone to fail, so I don't end up taking on a too ambitious project and waste a lot of time only to find out the most important part won't work
  • Set up list over what needs to be done
  • Talk with people that will also work on the project, or the product owner
  • Write the entire project, so I can just fix bugs later

Depends a lot on what kind of project it is, how big, and if it's a personal project or not

Collapse
 
andrzejchmura profile image
Andrzej Chmura

I like to sketch out as much as possible with pen and paper, as this feels very natural to me. I usually take a large piece of Bristol Paper, put in on my desk and scribble, draw and write anything that comes to my mind. Then I try to find the most logical connections between the dots and decide which of those are the most important first steps.
With that vague concept in my mind, I build the Minimum Viable Product for the user interface to play with the behavior, while mocking data with JSON placeholders, just to understand what I really want to build. Only then I think about the actual implementation - whether it is database design or picking the right technology stack.

Collapse
 
inizio profile image
IniZio

npm init -y

Collapse
 
peterwitham profile image
Peter Witham

I think probably the MVP list and a working name. The hardest part ... choosing the platform to build it with :)

Collapse
 
samsha1 profile image
samsha1

Totally agree with you @peterwitham