Before the start of every project we work on, we have two mini versions of our developer selves in our shoulders. On one shoulder, we have the stubborn developer, on the other we have the smart ass developer, each of them trying to lure the unsettled developer that is you. Let me describe the little voices in your shoulders:
The smart ass developer: This developer is the one that is aware of the tools available in the open source community. He/she lives and breathes GitHub, and swears that there is a tool available for anything that we need to accomplish, without writing a line of code. He/she knows how to get away with using an existing framework without doing much modification to the look and functionality of the framework. See: All the Twitter Bootstrap looking websites.
The stubborn developer: The stubborn one is the one that knows that he can do what he needs to from scratch, without the help of any available framework because he believes that all frameworks are bloated. He eventually may secretly have Stack Overflow as the initial homepage on his/her browser. See: all the sites that do something less optimal from what you have seen done before.
Let me emphasize that there is no right or wrong mindset to follow. Both can be equally good and evil. The true evil is the time deciding which little developer to listen and comply. This can consume a developers (developer) soul at times. The battle that you will orchestrate as an individual, is deciding what’s best for the project and a self evaluation of the potential as a developer on what he/she can accomplish.
The course to battle these 2 states is to recognize the best of both and use them as it fits specifically to you and your project. This is the road for the Smart Developer.
For individuals, you will need to do a self evaluation of your skill sets and level of expertise. You need start from a stubborn standpoint and adopt smart ass. For the developer that do this exercise correctly, it can be a humbling experience. You may realize that they can do it from scratch, but it will make their lives easier if they adopt something that is already built and that as a plus, it closely matches the developers style.
Don’t be afraid to be stubborn or a smart ass, thrive to be smarter by amalgamating both attitudes. You will learn the tricks from other smarter developers and you will improve when you apply your own flavor on what you learned.
Footnote: I’m aware that other many factors come into consideration while choosing which path to follow(time, money, the client, etc). I purposely left them out on this post as they are external factors.