My Journey as an Average Programmer: Embracing Mediocrity
Written on
Chapter 1: The Programmer's Dilemma
"How would you evaluate your skills as a programmer?"
This question often arises during job interviews, and I dread it because I know my response may not be what they want to hear. Should I fabricate a response? Absolutely not. I believe in being truthful. So, I take a deep breath, look the interviewer in the eye, and reply: "Average."
Indeed, I see myself as an average developer, and I’ve put considerable effort into achieving that status.
DON’T BE A DOJO CHAMPION
Having spent four decades in the IT realm, I’ve come to appreciate my pursuit of mediocrity. This mindset originated during my years as a martial artist in the 1970s.
In every dojo, there’s a champion—the standout fighter. At sixteen, I held that title, believing I was exceptional. However, when I began competing in tournaments, my illusion shattered; I realized I wasn't as remarkable as I thought, and in fact, I couldn't even claim to be average.
Motivated to improve, my initial aim became simply to reach the mathematical mean. I discovered several dojos offering open sparring sessions on Friday nights and Saturday mornings. Eager to learn, I immersed myself in these environments where participants aspired to excel.
Occasionally, newcomers would join our group, often boasting about their expertise. These dojo champions often found themselves outmatched in sparring and would disappear without a trace, content to remain mere pretenders. Others persevered, battling their way to mediocrity, eventually securing a spot among the county’s top fighters.
As for me, after striving to become average in that competitive circle, I was never the best, but that was perfectly acceptable because I knew I was making consistent progress.
Chapter 2: Learning from the Best
After transitioning into IT, I maintained my strategy of surrounding myself with challenging individuals. In the early 90s, as a developer specializing in RPG/Cobol, I managed to secure a role as a C++ Systems Programmer at ASNA, which provided various tools for the AS/400 market.
Before launching their new product, ASNA invited a renowned expert to evaluate their tools. A few months later, I learned from a writer connected to that expert that he remarked, "I’ve just met a half-dozen of the most brilliant developers!" I chuckled, responding, "Well, ASNA has seven developers, and I’m quite sure I’m not among that elite group."
The truth was, all my colleagues possessed master's degrees in Systems Programming. I found myself constantly learning from them, working hard just to be deemed average.
Section 2.1: The Power of Collaboration
I've experienced workplaces where many skilled developers existed, yet collaboration was almost nonexistent. In the late 90s, I joined a team of COBOL programmers. Initially, we operated more as twelve independent developers rather than a cohesive team, each tackling separate tasks.
Frustrated by this isolation, particularly since I lacked extensive COBOL experience, I initiated a collaborative effort, managing to engage about half of my colleagues in teamwork. The outcome? We completed our tasks more efficiently, enjoyed the process more, and gained immense knowledge.
You need two key factors to enhance your skills:
- Other programmers who challenge you.
- A collaborative environment that encourages skill sharing.
Once these elements are established, don’t forget to:
- Learn to ask for assistance.
- Engage in pair programming.
- Inquire about what others are currently reading or have learned.
Section 2.2: Embracing Vulnerability
It’s crucial to ask for help when needed. Post questions on platforms like Teams or Slack and arrange pairing sessions. If you’re met with silence, it might be time to reconsider your team. While asking for help can feel like exposing your vulnerabilities, as Dr. Brené Brown states: “Vulnerability sounds like truth and feels like courage.”
Remember, while it’s essential to seek assistance, equally important is to offer help when others request it.
Section 2.3: The Benefits of Pair Programming
Pair programming should be your go-to strategy whenever you need guidance, want a dynamic code review, or wish to observe someone else's workflow.
Section 2.4: Staying Informed
I utilize GetPocket.com for bookmarking valuable content and follow various tech writers on Medium. When I encounter interesting articles, I add them to my recommended list on GetPocket.
Chapter 3: What If You’re the Best?
There may be instances where you find yourself as the top coder on your project. Perhaps you have a well-paying position but feel stagnant. Here are a few suggestions:
- Consider Switching Teams: If you’re not evolving, your career prospects may dwindle. Explore opportunities in a different team, even if it means a pay cut. In the long run, it can be beneficial.
- Engage with Open-Source Projects: Delve into open-source code. I’ve collaborated with talented developers who explore the depths of code within Ruby gems.
- Mentor Others: You might be surprised at how much you can learn from junior developers. Remember, "To teach is to learn twice."
- Cross Boundaries: Transition from Java to Ruby, Windows to Linux, or MySQL to PostgreSQL. Such experiences will enhance your overall development skills. In the late 90s, I took a three-year break from coding to work as a full-time technical editor, which required me to stay updated with the latest technologies alongside top technical writers.
How’s your dojo?
The first video, "FFXIV 2023 Valentione Event + All Post-Quest Options," provides insights into the recent event and its various options, showcasing an engaging commentary style.
In the second video, "The Quest 3 is Leaving a LOT of AR Scan Data Unused," the discussion revolves around the underutilization of AR scan data in modern technology, offering critical insights into its implications.