This Is How I’d Pick My Software Engineering Career If I Had to Start All Over
#7 Unleash your transferable skills
If you prefer to watch, there is a video version available here.
Last July, a computer science student dropped me a message with a question that really got my wheels turning:
“If you could go back in time and kickstart your career all over again, what mistakes you wish you could avoid, or things you want to do differently?”
As I sit down to reflect on my journey through the fascinating world of software engineering, I can’t help but be intrigued by this simple yet profound question. Starting out in any career can be a wild ride, but it’s also a thrilling adventure filled with opportunities to learn and grow.
Today, I’m excited to share the insights and lessons I’ve picked up over 17 years in this field. So, grab a comfy seat, and let’s dive into the lessons I’ve learned and the transformative moments that have shaped my career and my life.
1. Learn from the Masters
In my early years, I had the chance to work and pair programming with nerds who exceeded my expertise by leaps and bounds. The knowledge I gained from them has since proven to be the cornerstone of my success.
Since then, I’ve encountered two types of people in my numerous projects: those who surpass my expertise and those who look up to my skills.
When working with colleagues who know less than you, embrace the chance to mentor and guide. It’s not just about showcasing your technical prowess, but also fostering collaboration and camaraderie. This is one facet of growth that deepens your understanding of the subject matter.
From those more skilled than you, absorb knowledge humbly. While it might dent your self-confidence temporarily — because you know less than them, the wealth of wisdom gained is invaluable.
2. Get to Know the Topic Before Making a Point about It
Let’s take a little stroll down memory lane to 2006 now. It was the year when I freshly minted my diploma and got an invitation to a job interview at ST Microelectronics, a multinational tech company that many aspiring engineers dream of.
Back then, my knowledge basket was filled with a mix of C/C++, Ada, Java, and a sprinkling of HTML, XML, and CSS, among a few other technologies gathered during my studies and internship.
So, when the interviewer asked me, “Are there any fields or technologies you don’t want to work with?” I didn’t even blink before saying, “Web development.”
Fast forward to today, and I can’t help but chuckle at my naiveté.
Why?
Because I’ve dedicated the majority of my career to web development. I’ve found great pleasure in database management, and working with Java and the Spring framework. But alongside that, I discovered immense joy and fulfillment as well in working with Frontend frameworks like Angular.
You see, back in 2006, JavaScript and the realm of HTML weren’t quite the head-turners they are now. As a junior, I was so proud to be a Java developer — that prestigious language. Little did I know that just a few years down the road, JavaScript would turn the table, and a significant part of the backend community would make the leap to the client side or transform into full-stack developers.
The takeaway from this story is:
Embrace the unpredictability of your career path. It might lead you to unexpected places, but those unexpected destinations can be incredibly exciting.
3. Review Code with Compassion
Code reviews are a cornerstone of our development process. You need to do it with a human touch and critique code constructively and respectfully.
This ability is an art that sets apart exceptional engineers and helps teams to grow instead of ending up with unneeded conflicts.
I really love Michael Lynch’s enlightening talk on this topic and see it as a must-watch for every developer. In his speech, Lynch shared lessons learned from working at Google and Microsoft, where code reviews are treated as first-class citizens.
4. Debugging
Debugging and troubleshooting are the daily bread of a developer’s life. Equip yourself with the knowledge and tools, whether it’s using your integrated development environment (IDE), chrome DevTools, or even AWS CloudWatch, to navigate these challenges effectively.
Your ability to diagnose and resolve issues swiftly is a hallmark of a software engineer’s expertise.
5. Master Postman
Becoming a master of Postman is like having a powerful Swiss army knife in your toolkit in the API-driven world.
Throughout my career, the seamless integration of Postman into my workflow has streamlined API development and testing and enhanced my productivity and efficiency.
6. Command Docker
Mastery of Docker is more than just a skill; it’s a strategic advantage in modern software development. It simplifies deployment, ensuring that your applications run smoothly across various environments.
Your proficiency in Docker allows you to orchestrate complex deployments with ease, and earn the trust of both your colleagues and employers.
7. Unleash Your Transferable Skills
Identify and harness your transferable skills, such as problem-solving, communication, and leadership abilities. These talents open doors to a world of opportunities across different industries and roles.
The power of these skills helped me in effecting positive change, whether it’s solving complex technical challenges or leading projects to success.
8. Embrace the Learning Journey
Starting anew requires a willingness to learn and adapt to new challenges. Embrace the learning curve with patience and perseverance.
Remember, significant career growth can be both rewarding and demanding. Take the time to plan and research thoroughly to ensure you make a well-informed decision.
I started my career as a Java developer and then became a full-stack developer.
After that, I gathered some knowledge of cloud computing in recent years.
And since over five years, I started sharing my knowledge online, which helped me to improve my communication skills, connect with the community, and grow my business network. This shift has brought new opportunities.
To sum it up, my own career transformation was marked by continuous learning, a dedication to honing my craft, and looking for new exciting challenges.
9. Persuasion & Conflict Management
Ever found yourself in a situation where you’re itching to steer your team toward adopting a Monorepo, upgrading to the latest Java version, or making the leap from Maven to Gradle?
Maybe you’ve spotted some limitations with AWS SQS and are eager to showcase how Apache Kafka could be a game-changer for your project.
Or perhaps it’s high time to tidy up some messy code through refactoring, but not everyone’s singing the same tune. Oh, and don’t get me started on the chaos of managing a fleet of tiny services when there’s a better way out there.
Throughout my career, I’ve navigated countless discussions and disagreements. And these are the moments when your brilliant improvement ideas come face to face with the raised eyebrows of your colleagues.
In any collaborative environment, differences of opinion are as common as lines of code. It’s easy for discussions to heat up, emotions to run high, and, before you know it, you’re in the midst of a never-ending debate with no clear action plan or happy ending in sight. That’s why mastering the art of persuasion without taking things personally is a superpower you’ll want in your toolkit.
The key is to maintain open, constructive communication and prioritize finding solutions that align with the team’s and the project’s goals.
Having great communication skills and the ability to detach a bit from your ideas and work can help you keep your cool and prevent disagreements from turning into emotional showdowns. Remember, it’s not about winning or losing. It’s about finding a solution that the team agrees on even if it wasn’t the one you envisioned.
10. Choose Your Close Environment Wisely
Your software engineering career isn’t just about you and your laptop.
Whether they are friends or partners, the people surrounding you play a big role in building a successful journey. They can influence your choices and motivation. They can inspire you to pursue new goals or push you toward different paths that do not align with your values, potential, and passions.
It might take you years to fully grasp this reality if you’re not conscious of it from the outset.
The company you keep can be the wind beneath your wings or the anchor that keeps you grounded.
11. The Grace of Assertiveness
I get it — life often throws you into situations where choosing your surroundings isn’t always an option.
Maybe you just landed a job at a new company, only to find that your team isn’t quite the dream squad you envisioned. So, what’s the play here? Is it time to wave the white flag of resignation?
Well, that’s a valid option, but it’s not always the most practical, especially if your financial stability and job history are at stake. So, let’s explore an alternative approach.
My friend, here is the thing: Boundaries.
These magical lines, both in your professional and personal life, are the guardians of your time and energy. And you, as an assertive soul, possess the superpower to gracefully sidestep distractions that threaten to dilute your potential.
It’s a skill that empowers you to focus on what truly matters and channel your efforts to flow into profound growth.
12. The Art of Decisiveness
I used to be quite the indecisive soul, frozen in my tracks by the fear of taking that leap into the unknown. But when I look back now, I see that some of the most profound growth in my journey came from conquering those fears and embracing uncharted territories.
There’s a little dark secret about being indecisive, though — it can lead to a cluttered landscape in your software projects.
Imagine holding on to unused blocks of code, turning them into nothing more than cryptic comments, instead of cleaning up your codebase.
Or keeping a multitude of browser tabs open, each one brimming with valuable content you promise yourself you’ll read when you “find the time.” Spoiler: that time might never come, and those tabs will haunt you.
Each day you glance at your screen, you’re greeted by a parade of undone tasks, unfinished projects, and the weight of those neglected tabs. It’s a recipe for guilt and frustration.
“The road to hell is paved with works-in-progress.” ― Philip Roth
So, whether you’re a junior developer or a seasoned pro seeking wisdom, my advice is to be fearless in your choices.
13. Content Creation Takes You to a New Level
Ah, content creation — the realm that fascinates my heart and ignites my passion.
If only I had ventured into this world earlier! As I look back, I’ve come to appreciate the immense value of creative expression and the sheer joy of sharing knowledge.
Through content creation, you can give voice to your thoughts and ideas. You can bridge gaps between cultures and connect with individuals across the globe.
Speaking from my own experience, networking has been nothing short of transformative, especially over the past four years. It connected me with mentors, collaborators, and innovators who have inspired me and enriched my journey.
The beauty of it all?
It’s never too late to embark on a new creative voyage, hand in hand with your coding endeavors.
Final Thought
As you stand at the threshold of your software engineering adventure, remember this: It’s not just about reaching the destination; it’s about savoring every twist and turn along the way.
With an open heart, dare to embrace the unknown.
Nurture your skills like the precious seeds they are, and
Let your passion be your guiding star toward a fulfilling and dynamic career that’s as dynamic in this ever-evolving field.
And as you navigate this incredible journey, always remember the wisdom of Anthony J. Yeung:
“In life, it’s not your IQ; it’s your EQ (emotional quotient) that determines your success. (Soft skills are far more valuable than hard skills.)” — The 10 Most Important Life Skills Nobody Taught Me
My Recently Published Content
Articles & Videos 🎥✨
5 Surprising Links Between Public Speaking, Mindset-Transformation, and Personal Growth
40 Years of GNU: What Did the Software Engineering Industry Learn from It?
How CSS overflow-hidden Can Break Down Your Layout? —> 🎥 Video
From Bytes to Insights: The Essence of Diffing Algorithms in Change Detection —> 🎥 Video
Angular FormArray Tips for Smoother Web Performance: Event Listeners —> 🎥 Video
Code Duel: ChatGPT vs. Human Genius in the Programming Arena —> 🎥 Video
How to Check If 2 JavaScript Objects Have the Same Reference in Memory 🎥 Video
Want more?
Join 30K+ students and enroll in my Udemy video course: Web Performance 101: Your Guide to Boost Your Web Apps