At some point, all of us stood in front of a choice. Entering adulthood.
Having in mind, on the one hand, friends, school, social life, youth, on the other our own future, work, career. The multitude of professions gives us the possibility of a huge but also difficult choice. Going for what I like? Where I know I am already knowledgeable? For what is profitable? Somewhere, where our experienced parents see us? Or we will have stable situation?
A hard choice for young people, and in most cases decisive for the whole life. It may seem to be that people with passion or technical knowledge will have an easier choice to make, because they are oriented toward concrete purposes or professions. But.. is it really so easy for young people to choose the right direction? Especially relatively young, but common and demanding profession like programming. Parent’s experience will not help. Stability? Will it pays off? Work is nice, good, so the competition is huge. In this situation, we can only rely on our own skills and knowledge. In many situations, luckily on passion as well. It helps. In that case: what characteristics must have someone who wants to not only start learning to programme, but also wants to persevere in this?
What features must a GOOD programmer have?
In my survey and the results of my own investigations it is clear that main personal feature, for those who want to begin his career in a profession related to programming is :
To devices. To code. To learn. To people.
You must be ready for that yours or someone else’s code won’t be clear. Defects in the code are so natural here. We expect the solution proposed by us to work well, so we must be prepared that it will take most of our time. The code error should not affect the self-assessment of our skills or knowledge. Let’s be patient.
Mistakes? Of course! Who does not make them?
Often, we deal with people who don’t care about the code with due diligence. You can’t stand still, it’s time to find the mistake!
And how many times we have stopped learning a new language/ technology in the middle, or even at the beginning, thinking that it is stupid… I will try another language… I can’t do it… too hard… too boring… it won’t help me…
The devices we work on also like to spoil in the least expected time. What can we do? Nothing. These are tools, machines, and automats. They must break one day. And people? People are different. Customers are different. Co-workers- passion and work are common, but characters are so different!
Patience! The key is patience with which another trait is closely related:
ALWAYS take care of details! Coding is digging deep. Coding is minimal differences or shortcomings. Pedantism- here it is a positive and desirable feature. Check 5 times what you have created. If you see an error- do not ignore it, just correct it. If you finish your work at some stage- leave a comment, instructions or tips, maybe they will save the next person’s life or help someone in the future if there is a need to return to the code.
Technical documentation is a programmer’s bane. If necessary, fill it with the largest amount of information that would be accurate, reliable, understandable for the rest of the team/team leader/client. Do not ignore details- they can decide about success or failure in the project.
Even if the programmer likes his work very much, it doesn’t mean that the next phase of the project can be done carelessly. You can develop this very important trait by training and practice. It is a skill that, with a little will and the mentioned patience, is available to get.
And to learn is also:
3. WORK PLANNING and REGULARITY
The programmer’s work is largely repeatable. It is a work that requires many hours of concentration, hence the ability to plan your work and self-organization is so important. Having tasks sorted, time planned in succession and responsibilities noted makes it easier not to miss anything important. It is also a way to be not distracted when someone suddenly asks for help. And let’s also remember that project priorities can change within an hour. Planning the work and time is also associated with the concept of task prioritization.
First- take care of the piece of work that is most important from the perspective of the project completion, such as fixing a critical bug or dealing with a client’s interest. Close deadline? Let’s analyze the goals, adapt to the guidelines and take on the most important chunk of work.
Do not waste time unnecessarily on something that is not valuable from the client’s point of view or project’s (maybe only temporarily). Set your agenda from the very moment you enter the office and repeat these activities daily (eg. Morning stand-ups at a settled time, half an hour to sum up yesterday, etc.).
Systematicity also has a huge impact on your personal development towards being a perfect programmer.
4. LOGICAL THINKING
Ability to connect facts, draw conclusions and implement effective solutions are skills that not everyone has. In the programmer’s work, you simply have to possess (or try to learn) analytical predispositions. Often, there are problems that you have to solve on your own. Well, maybe someone from the team will tell you… but is that what it’s all about?
Will we find a good way out of a given problem- it depends on our deduction, analysis of the situation. The ability to understand the dependencies that occur between the various stages of writing code is simply the foundation! Otherwise, we will create code based on the sum of accidents, none of them being thoughtful decisions- and such situations can’t take place.
You know- hard-working team, well-coordinated group… someone will always help me. But what if won’t?
This is not about the fact that someone does not like you. It is not about being selfish or waiting for your failure. In fact, a programmer is a loner in a group. Every one. You make a project together, but each has an individual role. Nobody will do your job for you. You can find solutions to many issues on your own, for example, on the Internet, without the need to distract or dissuade colleagues from their work.
Patience to learn, systematic action, logical thinking… and you’re already one step closer to success!
Do not put all your work into others. Self-decision making is also your personal development. Did you make a mistake? Good! Correct it. Next time you won’t make it again 🙂 So be independent…
6. …IN A GROUP
Teamwork is the implementation of projects that require cooperation with team members or clients. If cooperation is to be proceeding smoothly, the programmer should be the master of forming clear, specific and understandable messages as much as of listening carefully what the other person wants to convey.
Listing thoughts, reservations, comments, but also praise and motivating the rest of the group is crucial. There is no effective work without communication. We won’t build the success of the whole group alone. The project is our common good, so let’s support ourselves, give advice, pay someone’s attention to something, but do not interfere hardly with other colleagues. Even if you are the best in the team, by being selfish and not able to work with others, you can bring the project to a downfall.
Well, how to propose a solution that hasn’t be used before? How to imagine the best way out of a difficult situation? Often also creativity, imagination serve to illustrate how something should look before you start working on it. Writing code is a creative task- here you are an artist. The programmer plans and predicts what effects their actions will bring. Often, reaching the goal requires unconventional solutions.
Yes, yes, you read it correctly. Being a sluggard in a small or large part is acceptable for the programmer. Wondering: how? So… lazy people have a skill of looking for the simplest and fastest solution possible. It is often more profitable to look into the bases of already existing programs and use them instead of spending hours on writing everything from scratch. And, of course, time is money.
And above all: why do you need to overwork unnecessarily?
One of the most important features – programming as a hobby. Isn’t it pleasant to work on something that we like? It is much easier to be an expert in the field that we like and know. It’s hard to be good at something that tires us. If programming has become a passion for you, the natural thing is that you’ll start to improve yourself. Learning will be a pleasure for you. Curiosity, inquisitiveness will appear…
Regularity and organization of your own work will come by itself, you will not even notice when you have become such a neat 😉 You will pay more attention to details because you want that the product of your passion will be perfect.
10. Am I good enough?
Believe in your abilities! After all, if you got employment in a software company, it means that you have been chosen from among other candidates, sometimes many, so that already shows your skills. All that remains is to display what we know or be interested in what we can learn.
Expand your horizons and do not let minor mistakes undermine your self-confidence. Neither mistakes nor people
I can solemnly assure you (from experience and live observation) that all these features are used on a daily basis by programmers. Maybe not at once, maybe some to a greater or lesser extent, but I’m lucky (or not) that I really see them 🙂 Many of these features are also useful in other professions, even completely unrelated to programming, so perhaps the best message for people who are entering the labor market or changing their professional preferences, is saying: “investing in yourself is the best investment”.