Even as a junior developer, starting with the plug-in repository is often your best bet. I'm sure, when evaluating a particular situation, you already have in mind an approach you'd take with your custom development. Finding a tested, proven, "professional" plug-in that does the same thing is the best way to compare how you'd do it with how a more experienced developer would. It's a great way to learn as you go and pick up new techniques.
That said, there won't always be a plug-in available to fit your situation. In general, if you spend more than 5-10 minutes browsing the repository and can't find the perfect solution, stop wasting your time and build your own. Then submit your new system to the repository to help out the next guy who comes along.
Often times, I'll find two or three plug-ins that almost do what I want them to do ... but they're missing one or two features, or for some reason break my theme when they're installed. In these situations, I'll still start off with the stock plug-in, but I'll tweak it to fit my specific needs - remember, it's open source, so this is allowed and encouraged. Then I'll contact the original author and propose a patch to his or her project. Sometimes they accept it, sometimes the reject it, other times they ignore it. In a few cases, I'll publish a public fork of their plug-in just to make sure my patch remains available to the community, but over time whatever work I did either gets incorporated into the system or is replaced by improved WP core functionality or another, better plug-in from another developer.
I'm all for taking time to learn a new system and trying to build a solution from scratch, but if someone else has already done it (and tested/deployed their system) I'd encourage you to learn from their experience and build off their system rather than developing your own. You're already building on top of a platform (WordPress) that's developed by someone else ... building off an existing plug-in to avoid 'reinventing the wheel' is no different.