Do you often come across advice to grow as a software engineer? I know what you're thinking and you're probably right! This is because it is easier to teach how to crack a coding interview.
In fact, in a recent study, it was found that by 2030 India will have more Youtubers teaching about software engineering interviews than actual people writing software. 😅
However, if you're reading this chances are you have ambition, you have grit, and the willingness to grow as a software engineer. All you need is a direction and some mentorship.
No matter at what stage of your software engineering career you are at. When it comes to your performance, the below mentioned framework will always be helpful for you to assess yourself and grow as a software engineer. Let's dive into the first C.
It is refers to the areas surrounding your technical skillset that you use as an individual contributor to execute and deliver your day-to-day tasks. This helps answer the following questions about you. While the particular frameworks, languages and tools that you work with would depend on what type of software you are writing and the stack you are using. Here are six questions you can answer to assess your craft today and find growth areas.
How to Evaluate my Craft?
- How much grasp do you have on the architectures and design patterns in your domain?
- How easy it is to understand your code?
- How well does your code scale?
- Do you write tests for your code?
- How often do you accrue and pay the technical debt?
- Do you often think about privacy, and security when implementing technical solutions?
The list goes on but I believe you get the idea. Now the thing about craft is that it can be improved and mastered over time. Out of the four C's to grow as a software engineer, this one is the fastest one to improve on and see the results.
It refers to the process of transferring information from one place to another. It can happen in various forms like written, visual, verbal, or non-verbal. Often times it is a combination of these.
A few examples of written communication for a software engineer would be technical design documents, status updates on Slack, e-mail, or other apps, blog posts, and proposals for different types of initiatives.
Presentations, High & Low-Level Design Diagrams, Architecture or State Diagrams, Flow State Diagrams, charts, and graphs would be a few ways to communicate your ideas visually.
Verbal communication would involve the use of voice to either speak to an individual, a group of people, or a large audience either virtually or in person.
Non-verbal communication covers things like body language and gestures during meetings or gatherings with other people.
In order to grow as a software engineer, it is important that you learn to effectively communicate your ideas.
In fact, this is one of the biggest challenges for people in tech especially for the ones whose native language is not English* and also the ones that have an introverted personality.
Below are six questions to assess your communication skills quickly.
How to Evaluate my Communication Skills?
- Do you ask the right questions when trying to solve a problem?
- Do you actively listen to others?
- Do you voice your concerns and opinions with your peers in a constructive and respectful manner?
- Do you know how to ask for feedback and leverage it for your growth?
- Are you able to articulate your thoughts in a clear and concise manner?
- Are you able to read non-verbal cues?
Unless you are debugging with a rubber duck in your hand. Most of your communication would involve another person and that brings us to our next topic.
It refers to the process of multiple people, teams or organizations working in conjunction achieve a goal. While most movies portray software engineers as lone wolves. In reality great software products are only a result of amazing collaboration between various stakeholders. This could be a just a bunch of software engineers or a fully cross-functional team of software engineers, designers, product managers, data scientists, and copywriters as an example.
It doesn't matter if you're an expert on LeetCode or if you know 10 different programming languages, 5 different frameworks or live your life in the terminal. If you want to grow as a software engineer, you should be someone who is easy to work with, someone your teammates can trust and rely on.
Simon Sinek teaches a great lesson on Trust and Performance with respect to Navy SEALs, watch here:
When trying to assess your collaboration skills ask yourself these five questions.
How to Evaluate my Collaboration Skills?
- Do you think your teams and manager can count on you?
- When disagreements happen in your team, are you able to resolve them effectively?
- Do you help your team achieve resolutions and improve outcomes?
- Are you able to work with people from different cultures?
- Do you know how to surface risks and issues within a team respectfully?
Up until here, everything should have sounded familiar as we learn about these things one way or another during our high school and/or college. The next section discusses something no one really teaches you as this requires a lot willingness and curiosity to learn.
This is my favorite part of the framework. It refers to the ability to understand and reason the business value of the work you are doing. You see every product that is built for profit aims to generate income one way or another. It doesn't matter if you built that product with 50 lines of code or 5 million lines of code. As long as it generates sustainable income and is growing, everything will be hunky-dory. The day the music stops a.k.a the cash flow starts to drop or dries out completely. There is no product, there is no business and there is no need for your code.
So if you want to grow as a software engineer, you must know how to make decisions that deliver a positive impact on your business. The ability to reason what matters the most today is what'll set you apart from others.
If you've never thought this way about things before, it is okay! I learned about this 4 years after I started developing apps. Ever so grateful for the opportunity that I got to work at Booking.com, it changed my perspective towards code, product and business.
Frankly speaking, this used to be the most frustrating part at times, when doing my self-evaluation. But the more mentoring I got around this and the more I read why it matters, I realized that this is the real deal!
Want to know how commercial aware you are? Answer the six questions below
How to Evaluate my Commercial Awareness?
- Before you start a project, do you try to understand why you are doing it?
- When ideating on features, do you keep the customer at the center?
- Do you proactively try to learn about the impact of your work after it is delivered?
- Do you know what Minimum Viable Products are and how to build them?
- Do you know how to quickly and efficiently validate ideas and hypotheses?
If you've found this article useful and want to take action, I've created a Notion Template for you and the best part is that it is absolutely FREE!
Use the template to easily assess yourself and find what areas you want to grow in!
Before you go, let's connect with each other on Twitter!
* Since the majority of developers in the world communicate in English when dealing with software development, I mentioned English as a native language. in the example above. I'd like to acknowledge that there are countries & companies where English is not the preferred mode of communication.