This article was originally published on Medium.
Let’s be real — becoming a skilled, professional software developer is no easy feat. It takes years (sometimes decades) to truly master this craft. Without a deliberate effort to grow daily, it’s easy to get stuck in the same place, falling behind in an industry that evolves faster than any other.
That’s why I’ve adopted these five practices. They’ve helped me sharpen my skills, stay current, and cultivate a mindset that’s always evolving.
1. Feed the Hunger 🍽️🔥
What do I mean by “feed the hunger”? To grow as a software developer, you need more than just a job — you need a genuine curiosity for the craft. I call it hunger. It is the desire to explore new programming languages, dig into architectural patterns, experiment with frameworks, absorb new ideas, etc.
Every day, I attempt to feed this hunger by either:
- Reading blog posts, technical articles, or software-related books
- Writing blog posts like this one (teaching is learning!)
- Exploring source code on GitHub
- Solving coding challenges
- Learning new tools and methodologies (e.g. testing methodologies, diagramming tools, etc)
Whether it’s 10 minutes or an hour, I noticed that consistency matters more than time. Keep feeding that curiosity, and it will reward you with growth.
P.S. I added links in the list above to hint at what I’m currently exploring.
2. Code Like a Chef 👨🍳💻
Yes, I’m comparing coding to cooking — Oh god, another food metaphor. I must be hungry. Let me grab a sandwich. Okay, back. The goal is to approach code like a Michelin-star chef: with planning, care, creativity, and the occasional Gordon Ramsay scream (internally, of course).
Let’s start with planning. Like chefs prepping ingredients the night before, I reflect on challenges before bed or in the shower. Oddly enough, solutions often bubble up when I’m not actively coding. This tiny habit helps me fruit ideas of how I can approach the challenge when waking up tomorrow. This gives me a head start the next day, armed with fresh ideas and a pinch of optimism.
Regarding care: Just like chefs carefully follow a recipe, I keep software requirements front and center while coding. I stay mindful of design principles and best practices to ensure my code is clean, reliable, maintainable, and testable. I also regularly check in with whoever defined the system design — or reflect on my own intent — to make sure I’m on track. This alignment habit usually results in code I can feel proud of.
If you want to dive deeper, here are two of my previous articles (published on Medium.com) covering key principles I rely on:
- Software Architecture: Mastering S.O.L.I.D Principles with Practical Examples in TypeScript
- Software Architecture: Explaining KISS, DRY, YAGNI with Practical Examples in TypeScript
And don’t forget to taste test your code! Just like chefs sampling their dish before serving, I regularly test and review my code. That means writing thorough tests and refactoring whenever something tastes off — whether it’s too complex, too slow, or just confusing. A well-tested codebase is like a perfectly balanced meal: reliable and enjoyable for everyone.
About creativity. Just like a chef experiments with new spices and flavour combinations, I like to bring creativity into my code. This means trying out new patterns, exploring different libraries, or finding clever solutions to tricky problems — without sacrificing clarity or quality. I’m not afraid to remix familiar ingredients in fresh ways, whether it’s refactoring legacy code or architecting a new feature from scratch. Creativity keeps coding exciting and helps me grow beyond just “making it work” to crafting something elegant and enjoyable to maintain.
3. Share (or Ask for) the Recipe 🔄📖
Alright — we’re way deep into the food metaphor now, so let’s just roll with it. Sharing recipes is what makes great meals — and great teams — possible.
Don’t keep your secret sauce to yourself. Tap into the wisdom of your colleagues at all levels: seniors, mediors, and juniors alike. Use every opportunity — system design reviews, code reviews, pair programming sessions — to exchange ideas and gather constructive feedback. These reviews aren’t just hoops to jump through; they’re chances to refine your code and learn new techniques.
I make it a point to both give and receive feedback regularly because knowledge sharing is like passing down a treasured family recipe. When you teach others, you deepen your understanding and help raise the overall quality of the kitchen — er, team.
Remember: seniors bring hard-earned experience, mediors offer solid knowledge and fresh perspectives, and juniors inject new energy and innovative ideas. By blending these insights, you create a richer, more flavourful learning environment that benefits everyone.
So don’t be shy — share your recipe and ask for theirs. The best cooks don’t cook alone; they learn from and inspire each other every day. That’s why I enjoy sharing stories on Dev.to 🥳
4. Respect the Timing ⏳🍳
Just like cooking requires the right timing — too fast, and the dish is raw; too slow, and it’s overdone — software development needs a balance between speed and patience, and the stakeholders needs to understand this. Rushing can introduce bugs or technical debt, while endless tweaking delays delivery.
I remind myself to trust the process, ship incrementally, and polish thoughtfully over time. Good things take time to mature, whether it’s a soufflé or a software feature.
5. Plate Your Work Nicely 🎨🍽️
Presentation matters — whether it’s a gourmet meal or your codebase. I try to “plate” my work by writing clear, readable, and well-documented code so others can easily understand and enjoy it.
Just like a beautifully arranged dish invites people to dig in, well-organized code invites collaboration and makes debugging or extending features a breeze. Good code is not just about functionality; it’s about creating an experience that’s pleasant for your teammates — and your future self.
Conclusion: Keep Cooking, Keep Growing 📣
Becoming a great software developer isn’t a destination — it’s a journey that requires passion, patience, and continuous effort. By feeding your hunger for knowledge, coding thoughtfully like a chef, sharing your recipes, respecting timing, and plating your work with care, you set yourself up for meaningful growth.
Remember, growth isn’t about perfection or rushing to the finish line. It’s about cultivating habits that nourish your skills and mindset every day. So keep cooking your craft with intention and curiosity — your future self will thank you.
🙏 Thanks for reading to the end! If you have any questions, feel free to drop a comment below.
If you enjoyed this article, follow me on Medium and social media — I’d love to connect and follow you back:
Robin Viktorsson (@robinviktorsson) / Medium
Robin Viktorsson (@robinviktorsson) / X
Robin Viktorsson (@robinviktorsson@mastodon.social) — Mastodon
Top comments (3)
Loved the chef metaphor, it really fits the craft. What's one unconventional 'ingredient' you've added to your dev routine lately?
Hi @dotallio! Thanks for the question.
From a growth perspective, I’ve recently found myself listening to more software, programming, and engineering-related podcasts —especially while working out, cooking, or doing work in the garden. It’s been a great way to stay inspired and keep learning outside of screen time.
I highly recommend checking out podcasts from these sites:
this is extremely impressive, honestly makes me wanna take my daily learning more seriously
you think people underrate just showing up every day and doing the small things