Overview Of: How To Stay Ahead of the Competition as an Average Programmer
I don’t breathe or dream code; neither I am an expert in data structure and algorithms. Comparing to the talents in the software industry, I consider myself an average programmer. However, even with the average coding skills, I have never stopped growing in my career.
With my sixteen years of experience, I have found no single definition of excellence in software engineering.
Being an average programmer itself does not impede your career growth. You can still outgrow your competition and achieve your goals if you are ready to put the effort in the right direction.
With that note, here are the steps that have served me well throughout my career. I am confident these actions can help the average programmers get maximum ROI on their effort and climb the success ladder by outgrowing their competition.
1. Understand Your Company’s Domain
Coding skill is essential to be a developer. As an average programmer, you are already better than many who code for a living. All you need to do is add the functional knowledge to your skill inventory to fasten your career growth.
I have a keen interest in learning the business purpose of every piece of code I write. I need to know the exact outcome of the feature and how the program will help the users. The knowledge of real-world usage helps me write the most straightforward code to meet the requirement.
Without understanding the end-use, I feel restricted while working on my assigned tasks. Hence, I put a lot of effort into gaining end-to-end functional knowledge. And it has worked wonders for my career growth.
If you work on an application from its initial days, it is easy to acquire functional understanding as you develop it release over release. However, I joined my current project five years post its inception. Hence, there was a lot of domain knowledge that I needed to learn on my own.
To start with, I deep-dived on getting to know the entities used for the applications. The database is the best place to begin in an existing system (as it is the least evolving part). Getting familiar with the core tables, their data, their relationships, and how they interact gave me the most long-term benefit for my efforts.
Once you know your data store, the next step is to understand the role the data plays in your application and for the company. You will be amazed at the number of business problems you can efficiently solve because you know how your functional entities behave today.
2. Build Your Confidence One Step at a Time
Self-confidence works wonders for your career. Learning new skills, completing assignments, building something new, etc., helps you strengthen your faith in your abilities. Hence, keep looking for opportunities to utilize your time appropriately.
For example, I always wanted to build an Android app. One night I woke up at 2 a.m. due to jetlag from my recent travel and decided to give it a go. Soon I found myself so engrossed in the project that I started spending my weekends and vacation time building the app. I finally published it in the Android store and maintained it through multiple enhancements.
It was a great experience for me to learn a new language and platform. It also reinforced my confidence that I can still pick up something new from scratch and work on it successfully.
You will need such small confidence boosts to motivate you when you are feeling low. It will reassure you that you can do anything if you love doing it. Pet projects can help divert your mind when your office work gets too monotonous. Hence, pick up a passion project that you always wanted to work on and get yourself started.
3. Be a Savior for Others and Make Allies
I like to help others at my workplace as much as I can. I have no problem staying beyond my regular working hours to help team members in different time zones.
Apart from getting the satisfaction of being helpful, it has multiple career benefits too. One, I get to learn a lot more by helping others. Two, continuously helping others builds trusted relationships within the organization.
In the software industry, your allies come to your help more than you realize. They can return the favor during application integration, defect resolution, challenging meetings, or even in promotion discussions (by giving positive feedback). If you know people and have helped them before, they will be happy to bail you out from difficult situations.
Hence, never hesitate to help others at your workplace. You don’t need to be an extraordinary programmer to be helpful.
Simultaneously, it might not be possible for you to be of help to everyone. But you can justify why you are unable to help. Being arrogant or repeatedly rejecting the requests as not your responsibility makes others think you are not a team player.
4. Bring Solutions to the Table, Not Just Problems
Your attitude towards challenges will make a much more significant impact on your career growth than your coding skills.
Over the years, I learned people value attitude more than any other skill. An average coder with a can-do attitude can be highly influential over an excellent programmer who sees issues in every initiative. Everyone in the company prefers to work closely and give opportunities to developers who have a positive attitude.
While working in a team environment, you are bound to face challenges. You need to follow company policies and processes that you might find hindering your productivity. You will have to work with people who slow down the team’s progress due to their poor contribution.
I used to have a lot of concern about the negative impact of inefficient people and processes. But with the help of my mentors and manager, I realized I needed to represent the issues in a much better manner.
Moreover, I learned how to focus on solving problems and not just raising them. Even if there are reasonable solutions, not every issue can be solved overnight. Hence, as a developer, you need to have a lot of patience to deal with people and processes to grow as a successful software engineer.
5. Collaborate To Grow Faster
“Collaboration is not just technical. It’s the cultural willingness to share and win as a team using the right technologies and the assumption that everyone can add value.”
— Wayne Kurtzman, IDC Collaboration and Social Media Research Director.
Collaboration is an excellent tool for developers to get visibility in the organizational setup. You don’t need to be an expert coder to collaborate. Hence, being an average programmer is not a constraint for successfully collaborating with others to expedite your growth.
If you are a quiet person by nature, then collaboration might appear to be quite a daunting task. You might feel shy of approaching people or engaging in group activities in your organization.
But I can assure you, with my experience, I have often seen the most constructive ideas come from the least assertive people in the meetings.
For me, it was not easy to push myself to change my behavior and start collaborating suddenly. This is where I took help from my mentors. I worked closely with them because I admired their contribution and overall organizational presence.
Over time my mentors introduced me to various people and forums in which I can learn and contribute based on my core strength. This is where my domain expertise and willingness to help comes in handy every time.
Soon I realized it is a rare skill in the software industry for programmers to have a solid understanding of enterprise-level functionality with a collaborative nature.
The idea of collaboration is to make your presence felt across the teams in your organization. You are not just a pair of hands that can write excellent code. You want to present yourself as an engineer who can contribute to the organization through multiple channels. This will build the necessary trust and rapport for your growth.
Perception matters a lot when it comes to career advancement. If people don’t see you, then they won’t know you. Hence, increase your visibility through collaboration. You don’t have to be an expert in data structure or algorithms to do it.
Some developers are good at programming, some are good at functional, yet others succeed by excelling at both technical and functional. For me, mixing things up worked out great.
Working with multiple stakeholders, understanding their problems, turning them into system designs, and helping teams implement the solutions keeps me motivated throughout the day.
The vital part is to discover what makes you happy as a developer. Spend your effort enhancing the skills that come naturally to you and gives you mental satisfaction. Those will be the areas that will provide you the most ROI on your efforts for building a successful software career.
Don’t worry about the speed at which others are growing. Everyone has goals of their own, and they are working towards achieving them at their comfortable pace. Your growth trajectory is unique to you. As long as you remain steadfast and put sincere effort into building on your core strength, you can succeed in your software career even with average coding skills.