Since I started working as a software developer almost five years ago, I've significantly improved my skills. Working on different projects, designing complex applications, and solving tricky bugs are just a few of the experiences that helped me grow in this field.
Although I find myself in a good position, I'm still looking to move to the next level in my career. That's why I want to share the practices that I believe have helped me (and may help you, too) improve my skills and knowledge in software development, ultimately making me a better professional.
The following seven points are personal recommendations for becoming a high-level software engineer or architect. They are based on my own journey but may apply to you as well.
1. Get a Certification
Certifications aren't as essential as they once were—you can land a position in a well-known company without one. Still, they can give you an edge when applying for a particular role.
For example, if you're applying for a Node.js developer position, having a certification in that technology can help differentiate you from the thousands of other applicants.
⚠️ Important: Being certified is not a guaranteed ticket to getting hired. What truly matters is practice and mastery of the tool. A certification should represent your skills, not replace them.
2. Study the CS Fundamentals
This is something I learned over time: computer science fundamentals rarely change. They are used across frameworks, languages, and platforms. That's why learning them is one of the smartest investments we can make as developers.
Some highly recommended topics include:
- Design patterns — Reusable solutions to common problems
- Algorithms and data structures — Foundation of efficient code
- Secure software design — Building resilient applications
- Relational and non-relational databases — Data management mastery
Key insight: If you're not comfortable with these topics, that's the first step to significantly increasing your ability to build and understand software.
3. Improve Soft Skills and Communication
Once you master the basics and your role becomes more leadership-focused (team leader, senior developer, etc.), you'll realize that it's not just about coding anymore. Skills like empathy, mentoring, and conflict resolution become part of your daily toolkit.
For these kinds of roles, communication is key. You need to confidently and clearly:
- Explain decisions
- Gather requirements
- Interact with both technical and non-technical people
Reality check: We often focus only on hard skills, but soft skills are equally—if not slightly more—important.
4. Be a Fluent English Speaker
Whether you're from Latin America (like me) or any other non-English-speaking country, you must accept that English is essential. Have you noticed that programming languages, operating systems, and documentation all use English? That's no coincidence—software development depends on it.
English is also the common language for communicating with global, multicultural, and remote teams.
My advice: Improve your fluency, reading, and writing as much as possible. It's absolutely worth it.
5. Become an Expert in a Specific Field
By "field," I mean a technical domain where you develop deep expertise. For instance, you might:
- Specialize in video encoding → Video Encoding Expert
- Focus on penetration testing → Secure Software Developer
- Master machine learning → ML Engineer
That's far more valuable than presenting yourself as just another Java developer.
Example: If you're applying to Spotify, showing expertise in audio streaming will give you a big advantage over other applicants.
6. Understand the Big Picture
Beyond coding, ask yourself:
- Why are we using certain technologies?
- How does the company make money?
- What assumptions do we make about users?
Impact: These are vital questions. By understanding them, you'll make a bigger impact than simply completing tasks.
Understanding the big picture allows you to make better decisions and propose features that improve the overall user experience.
To do this, you need to understand:
- Software architecture — System design and patterns
- The company's industry and business model — Market context
- DevOps pipelines and practices — Deployment and operations
7. Never Stop Learning
Last but not least: always keep learning.
This industry evolves quickly, and we must keep pace. You don't need to master every single new framework (that's impossible, especially for frontend developers 😅), but you should:
- Stay aware of major changes
- Assess their pros and cons
- Adapt when necessary
Key traits: The ability to learn quickly and maintain a lifelong learning mindset are the traits that will keep us relevant in the market.
Final Thoughts
This isn't the only path to success as a software engineer, but it's the one I've chosen. I've collected these ideas because I believe they're useful for any intermediate developer looking to grow.
Spotted a typo or have a suggestion? Send me a note.