What a good programmer should know

May 7, 2021

Lang: cs en de es

Do you want to become a good programmer or are you looking for one? Then you need to know what a good programmer should know. In this article you will learn what qualities, skills and knowledge a good programmer should ideally have. You can start with a list of basic technologies and so-called softskills.

Often, companies take a programmer as a worker. But it's in the thinking, and especially the creative thinking, that the greatest value. Yes, there are positions where you can just routinely create code similar to what you did before or CTRL-C and CTRL-V style copy existing blocks of code. But such work doesn't add much value and can often be automated.
And the ability to automate is a major strength of the IT industry because it makes work more efficient.

Whether as a candidate for a specific position being filled or a person who helped select people for the team, I've encountered different ideas and requirements for people for IT positions.
So what should a programmer who can create solutions and work efficiently be able to do?

Softskill and Hardskill

A good software developer must have many prerequisites, various skills and a lot of experience....
Here is a rough outline of what a good programmer should know:

  • Logical and critical thinking. Superior math skills.
  • Knowledge of technology = general knowledge of IT.
  • Basic principles and knowledge of computer science.
  • Communications.
  • Proficiency with tools: versioning, databases, etc.
  • Anyone will probably have at least the basics: HTML, CSS
  • Decompose (split) the project.
  • Know how to focus
  • Guessing and critical thinking
  • Keep oneself in good physical and mental condition
  • Ability to question, learn, focus
  • A healthy lifestyle
  • is necessary for long-term functioning.
  • Senior should be able to gather all the necessary materials and then work independently
  • .
  • Ability to select an effective technology for a given subsystem and advocate for the issue
  • Ability to convey/explain issues further
This is not an exhaustive list.
Don't know exactly what a computer programmer does? In the article for details.

Logical Thinking

Logical thinking is important for analyzing and solving problems, especially technical ones. At the time of study, logical thinking is typically trained in the subject of mathematics. A more practical example of the use of logical thinking is word problems, which can be from life. A concrete application of mathematics and logical thinking is in the subject of physics, where students encounter problems that build on simple everyday necessities in the life of a technician.
It follows that a person who has been a solver in mathematics and physics Olympiads is an excellent adept at being a capable programmer.


Knowing the technologies your project uses is essential to working effectively. But it's not necessary to know the technologies at the start. Technologies can be learned. A capable software developer can switch to other technologies if he or she has a good theoretical foundation. Whether someone is using the Nette framework or Symfony, it's because it almost doesn't matter, they are both technologies designed for the PHP language, designed according to MVC rules.
For new project implementation, learning technologies on the fly is obviously a risk. Therefore, it is a good idea to absorb new technologies on small projects, or on projects that are already built, in the case of large new projects, there should be at least one person who has tried the technology and knows what their capabilities are and how to use them properly.

Basic principles and knowledge of computer science

Anyone who has graduated from a college focused on computer science has taken courses such as: algorithmization, data structures, object-oriented programming. Such a person should then know how to design objects correctly in an application, how to design databases correctly and have an awareness of of what the code does. It won't happen that there will be a performance problem because of a poorly designed database or a poorly architected application. Alternatively, he or she is able to identify such a problem and, depending on the financial resources, at least partially address it after the fact.


A person can be an excellent programmer, but if he does not communicate he will not be able to work for other people. Communication is the basis for finding out the needs of the customer. In case of any confusion, a programmer must not be afraid to ask. The basic communication tools are: emails, telephone, personal conversation, videocally, chat. Of course, there are many different online communication tools.
The choice of a particular tool depends on the urgency and need for interaction. For a list of technical requirements for work to be done later, a text such as email is ideal. The other party will then be able to read the text at any time in peace to think about it and then just confirm the content. Such communication does not take anyone out of the work. The phone is good for urgent matters. Video calls are for consultations, when you need to show the monitor, and there's a need to discuss it.


It is necessary not only to know a given programming language, but also to know other tools, because such tools enable efficient work and collaboration.
The main thing is to know how to version the source code - here the GIT tool has become the standard. When you learn how to use GIT, you gain a skill, that any programmer can use with confidence. But it's also useful for other IT people, including project managers.

