Mahdi's Engineering

Developing self-confidence as a software engineer

2 min read

Laying down the knowledge foundation

Understanding your knowledge involves breaking it down into four parts:

1. Things you know that you know (Known knowns)

You've got a solid grasp on certain aspects in your field. These are the things you've done before, have a track record of success, and can easily replicate. Your confidence in these areas is based on proven experiences and successful projects, making them feel almost second nature.

2. Things you don't know that you know (Unknown knowns)

Intuition plays a role here. It's the ability to leverage your past experiences and knowledge to navigate unfamiliar territories. For instance, if you're familiar with queue data structures, trying to understand something like RabbitMQ becomes less daunting because you can draw on your existing knowledge.

3. Things you know that you don't know deep enough (Known unknowns)

These are the areas where you've heard about certain concepts but haven't invested enough time to gain a deeper understanding. To tackle these:

Use Eisenhower Matrix for Efficient Improvements

Prioritize your knowledge gaps based on urgency and importance. Concentrate on high-importance concepts within your expertise, going deep to enhance your skills efficiently.

Going deep

Opt for deep work over shallow work. Proficiency isn't accidental. it comes from intentional, deliberate and focused practice. Delve into your known unknowns with deliberate efforts to deepen your understanding.

4. don't know that we know (Unknown unknowns)

There's a vast realm of things you're not even aware of not knowing. Exposure is the key to reducing these unknown unknowns. Immerse yourself in tech books, explore new concepts, and keep up with emerging technologies. The more you expose yourself, the more you uncover what you don't know and need to know.

The competence-confidence loop

Engaging in tasks that initially seem intimidating is crucial. Success or failure, each experience contributes to personal growth. Recognize that failures are stepping stones to success. Through this continuous cycle, not only do you become more competent, but you also boost your confidence as a software engineer. Remember, the key is to keep growing and evolving.

Competence creates confidence and confidence helps you become more competent. This is a positive feedback loop you can leverage to go to the next level in your career, as a software engineer.