As I mentioned before, programming is about solving certain problems, and the applications built by developers are more likely certain solutions. In the first chapter, I mentioned a case study, namely that of Alex who needed a small accounting application very specific to his company's needs. This led him to try his skills as a programmer. No one stops you from trying your skills as a programmer whether you want an IT career or not.

If you have a good idea or a problem that needs to be materialized and turned into a practical solution, you are on the right track and should try your skills. You only need to consider certain steps for developing an application which I will explain in this chapter.

First of all, you need a certain base of theoretical knowledge, so it is worth starting a study. My recommendation is to try to be self-taught, choose some online courses, some books you have at hand, and forums recommended in the previous chapters, and proceed on an exciting journey into the world of programming. Personally, I recommend courses that include many practical examples and exercises you can repeat on your local computer to learn practical skills. At the same time, you will learn how to develop small applications, and this will allow you to gather ideas for your own projects.

You can use the so-called Cookbooks, recommended by me in chapter 7, which describe recipes for developing applications for various technologies.

Therefore, try to accumulate a small portfolio based on exercises and practical examples during the study. You can also develop small applications of your own, more or less complex. In the future, they can serve as a basis for serious projects.

And now about the process of creating an application, it works like this:

Concept development

The first step is to put your basic ideas, sketches, and necessary information on paper, everything that your concept entails and will be materialized later. Try to be as detailed as possible, including thinking through the basic functionality, some interface sketches, and identifying the specifics of the data the application will process.

Here, you should also define the levels and basic modules of your application, so that you can compose the so-called architecture of your application. The model of the multi-layer architecture (N-tier application) can be useful to you, serving as your basis. It involves dividing the functionality into several levels, the most commonly used being the 3-level one:

  • The first level is Databases, which involves storing and securing data.
  • The second level is that of the server logic (Business Logic), the code that makes the connection through certain mechanisms with the databases, for data manipulation, including the connection with the application interface.
  • The last level, for the given architecture, is the interface. This is where interaction with the user is already foreseen, through certain forms, navigations, etc.
Database design

Next comes Databases, now you should design and develop databases for your application. This step starts with the results of the conceptual phase, in which you gather the necessary information and define the type of data you will use in the application.

When you design the database schema, you define tables and their relationships, and if you choose to use SQL relational databases, you define the tables and their relationships. Following that, you will define the mechanisms for accessing, processing and storing data in the database.

For small and medium applications I would recommend open-source databases like MySQL or SQLite. However, you can also use free versions of more serious databases like MS SQL or Oracle. It is important to think carefully about the scheme, because along the way you will undoubtedly add and modify tables, but the basic core must remain the same.

Business logic development

Back-end functionality, also called Business Logic, which is not seen by the user, but perceived through interaction with the application interface, is a complicated and responsible stage. In this step, mechanisms for interacting with the database, calculations, algorithms, and data processing are implemented. In other words, you develop the logic of your application in a certain programming language.

You can use programming languages like C#, Java, Python, C++, PHP, Perl to create efficient web, mobile, or desktop applications, depending on your intended purpose. Although it is possible to develop a lot of logic during the User Interface development process, the Business logic stage comes as a separate part of application development. Now you define the most complex user interactions, such as database interactions, like reading, writing, deleting, and modifying data. As a rule, "Business Logic" precedes the interface development stage.

The User Interface

The interface development step follows. Depending on the direction you choose at the conceptual stage and the sketches you made, you must show creativity and diligence in building the web, desktop, or mobile interface, as you intended. You will need to apply a set of specific technologies or resort to external libraries, including free or paid UI (User Interface) components. Certain companies develop components for various user interfaces that they market on a large scale. Some of them are Telerik, Aspose, DevExpress, ComponentOne, and others.

There are also free UI solutions and free templates for websites on CMSs such as WordPress or Wix. In addition, there are many open-source libraries developed in JavaScript, HTML, and CSS like Bootstrap, Fancybox, SweetAlert, and others that you can use.

It is critical to correctly link the backend functionality with the user interface, exclude any possible errors, and also ensure that data is processed and stored correctly in the database.

Application testing

Finally, the application must be thoroughly tested. Although you will test the code and interface during the development process, final testing involves the exclusion of any bizarre case, any error, or any ambiguity regarding the functionality of the final application. In addition to manual testing of the application, mostly done from the interface, such as filling out forms, sending emails, and browsing, you can also use certain testing tools, like Selenium, TestRail, TestLoader, Cytrus, Bugzilla, etc.

There is no need to delve into these tools or do special testing courses. There are people who specialize in this area and who are of significant help to programming teams, especially in large IT companies. You can use these tools only for manual testing mainly to simulate all possible user interactions.

It is important to get a reliable, bug-free application with good performance and that can withstand any user action over time.


Versioning also represents a special stage in application development. With the world constantly changing, and IT technologies changing almost every year, new versions are appearing, you'll have to stay current with the pace of change. So upgrades, and improvements, to your application will be necessary at certain time intervals, seasonally, annually, or after a few years. Every application needs to be improved along the way, and new versions and features should be incorporated as technology advances.

Apps that don't update over time get rusty and become useless or at least difficult to use. We always want something updated with a refined interface and easy-to-understand functionality, something developed using the latest generation of technologies. This will always be in vogue. Therefore, app versioning is another step to consider from the beginning. Plus, it will keep you in shape as a good programmer who is always up to date with the new technologies that he applies in practice.


Developing your own apps is really a nice and interesting thing. Something I enjoyed since I was a student because that's how I learned the most, more than in faculty or vocational courses. When you apply the technologies you have studied in practice, it gives you pleasure and you feel the contribution you can bring to society. You increase your creative, analytical, and cognitive skills.

If you follow the saying "Practice beats grammar", then you will be able to understand what many theoretical concepts in programming are for, and how you can apply them correctly.

Any programmer should develop something personal for himself, not only for others, as this will help them learn with pleasure. Only by going through all the stages described above head-to-tail, you will feel how the concept laid out on the sheet takes shape, and in the end, it can be something very useful and interesting.


Get product updates, launch announcements, and more by joining our newsletter.

Many people enjoy learning from books. You can also achieve technical skills and knowledge by trying our featured e-books.
Study Point is a project designed to bring you useful and enjoyable learning material, accessible to everyone.
Follow us by subscribing to our newsletter.

*If you'll encounter any problem please contact us on