Even if you're not going to be a database specialist, you need to know how to use a database - the basics of SQL.
There are tools to manage dependencies and build a project, which is different for every ecosystem. Without such a tool you won't be able to deploy the project and make a major technology shift. And of course, it streamlines the work.
A basic understanding of the Unix operating system typically Linux is also useful.


The Internet and web applications are everywhere today, so every programmer has typically encountered the HTTP protocol, the HTML markup language, and CSS. So it can be assumed that he or she is able to incorporate his or her application into a template prepared by the designer and coder.


For the purpose of dividing a project into individual parts, it is necessary to be able to decompose requirements and systems into smaller parts. This will allow the parts to work independently, making the project more manageable more sustainable and secure. At the same time, pre-built solutions can be applied to such parts. Last but not least, decomposition allows to make more specific estimates of the individual parts and thus to refine the estimation and po programmed to be more visible, which parts of the application are already finished


Thinking through the requirements and designing a solution will take a lot of work. First you need to understand the task at hand and then come up with a solution that is not only functional but typically at sustainable. For all of this, it takes time and peace of mind - focus. With more and more people vying for people's attention, it's no wonder custom software development isn't for everyone. After all, not everyone remembers how they had to concentrate during math and physics exams or in maths and physics olympiads.

Guessing and Critical Thinking

There are many things to consider before developing software, including resources - especially financial resources. Therefore, it is necessary to be able to make an estimate of complexity. the reality will be different from the estimate, but if one makes it's better than a crystal ball.

Estimates can also point out the risks, whether in time or possibilities if the requirement is feasible. For unpredictable things, however, some experimental prototype should be done.

One of the risks may be unanticipated input, user or otherwise. Such unplanned input should be expected, thought about, and the application should be adapted accordingly - treat inputs and try to cover all possibilities.

Using critical thinking, it may still become apparent during the assignment that the implementation can be done differently and better than the customer has requested, or that the customer needs something different or new ideas for requirements arise that can improve the product.

Being fit

Keeping yourself in good physical and mental condition is important to deliver good performance over the long term. Everyone should eat well and everyone needs exercise. Since the programmer's job is in an office and typically seated or standing, it's still monotonous rigid position. Therefore, a programmer needs to incorporate movement into their daily schedule regularly and frequently. Otherwise he is at risk of health problems like diabetes etc and typically back pain. And certainly no company wants their employee to go to the doctors.


The field of Information Technology is a big complex one and most importantly it is constantly changing. Therefore, the ability to learn is essential not only for growth but also for retention in the field.

IIT Project Implementation

Unfortunately to the complexity and size of IT projects, even with the provision of capable developers, time cannot be guaranteed and thus financial requirements. However, a programmer who meets the above points is best placed to deliver the project and at the same time has the ability to point out risks that may jeopardise the implementation. And is able to make a plan so that the risks are minimized - after all, that's what the project management.

How to evaluate a company?

I have noticed a few interesting things in my experience. Some firms emphasize object programming, this is mostly because in such firms object don't practice programming much. Or they talk a lot about testing with UnitTesting, for example, but then it turns out that in practice, testing aside.

So the best thing to do is to get on and it will be seen. If you have friends in the company, ask around.

How to evaluate a candidate?

After an initial interview of what he has done and what he has experience with, assign him a job straight away.

How to write an advertisement for a programmer

To get a programmer, you need to write a good advert. Here is a video on How to write an advertisement for a programmer:

Články na podobné téma

Python program to control Docker using the API
How to use MailCatcher to test emails
Python OpenAI API
Creating a WebSocket web application and setting up a proxy
Project management: agile software development
How to run old PHP applications
Rust programming language
NodeJS: development, server configuration
Nette security bug CVE-2020-15227
REST API: platform API
Custom web and mail hosting with ISP Config software
Programming in SQL: PostgreSQL, MySQL/MariaDB
HTTPS: secure web
NoSQL database Mongo DB
Connecting to Microsoft SQL Server from Linux
What is the job description of a programmer
Python application localization
Which mail and web hosting to choose
Digispark - Program Atmel ATtiny microcontroller with Arduino IDE
Development for ARM processors with Arduino IDE
How to program the ESP8266 WiFi processor
Open smartphone with Linux - Openmoko Neo FreeRunner


If you are interested in receiving occasional news by email.
You can register by filling in your email news subscription.