How to do programming projects?
Tags: programming, productivity, startup
Published: 2021-04-19 08:44:00

If you are a programming student or you are learning programming as a hobby then projects play very important role in your learning. The reason behind that is you explore new ideas, new tasks and new possibilities about skills you have and what new skills you can learn by doing the programming projects. Projects are also a great resource to know what are your weaknesses and how you are planning to overcome those weaknesses. Projects often make us question our skills and when we overcome the problems that we face while doing the projects, we feel more confident and able of solving problems. 
In this article, I will be mentioning some points related to programming that I think very important while choosing or doing a programming project.
## 1. Choosing a Problem or Idea for Project
It is very common for new or beginner programmers to select a project which is either too big to complete or too small to complete. Here you have to sit down or take a walk on the road or garden in order to think about what you are going to build and how you will build that thing. It is a good option to have a look around you in order to figure out what kind of problems your fellows or friends or family members are facing, it is quite possible that the problem they are facing is a problem of a whole bunch of people. You should also consider one more thing which is very important and that is achieve-ability. Whether you will be able to complete the project or not? So, sit down or have a walk and think about what you are going to build and how large or small it can be.
![Idea in Hand](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iafucrxpzc2hubg4s2wl.jpg)

## 2. Addressing the Real Life Problems
If you have choose a big but some kind of conceptual or fictional project then it is quite possible that you will get bored after spending some time on that project because those problems and things do not exists in the real life and you are not addressing the real life scenarios. So, now another question arrives how to find the real life problems. I will try to explain all this with the help of a very simple and straight forward example. Let's suppose you are sitting in the coffee shop and the owner of this coffee shop owner manages the daily tasks on a Notebook or a diary. You sitting there, drinking coffee and you will think, this is the digital world and this person is still using pen and paper to manage the aspects of the business. Here you saw a trend as well as an opportunity to build a website or system for that coffee shop that will help the business owner to manage the business in digital and more effective way. So Coffee Shop Management System can be your next web-development or software engineering project.
![Real Life](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i7x0379t4hacj2kca7vj.jpg)

## 3. Collecting the Requirements
Now collection of requirement is a very deep topic and I would try to touch this topic from the tip. So how would you know what should be in the project? What the business owner wants? These are some very basic questions that will arrive in your mind before starting a real life project. The simplest and easiest way to get to know these things is to do the following things:

 - Observe the Employees. 
 - Observe the Owner. 
 - Observe the Overall Structure of the Business. 
 - Writing Down the Daily Routines Happening in the Business.

When you would have collected all the basic requirements, go and meet to the owner of the business to ask for some additional or essential requirements that should be present in the Software or the Website anything you are going to build for him. After that you will discard some of the non-functional requirements (Meaning Colours and Other Not Important Requirements) and start aligning the functional requirements to start work with.
![Requirements](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6r4tc5hnv8dz3wj0du1q.jpg)

## 4. Reporting the Progress of the Project
Now how would you know that how far away you are from the completion of the project. The simplest way of doing this is to use a project management tool. In these tools, you can assign yourself some tasks and deadlines to complete that task. In this way you will have an excellent way of reporting of progress and to know till where you have come in terms of completion of the project. I will be mentioning some of the project management tools below and now it is up-to you ti try these and choose one for your personal use.

 - BasceCamp 3
 - Notion
 -  Trello

## 5. Choosing the Technologies (Frameworks or Programming Languages) for Project
After you have gathered the requirements and you are done with filtering them as well. Now it is time to get started. But what to use to start building the projects? What frameworks to use? What programming languages to use? 
The simplest way to answer these questions is to have a look at the projects and find out the answers to the following questions.

 - What is the Size of the Project? Is it Big Scale Project or Small
   Scale Project?
 - Will someone else be working on this project after me?
 - Does the business owner have enough money to keep on updating this project?

Now let's come to the answers of these questions.
If the scale of project is big then it will be a good thing to go for Java, C#, Ruby on Rails related frameworks. If the project is not so big in the size then it will be better to use the JavaScript or other scripting related technologies.
If someone else will be working on the project after you, then it will be better to use the collaboration and version control system tools to record the changes you have made in the project.
If the business owner is not looking to maintenance of the project then use such technologies which are more stable in near future, because if new libraries came and old libraries got discarded then there will be problem.

## 6. Keep Finishing in the Mind
Most programming projects that have been started are not finish projects. I can understand there can be many factors in this but it is very important for a successful project that it should be the finished project not incomplete project. This will automatically give you a moral boost and huge confidence to solve problems in real life as well.
![Finish Line](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v5ccohi2x48oqtb2nnl9.jpg)

**Final Words**
All these points are mine own thoughts and experiences and I hope that these points will help you in the next project as well. If I have missed something then do comment below so that others and me also can revise or learn new things as well.