I originally posted this post on my blog a long time ago in a galaxy far, far away.
You don't need to meet your mentors.
I read that Napoleon Hill, the author of "Think and Grow Rich," talked to his mentor only once, and he said it changed his life.
At dev.to, we have a Mentor Matching Program. Here's the May 2024 Edition.
Mentor Matching — May 2024 🤝
Michael Tharrington for The DEV Team ・ May 14
I'd be happy to share some advice over a virtual coffee in an "ask-a-friend" style. But to preserve my keystrokes and help more than one person, here I go.
I'm writing for my 20-year-old self joining his first corporate job, pretending that talent was a shortcut to break the rules of the corporate world. I thought my first job would be like in a Silicon Valley startup, working barefoot and sliding between offices. It was far from that.
This is free Internet advice, so handle it with care.
If you could take away only one lesson, take this first one,
1. Learn It and Teach It
"The moment you learn something, teach it."
That's from the book Show Your Work by Austin Kleon. "A book for people who hate the very idea of self-promotion."
Teaching is the most effective way to learn. When you teach what you've learned, you consolidate your learning and, if you choose to teach online, you start building an online brand.
If you're still here for more lessons, let's continue...
2. Google "How To Be a Good Developer"
I remember doing this exact same search, back in the early 2010s when I started my journey.
I remember finding "write technical specs" and "learn functional programming." It gave me ideas and subjects to explore. That's why I've always had Functional Programming in the back of my head.
I'd tell my younger self to do it again.
Google or DuckDuckGo or Bing "How to be a good developer" and see how deep the rabbit hole goes.
Be careful, you will find one post saying "Document your code" and another one, saying "Don't document your code." Separate the wheat from the shaft.
3. Practice a Lot
The barrier to entry into the coding world is low, and lower and lower with every day that passes.
Anyone can potentially start, but getting good at it takes years.
Another googling task: search for "Teach Yourself Programming in Ten Years."
Start by writing an end-to-end project: a coding project that reads data from a webpage, calls a backend, persists data into a relational database, and displays it back.
You will learn a lot from this simple exercise. HTML/CSS, a UI library, HTTP/REST, a backend language, SQL, and a database engine. Quite a lot!
I can't remember how many hours I spent coding a recipe catalog back in the day with PHP and MySQL.
4. Master the Fundamentals
Frameworks and libraries come and go.
Study subjects that stand the test of time. Design patterns, data structures, and SQL, for example.
For some reason, we're still talking about stoicism thousands of years later.
Probably in the next decade, we will still be writing code on text files, using some flavor of Unix/Linux, and writing SQL. I wouldn't bet all my money, though.
5. Invest in Your Soft Skills
You won't be locked in your basement coding. This is a collaborative endeavor.
You will spend most of your time communicating and collaborating: 1-1s, estimations, and SCRUM "ceremonies."
Invest in your soft skills. Start by reading "How to Win Friends and Influence People." My biggest takeaway from that book is never telling someone is wrong.
6. Read the Clean Code
This is the book we all start with.
It opened a whole new world for me. Nobody taught me about good variable and function names until I found that book. I even remember one of my teachers using stu1
and stu2
as variable names during classes. Uncle Bob would be pissed by those names.
Don't just read it. Study it.
But don't become a Clean Code police officer issuing infractions around you and using your book copy as your baton. There's always a tradeoff.
7. Ask Yourself What You Want
Start by experimenting with roles and tech stacks. You will find the one that you like the most.
I started writing PDF reports by hand, drawing lines and cells, one pixel and line at a time. I don't do that anymore, by the way. Then, I did a bit of mobile development with Xamarin and frontend development back in the day of Bootstrap and Knockout.js. Eventually, I got tired of styling and coloring issues and moved to backend development.
Ask yourself what you want out of your career. Is it money? Connections? Growing your own business? Write a 5-year plan and be willing to correct the course. "No plan resists contact with the enemy" or reality, I prefer to say.
8. Climbing the Corporate Ladder Is a Myth
You don't control anything about the ladder you climb. Anyone can add a new step or replace the entire ladder, at any time.
Software Engineer I, II, III, IV, V...Wait! Now it's Code Ninja I, II, III, IV, V…
You will hit a point of diminishing returns and a glass ceiling as a software developer.
I'd tell my younger self eager for a fancy title: a new title comes with more meetings, extra hours, and the same salary.
Instead of optimizing for a title, optimize for a lifestyle. The best ladder to climb is the one you build for yourself.
Takeaways
Voilà! That's what I'd tell my younger self. I hope I haven't discouraged you. Software Engineering is a great career. It's the future. Well, that's what I've been hearing for quite a while.
The most satisfying thing about this career is seeing a smile on your users' faces when what you code helps them save hours of repetitive work.
For more practical advice...
- If you're taking the self-studying route, I wrote to answer a reader asking how to start an ultralearning project to become a software engineer.
- If you're studying C#, I wrote a guide with what I believe every C# developer should know.
- Also, I challenged myself to learn enough React in 30 days. Probably by the time you read it, there will be a new React version doing everything differently. And, if you're studying Golang, I studied enough Go in 30 days too.
Join my free 7-day email course to refactor your software engineering career now.
See you around and happy coding!
I could go on and on. But I'd only say "the moment you learn something, teach it". That's a quote from "Show Your Work" by Austin Kleon