What is your competence level as a software developer? To answer this, I come up with a simple framework that I call 'The framework of Competence'.
Being a software developer is a journey. In each journey, you are on different stages. So this framework will tell you at what stage you are in your journey.
Also, this framework is helpful in getting you out of overwhelm. In a programming career, you hear about new tech, frameworks, languages quite often. This can be overwhelming for junior developers. But when you know how will you look like after some experience then you will not feel overwhelmed.
This framework is not here to demoralize you. Once you know where you are you can easily plan your next move.
Stage 0: You are not a programmer-- obvious.
Stage 1: You can develop in a scripting language.
Stage 2: You are acquainted with writing apps in a real programming language.
Wondering what is the difference between scripting and programming language. Look at the answer in this post.
Easier than scripting languages are markup languages--examples are HTML and CSS.
Stage 3: You can write complete apps in a programming language and can design a simple API.
Stage 4: You have a complete grasp on developing API and you can write optimized code for the hardware.
Stage 5: You develop operating systems and drivers.
This is a very simple back of the napkin paper framework that you can use to identify your capabilities.
Use this framework when you see a more skillful developer. With this framework, you will know that you can get to his level of expertise or even ahead but it’s just a matter of time and hard work.
If you like this post then get the step-by-step guide to create your personal tool for fighting impostor syndrome.
This guide will help you to:
- Document your progress
- Make better software task estimation
- Keep motivated
- Authentic self-appraisal
This post first published here.
Single Responsibility Principle (or SRP) is one of the most important concepts in software development. The main idea of this concept is: all pieces of software must have only a single responsibility.