Are you feeling "stuck"?
You want to level up as a developer.
But, you don't know how.
In software, success takes dedication and hard work.
Use these 5 tips as a guide to Senior level:
A solid understanding of programming will serve you well into your career. You must become familiar with data structures, popular algorithms, and design patterns.
Programming fundamentals are particularly critical for self-taught software developers.
With each project, you will naturally develop a "feeling" for good code. Where you can cut corners and where you can't.
To be extraordinary, you will need to go the extra mile.
At your first job, you will probably start with one framework and project. Moving up the stack, always keep in mind the T-shaped professional.
Become an expert in a specific area. Then, make an effort to become more technology agnostic.
If you are a front-end developer, build some "full-stack" projects. If you are a backend developer, make a small piece of UI.
Explore the possibilities of different languages, frameworks, and technologies.
I recommend reading classics such as The Pragmatic Programmer and Clean Code. They will teach you about code hygiene, concepts like KISS, DRY, and how to write clean, efficient programs.
Pro-tip: negotiate a learning "Friday". Approach your manager and propose that every Friday, you will use some hours to learn something new. They will most likely say yes :)
Communication is still one of the most is underrated skills in software engineering. Probably due to the long-lasting cliche of programmers being "awkward and grumpy".
Half of your job is to communicate what you do. You will participate in pair programming, grooming and planning sessions, demo meetings, and retrospectives—both verbally and in writing.
It can be a piece of code, feature, or a team issue, including technical and non-technical stakeholders.
Your success is tied directly to your ability to communicate.
Communicating technical solutions, measuring the pros and cons without losing your audience is hard. It means knowing how to disagree, how to receive feedback, and how to give feedback back.
Communication is not a "soft" skill anymore; don't take it for granted.
Pro-tip: use every opportunity you get to present and speak in public. Help writing stories, READMEs, documenting code, and technical decisions. And why not put some of those learnings in a blog article like this one.
The high degree of specialization in software means most projects need a team to succeed. You succeed when your team succeeds.
In software, lone-wolfs don't make it through the winter.
Your team will consist of diverse individuals with different goals and contexts. Focus on understanding other people's backgrounds, expectations, and communication styles.
Ask yourself: how can I enable my colleagues? What do they expect from me? What are their goals?
Something is exciting and unique about every individual in your team. Find out what it is, be empathetic and genuine. Get to know people on a personal level.
Teamwork is about trust, empathy, and alignment.
Learn how individuals can enable each other, working "with" and not "besides" to deliver on a higher level.
You are not perfect, don't expect others to be so.
Pro-tip: It is not about you anymore. Change your mindset when it comes to teamwork. As lectures, I can recommend The 5 Dysfunctions of a Team and Tribal Leadership.
Networking means that people that know about you and people trust you.
You worked so hard on improving your skills, and it is time to give visibility to what you have achieved. Developers are often awkward, and "networking" is drowning.
Get past the shyness.
The best opportunities I've got came through my network.
Advice on new technology, recommendations, life long mentors, and job opportunities all are easier to get through your network.
Help everyone you come in touch with, and good things will happen.
For starters, you can have lunch every week with someone you work with or admire.
Your network is your platform for change.
Start creating connections now.
In COVID-19 times, it is easier than ever as everyone is willing to help, and distance is no longer a barrier.
Get involved in the community and always give more than you take.
Pro-tip: Connect with like-minded developers that care about their professional image. Use Twitter, GitHub, Medium, LinkedIn.
It is easy to throw yourself at things, whether it is finishing a project or learning a new technology, or even writing an article.
I've been struggling to find balance ever since I started.
And I've burned out more than once.
As stress accumulates, it will damage your career and personal life.
Exercise, nutrition, and a well-deserved break from time to time will keep you going in the long run. Create a weekly sports routine and stick to it.
You are in for the long game.
Listen to your body and take a break from time to time.
Pro-tip: know thy self. Learn time management techniques. There is a ton of great literature on the topic such as Getting Things Done by Paul Allen and Deep Work by Cal Newport.
Success in software is a mindset and a habit.
Curiosity, continuous learning, and a passion for discovery are your fuel in such a fast-paced industry.
Time will come when you will have to give back, but that's for another post :)
What are your tips on leveling up?