It is a good thing to ask questions. I always do that. If i want to understand something, i ask questions about it. Like children who try to grasp their environment. You should never stop to ask questions. Experience will help you to form the most relevant questions to you.
To get to the essence of something, just ask "why" 5 times in a row. You will get a completely different view on the topic at hand. And you see immediately, what to leave aside. What just distracts you from the thing, that you really want to have/do/achieve.
"Questioning the status quo"
That quote has been long on the front-page of my company. Because it tells so much about how i work. I want to understand things, so i can re-arrange it in a more minimal, robust and elegant way. It is my passion to remove everything, that is not related to the problem in question. I want to strip out everything that does not help in getting the point across.
There is this great quote from Antoine de Saint-Exupery:
Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.
I totally believe in this mantra. I think, it should be the starting point, whenever you create something new.
Developing software is a creative craft. Everyday you create something new. It should be simple and precise for a variety of reasons:
- people will easier understand what you do
- your software tries to do one thing right instead of different things at a time
- maintenance of software will be easier
- fewer bugs will be created
- if you create small libs, that get then used by your application it is easier to change applications behavior, by just calling different libs
some of the points above justify its own article. I will get back to that, later.
advantages of questioning
Instead of repeating what is already there or falling into pitfalls of not completely understanding a topic, new software should solve a problem. And they should solve that problem for good. Otherwise it would be a waste of time.
So, go for understanding and ask questions. Then, improve on what is there or start from scratch and create only, what is essentially necessary. If you master that, you will not only be a better and/or faster developer: you will gain experience that affects your whole life.