Computer Programmer Skills - Coding Skills That Nobody Teaches
Computer Programmer Skills - Coding Skills That Nobody Teaches

In this post I want to talk about skills that nobody teaches but they really make you a professional developer. And actually you can't find this knowledge in books or videos and a lot of students are constantly asking me for exactly these questions.

Architecture

And the question that I'm getting a lot is "How to make a better architecture" or "Can you make a video how to implement a better architecture?".

And the main problem is there are no videos or books with good architecture. Yes, you can find books about programming patterns, how you write code but you can't really find books about good architecture because essentially the skill of writing good architecture comes with a lot of years of experience.

But the most important point here is that you must always keep in mind that every feature you do you must try to implement with better architecture.

It won't be easy at the beginning but this is a goal because essentially you want to make every single solution that you implement really suitable to your needs, it must be scalable enough and it must have a good performance.

Only after you worked with 5-10 or 20 different projects with different architectures and you try to understand and improve architecture in every single of them, only then you will understand how to plan your architecture for the project better than before.

Field of expertise

Another important skill that is difficult to change later is your field of expertise. And I am talking here about complete environment where you are working. For example if you we are talking about web development or maybe frontend development, you typically work with Javascript, some frontend framework and maybe an API on the backend. This is your field an expertise.

And actually it can be really huge, you must master HTML, CSS, some frameworks, understand different patterns of Javascript, how different solutions are working like for example watchers, publish subscribe or maybe virtual DOM or single flow of data inside your state management system like for example Redux.

This is your field of expertise you can't really learn it from the book or in one video.

This is a lot of knowledge that you will learn only after hours and hours of working experience. This is why you don't see a lot of people who are changing their field of expertise. Yes, you can switch for example from web development to mobile or maybe to programming robots but the main problem is that the field of expertise will be changed almost completely. Yes some patterns will stay the same but you will need to learn quite a lot of new stuff inside the new field.

It is not just learning a language and a framework it is learning new solutions, tools and how to solve them and debug in the new environment.

Feel the code

The next one is really important but people are not talking about it a lot. And this is the feeling if the code is bad or good. And actually as a beginner you can't really understand if the code is good or bad because you didn't see a lot of code.

After some time you should be focused to get a skill to understand if the code is bad or good. This will help you tremendously to understand if this feature will be scalable enough, fast enough, do you really need to refactor it or the code is fine as it is.

And again here you must keep in mind this skill because you want to get it. For example if I see a solution that is difficult to understand and I can't really grasp what it is doing in 10 or 15 minutes I start to think that solution might be not that great. If I see some performance problems or it is really difficult to scale it then this is for sure bad code which brings us to the next skill.

Finding the best solution

And this is finding the best solution to your specific problem. You can't really get it from some book or video because you need countless amount of challenges that you already solved in order to understand what is the best solution for your problem. Sometimes you shouldn't pick a full blown framework if you just need several lines of Javascript code.

Or it might be that you should not refactor code at all because your project will be finished in 2 weeks and you should not change anything. Or maybe your solution should not be scalable at all because you are just using it in a single place and it won't be used anywhere else.

Finding a best solution helps you to work less because you will implement just a single solution and it will simply works and you will be much more efficient with your time.

Maintaining good habits

The next skill in the list is maintaining good habits. And actually you can start improving your skill here on any level.

I am talking about small but really useful habits when you are writing a code.

  • Is your code really clean?
  • Is the naming of all your variables really correct?
  • Did you implement the best possible solution for your current scenario?
  • Did you implement the feature in additional feature branch or in your main branch?
  • Did you create Pull Request or did somebody check your code?
  • Is it looking clean and tidy?

You must ask yourself all these questions every single day.

Then after some time you will get more and more habits that will help you to implement your code fast and efficient.

Refactor later

And additionally here I want to mention refactor later attitude. And I see it really in a lot of developers. People simply think that they can write bad code because today is release or maybe they can't make it on time. And they really think that they will refactor this code next week or in a month. But it never happens.

And then this bad code is written in the project like next 10 years. And maybe the whole application is slow just because you spend there not 1 day but just 1 hour. This is a really bad attitude that you must try to eliminate.

Bonus

And here is my bonus point here. You must be efficient with your tools. If we are talking about editor for example do you really know all hotkeys inside your editor or you really spend a lot of time by using you mouse? It is not efficient. Are you efficient with Git if you are using it every day? You must be efficient with your tools in this case you will be better as a programmer.

And actually if you are interested to know what are 5 tips to become a senior developer make sure to check this post also.