Think Of This When Starting A Programming Project

Sergio Pietri
The Startup
Published in
6 min readJul 1, 2020

--

This is a huge world filled with so many options that when one is confronted with the idea of a new project it is easy to feel quickly overwhelmed by it.

Not knowing where to start is usually the hardest part of the process. You need to take many things into account and it is important to start off with the right foot so here are some tips you can use to guide you through:

Scope and Timeframe

When you think of a project it is easy to go to infinity and beyond, picturing this massive app with so many rich and beautifully designed functions it could be a virtual Mr. Gadget. But here’s the thing: you need to land your idea and make it narrow enough for you to be able to execute it in a proper timeframe, and here comes the second section of this point.

Holding yourself accountable will make you see much more progress than if you take it lightly. Set up a development schedule and stick to it. Once you start creating that mental discipline and meet your personal deadlines, the workflow will improve so you will gradually start to handle bigger projects better, but one must start small and grow from there!

Define something called an MVP. This is not ‘Most Valuable Player’ but ‘Minimum Viable Product’.

The MVP will give you the perspective you need about the most basic functions your product needs in order to be functional. Keep only the most essential aspects and this will help you define your scope and set up timeframes for development.

Technology Stack

This is massively subjective to which technologies you’re familiar with or which technologies you want to learn.

There’s a sea of options but just take into account the MVP that you previously defined and start looking at your core needs.

Here are some suggestions for you:

On the front-end you can choose some of the popular JavaScript libraries for which you may find a ton of support online. These may include React, Angular, Vue, Svelte and a ton of others. This is in case your project is web-based, of course.

On the other hand for app development and widespread availability you can use React Native or Flutter which will allow you to compile the same project for Android, PC and iOS with the same codebase.

On the back-end there’s some more things to take into account.

You must think about where your app is going to live, it may be an Apache or NginX server. You can mount your server on AWS, Heroku, Digital Ocean, Google Cloud; these all have great free tiers.

Also, how will you communicate with it? The client-facing side needs to be able to connect to the contents seamlessly so there’s another thing.

The language which you will use to handle your behind-the-scenes (back-end) operations and give the results to be displayed by the performer (front-end). For simplicity’s sake I would suggest Python due to its widespread use (or you could also go with Javascript!).

The database also takes a huge role here.

A well designed database will enable you to access and process data quicker. You don’t want to start off with the wrong foot here.

Think large and plan ahead. Your app could potentially grow exponentially and having a tangled/slow mess of a database could be painful to get in order down th road.

There are many types of database services available but the most used one is MySQL which is a relational database model. Depending on your needs there are several database model types but people usually go with this one.

Diagrams: a map for your app

There are several diagram types for you to have a general overview of what your app is going to do and how it is going to behave.

Architecture Model: this is essential for developers to know how each layer of the application will interact with each other. A team can’t start to code until a proper route is defined or else they could risk a lot of time and effort going to waste.

The C4 model is very useful due to how relatively easy and quick it is to implement it. A C4 model has 4 layers, each describing a level of detail like if were zooming in and out of a Google Earth map. Official site: C4.

The unified modeling language (U.M.L) is another widespread system to picture the layout of the structure an application will have. The UML is probably the most used modeling technique in the software development world.

These diagrams will give you clarity on how all the pieces of your stack will fall together and where you need to do what. With this type of guide you can keep your eyes on the goal and not deviate from your initial MVP.

Deviating from the MVP and branching too hard can cause you to lose sight of the initial goal and not finish the project.

Design

In this stage you need to start picturing and putting on paper what your app’s layout could be.

You need to design a mockup. This is a basic prototype of what your app will look like with the buttons and screens needed, it will help you immensely when you start coding so you have an actual route to follow and not just code endlessly lost.

Even though the design will most likely change over time it is very important to pay close attention to every iteration of it. This will be how you present your app to the world and it is a very superficial world we live in right now, so make sure you don’t take this lightly.

Something very helpful to check if you’ve taken most of the possible use cases covered is to write user stories.

User stories are small sentences that tell you Who does What for Which purpose. Ex: A lawyer checks the status of a lawsuit to stay up to date on his cases.

Feedback

It is always a good idea to get help and outside opinions on your ideas (just be wary of who you choose to tell).

Perspective can be a huge benefit you can nurture your app (and yourself!) from. You may gain new ideas and enhance the ones you already have by gathering different opinions on the process, you could even gain a business partner who knows!

I hope you enjoyed the article! Let me know if you have any feedback.

Contact me on Twitter: Sergio Pietri

--

--

Sergio Pietri
The Startup

Backend Developer. I like to write about tech and other stuff. Follow me on twitter for more content!