HACKER Q&A
📣 nikomen

What advice would you give an experienced developer to keep improving?


I'm a software developer with over a decade of experience, but I don't feel like a senior developer. I've worked with a variety of languages: C#, Python, C++, and JavaScript mostly. One regret I have is not having enough opportunities to learn from developers more senior than I. I've worked with a few very intelligent developers, but for reasons unspecified, I wasn't given the opportunity to learn much from their experiences.

What would you recommend doing to improve development skills both to be a better employee/developer and to prepare oneself for future interviews? Focus on learning your current languages in greater depth? Learning algorithms and data structures? Other things?


  👤 prattcmp Accepted Answer ✓
Knowing how to code and knowing how to build scalable architecture and infrastructure are two very different things. Its pretty well understood that if you know a few of the most common programming languages, which it seems like you do, then you can learn others. And theres also a massive wealth of developers around the world willing to work for (probably) less than you. Where you can shine as an experienced developer is in knowing how to avoid many of the problems that arise from building for scale and building complex systems.

Of course, you can read a lot about software architecture and building scalable systems, but the best way to improve is to actually work on those systems at whatever level you can. Get your foot in the door with people building systems that serve hundreds of thousands to millions of customers. If you’re having a hard time doing that, build something on your own purely for the sake of proving that you understand the challenges of building complex software systems and software at scale. That way, when you go into an interview, you can say “yeah, I integrated a sharded multi-cluster DB with worldwide CDN endpoints and full management control.” (This quote is mostly jargon, but hopefully you get the idea) As a dev, DON’T WORRY about if people actually use what you build. Worry about how it’ll help you communicate your skills when you talk to people and interview.

Hope this helps. P.S. I’m a PM with a background in CS and I work with a lot of devs at many levels in a large tech company.


👤 PaulHoule
Some things I have done:

- During a career slump I joined the Project Management Institute and was about to get a certification before I got so busy I had no time for it. The PMI certifications are a good balance between affordable and meaningful.

- I did all the Python problems on HackerRank; this was a journey, like climbing a mountain, I learned a lot, had fun all the way, got practice for interview problems, etc. (I've seen other courses in other languages at that site and some others, but that one is in a class by itself -- I printed only my HackerRank Python certificate to hang on the wall because I am proud of it.)

- I challenged myself to print something every day to keep my inkjet printer from clogging up, but now I go to auctions and buy the cash registers from failing stores just to get the receipt printers, which I break the way a rock star breaks guitars. My son feels like he has to outdo me, so now he is making big anime art prints by putting together 8x8 inch squares.

- My image technology obsession has gotten me into arduino so I can build devices that paint images from a 1-d strip from a moving platform like an automobile. That's gotten me to rethink programming from the ground up.

If the imaging side projects go the way they are going there could be a day that somebody sees something I did that was different from anything they'd ever seen before and then work finds me. That was how I got "too busy" to get the PMI cert.


👤 JoeMayoBot
Share what you know or are learning with other developers. This could be in the form of tweeting, blogging, open-source, user group presentations, code camps, videos, podcasts, and more. These activities force you to really learn subjects deeper than what we might do every day at work, which tends to concentrate on what gets the job done at the time. It also helps the community so that others can learn. It also helps learn how to communicate complex topics in ways that are simple for others to understand, which is an important skill for senior developers/architects.

👤 majora2007
I think there are really only 2 things for you, either switch into a job that allows for you to grow from technical mentors or get into open source (or a side project) that will allow you to develop deep knowledge of a language/framework/architecture.

A lot of my technical growth comes from side projects I work on (for myself or open source).


👤 brodouevencode
Find an open source project you are interested in and contribute to it or find ways to make it better.

👤 bachmitre
if there is nothing new at your current job to dig into and learn (=improve), switch jobs. every new job comes with new challenges and new things to learn