DEV Community

loading...
Cover image for How to organize a project from start to finish.

How to organize a project from start to finish.

JC Smiley
Front End Developer with a focus on React (web) and React Native (mobile), Code Connector national team Online Content Manager and a leader for the Memphis chapter, Gardner, and Outdoor Enthusiast
Updated on ・5 min read

This article was made with aspiring developers in mind to help build their first set of software projects.

Table of Contents

  1. Start small
  2. Find a problem to solve
  3. Importance of planning
  4. Think MVP
  5. Tips for a wireframe
  6. Planning Tools
  7. Get Feedback
  8. Don't Reinvent the Wheel
  9. Summary

Start small

A big problem for aspiring developers is starting projects that are too big to finish at their current skill set. It's not about passion or vision, but more about knowledge and experience. Starting small allows you to build quickly, to finish, and to gain experience.

My advice is to start with small projects that you estimate will take days or a single week. Then do another and another. Over time you will have the experience and knowledge to build bigger and more visionary projects.

Find a problem to solve

The best software comes from a unique problem someone is trying to solve for themselves or for someone they know. That problem is personal to them and becomes a passion. When they are tired and broken from working on the software, they can literally touch the problem and that passion is renewed.

An example is a vocabulary quiz for my daughter's science class. This app helped turn her grade of an "F" into a "B" in a short time period. It allowed her to practice for quizzes on her phone and was custom to her learning style. I had a problem that was personal to my family and a strong reason to finish it.

Vocabulary quiz app

Importance of planning

Planning is literally 50% of the success of software development. There is an old saying of "Failure to plan is planning to fail". Some tips are:

  1. Write down the purpose of the app.
  2. Who are the intended user or users.
  3. Strategize user stories on how the app will be used. This helps place limits on the amount of work and scope creep.
  4. List the technologies that you plan to use.
  5. At most, only one of those technologies should be something you don't know. It should never be a situation where you are learning "Everything". A good rule of thumb is to learn one new technology per project.
  6. Define your inputs and outputs for the application.
  7. Out of everything written so far, what is the minimum needed for the app to be useful. Those ideas are part of your MVP (Minimum Viable Product). This is what you will build first and build quickly. Everything else should go into version 2.
  8. Before you code, create a wireframe. It's best to have a clear visual idea of what you are building before you start. Creating a wireframe helps flesh out more user stories. This also helps you gather colors and images before you start coding. Even if it's a backend API. You still need a diagram.
  9. Use Trello or something similar to keep track of work completed (those user stories). Even better, turn those stories into clearly defined tasks. Break each page or section of the app into tasks with those user stories.
  10. Get beta and alpha testers. Don't be scared. Testing makes you and the software better.
  11. Additional "Boss Level" planning tools are data charts, user flow charts, and a software architecture diagram.

It's important to plan the entire project from start to finish. One caveat, you need to go from planning to coding as soon as possible. This is not a week long process and is not set in stone.

Think MVP

I can't stress enough to build the MVP and release it. Do not aim for perfection and have a ton of features. You need to get something DONE and SHIPPED. You need a clear goal or acceptance criteria or you will never be finished.

Once the MVP is finished, get feedback from your testers and then build the next version of your app. Focus on building incremental updates/releases. This makes the project not overwhelming and more achievable.

Tips for a wireframe

My strategy for wireframing is:

  1. Know the purpose of the software and have clear user stories.
  2. Use pencil and paper to draw an outline of the software. I draw as many different visual representations of the application as I can imagine. This brainstorming is crucial to finding the best fit. The focus is on functionality, not being pretty.
  3. Next I use Adobe XD to create a black and white digital copy of the final paper design.
  4. I spend time evolving that design with a focus on the User Experience and good User Interface design concepts.
  5. The next to last step is to make similar responsive designs (think mobile, tablet, and desktop views).
  6. Finally, you need to add colors, images, possibly text. Keep it super simple with 1-2 colors for now with the goal of worrying about style later.

Planning Tools

My personal favorite is Notion and Google Keep. Both are free and easy to use. The main idea is to have one place to keep all your ideas and planning.

Get Feedback

I can't stress the importance of feedback. Rather it's feedback on the idea, the design, the architecture of the code, or how the final product works. You need a support system or cheerleaders to keep motivated. You need someone to say that's ugly, move faster, this doesn't work, or etc. As you build, quickly get feedback and iterate.

Start Coding as soon as Possible

Even if it's just setting up the repo and coding “HELLO WORLD” just to make sure it works. Just get something and anything quickly done. I can't stress how that first step is crucial.

Don't Reinvent the Wheel

When you are starting off in your journey, you should use software to move fast. Examples are not to build your own authentication service. You can move faster (and safer) with Auth0. You can deploy with Netlify instead of setting up a server. You can style faster with TailwindCSS or Bootstrap. I'm not saying never learn these things. But if you are trying to build your first app, then using these types of services/tools can speed up development.

I found this on twitter for hosting platforms:
Tweet showing hosting platforms

Summary

Experience has taught me that most people plan poorly. Get inspired, plan accordingly, and then code.

You have to code daily. I rarely see someone finish something by coding intermittently. I don't know anyone who built something great on the first project. People who have built many things progressed to be able to build their dreams.

Code Connector is a non-profit that's organized tech meetups to help people start their journey into tech. You can join our daily conversations by clicking this link: Code Connector slack channel.

Bonus

I converted several blog posts similar to this one into a free e-book called "Advice for Breaking into Tech". The book summarizes advice from 700 developers about learning how to code and looking for your first job in tech into an easy-to-read narrative.
Click for your free Download

Discussion (2)

Collapse
mrsandman101 profile image
A.B.Santhosh

About reinventing the wheel. There is almost packages for all the components needed for an project available out there. If we use them, it’s merely a learning experience for beginners. How does it help in general?

Collapse
jcsmileyjr profile image
JC Smiley Author • Edited

I should have stated that the article is primary for beginners. With aspiring developers in mind a project should focus on learning one thing at a time so as not to get overwhelm. You don't have to build everything from scratch. I think that gradual learning experience is important and crucial for long term growth.

With that said, if you want to build everything from scratch you can. The only issue is that the project will take a long time and the chances of not finishing increases.

Yes there is packages for everything and that is a great thing. If a component of your project is beyond your skill set, you can grab a pre-made component to complete the project. On the next project, you can focus on that missing skill set and learn how to build that component from scratch. Examples are if you don't know how to authenticate users and etc., you can use Auth0 services for now.