DEV Community

samsha1
samsha1

Posted on

What's your first step while starting project?

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?

Top comments (16)

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
 
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
 
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
 
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