HPEscalanewb

Are personal projects sufficient for building strong programming skills?

I've been working as a junior back end developer for a little under 2 years right out of college. I've implemented various features but for the most part I've been doing bug fixes on legacy software. My debugging skills have improved significantly, as well as navigating huge codebases. However, I don't write a lot of code and feel that my development skills are..underdeveloped. I've read lots of books like Code Complete/Clean Code/Refactoring/Design Patterns to fill in some knowledge gaps but nothing substitutes writing real code, right? I've decided that finding a new job where I can continue growing as a developer is the next step, but I also don't feel like my programming skills are at the level they need to be after 2 years. I've started working on some projects like web apps to learn how to build software from scratch, but I'm not sure if it's worth the effort or if these simple projects can substitute the experience I missed out on. Thoughts?

@Eng
Add a comment
This comment was deleted by the original commenter.
HPE scalanewb OP Nov 20, 2017

Thanks for the advice!

Facebook olol1234 Nov 20, 2017

Personal projects and experience with large code bases are complementary. In my experience, people who have done both are the most competent engineers. Definitely get started on some non-trivial personal project.

HPE scalanewb OP Nov 20, 2017

Thanks!

New
noskillz Nov 23, 2017

Can you give some examples of non-trivial personal projects?

Microsoft sfomsft Nov 20, 2017

Try to work for startups

Pinterest Sylvanas Nov 20, 2017

Debugging huge legacy code base for 1-2 years straight out of school is the best starting experience IMHO. I know coders who have always just worked on features who love and demand writing of super clean code but fall apart completely when being asked to debug anything. If you feel like you've outgrown the maintenance team then bring that up with mgmt or switch jobs. But consider yourself lucky, when at a new job you debug & fix a bunch of huge fuck ups your credibility will grow exponentially.

Chegg guiut Nov 20, 2017

From a machine learning perspective, I don't think personal projects are sufficient. There's requirements and constraints that come up when trying to deliver a real product, that you won't run into with toy projects.

Microsoft deadpan Nov 21, 2017

I'm a big believer in using personal projects as a way to learn things. I don't think I'd be half as effective if I hadn't spent so much time learning stuff at home on projects of my own. Think of something you wish your computer (or phone) could do. Then make it happen. You don't have to know how, you just have to be willing to break it down into smaller chunks and figure them out one at a time.

Amazon あの奴 Nov 21, 2017

If you have that background, all you need to do is get really snappy on algorithms and data structures. Specifically, you can get there by doing a billion problems on leetcode.com or similar. At that point you should be ready for an "entry level" position at even large companies like fb, goog, etc

Tableau beepBoopp Nov 22, 2017

Yes but it's not going to help you be a great software engineer. Most people at corporations and start ups have much thinner skin than your average open source contrubuter (assuming you're just not going to work on toy projects). Getting a job will be easy but all it takes is calling someone out on bad code on a CR one single time without a compliment sandwich or buying them cookies for you to be the "guy who needs to work on their soft skills" and never be promoted for years!