How can I become an expert in programming software?

Interesting question that can be applied relatively well to other areas.The basics are basically always the same, only the design of the individual steps changes. The whole thing is not an A-Z instruction, but a thought support from all possible areas. I assume you start from scratch.

Find a topic you’re interested in

And I mean what you really care about.You will spend a lot of time on this subject. Let’s take some areas of software development:

  1. Operating system developers: Desktop, Mobile, Embedded Systems (also IoT).

Very hardware-close

  • Web development: Divided into front and backend development.
  • Probably the most volatile area

  • Robotics: Self-driving cars, cleaning robots, machine control, etc.
  • Games: 3D modeling, gameplay, rendering, etc.
  • Mobile: All kinds of smartphone apps (Android, iOS, Windows)
  • Data Science: A lot of machine learning, artificial intelligence, image understanding, augmented reality, etc.
  • Inform yourself about the topic

    Get a few books, fly them over.Read some web articles. Try a Hello World!program to have a start.Often individual steps when flying over appear to be “eh clear”. The reality is somewhat different. Suddenly you have to deal with environment variables, command line and the like. Often the adjacent areas are as challenging as the issue itself. Try to find mental models in the whole topic as early as possible. Let me take the example of calling a website (Http Request): The browser sends an Http Request to an address, the server responds with a status code and related information. If everything is in order, the code 200 or 2xx. If the server does not find the requested page, code 404 returns. If something else was not right, other status codes will come accordingly. The more mental models you find at this early stage, the better and faster you can learn.

    Search for a project

    Not just any project.I mean a project that creates a motivation from the inside out of you. Intrinsian motivation is a very important feature when learning a skill. Design your project on paper. Create sketches, click paths, possible user interactions. Where data is stored, how user inputs are checked, etc. Which processes exist (e.g. Registration > Automatic Email)? The more accurate your vision is, the faster you will know what you need to know.

    Set a focus

    Software developers are no longer a focus.The web development alone changes so rapidly that it is hardly possible to keep up and know everything. Programmers who were professionals in this field 3 years ago and have not done anything since, will have trouble getting a job. There’s way too much to catch up on in a week. You can find a glimpse of the whole thing here: How it feels to learn JavaScript in 2016 Hacker Noon

    Create space to focus on practice

    Block 3-4 hours every day as you work on your skill and project.Block this time. Defend you with your life. Turn off the mobile phone and the email program. There is the benchmark of the 10,000-hour rule. If you’re spending that time practicing one thing, you can call yourself an expert. Malcolm Gladwell described this concept interestingly in his book Outliers and gave many examples.So if you practice 4 hours, 5 days a week and deal with the topic, then after 9-10 years you have earned the status of an expert. During this time you will have a lot of knowledge in and around the area. Since we are talking about the very dynamic field of software development, you will also discard a lot of knowledge due to technological advances. More on that later.

    Implement a Fast Feedback Loop

    Nothing is more hindering learning than long delays.Our focus is like a squirrel. As soon as you have to wait 30 seconds for a result, your head starts to think about what you could eat, if there is something new on Facebook, etc. And suddenly it’s 20 minutes. Try to create a process to quickly learn yours and check your progress.

    Find a mentor

    A mentor is someone who is already further than you in this field. He doesn’t have to be an expert, but someone who is at least on your level.At least at your level means that it has similar goals. As a rule, one knows more than the other in some places and can provide feedback on solutions and problems. Things like code reviews help to avoid dangerous stumbles. You learn together.

    Become a mentor

    The point before has already touched it a bit.As soon as you start explaining your knowledge to other people, you will notice where you still have gaps and how unstructured your knowledge is. After a few attempts, you will notice that your thinking is becoming clearer and more focused. Write articles, give seminars, explain things to newcomers that they don’t understand. Search analogies in real life, try to find mental models and present them in a structured way.


    I have already written it: Software development is a very volatile area.I don’t want to touch what I did four years ago today. Frameworks that I learned 2 years ago are no longer in demand today. However, it is the concepts and mental models that also use the new frameworks. The longer you stay on the ball, the more of these concepts you will learn over time and the easier you will be to jump on new technological traits.

    Of course, you could write a lot more, but there is also further literature from people who have been very intensively involved in the topic of learning:

    • Malcom Gladwell Outliers
    • Josh Kaufman The first 20 Hours
    • Scott H. Young Ultralearning
    • Gary Keller The One Thing
    • Tim Ferriss The 4-Hour Chef

    Leave a Reply