As a developer, you probably have ran into a situation where setting up the project environment takes longer than completing the project? If you did. You will likely find useful what you read below otherwise please go and look at funny cat pictures for the next 3 minutes.
As the web industry continues to grow we get more and more people who love having abstractions in their work routine. The biggest motivation for writing this post was this npm module. I don’t want you to get the point of this post from a wrong perspective. I do not have anything against having a healthy stack of tools that saves your time and transforms your work into a less routine process. I don’t have anything on all of the task runners, package managers, text editor plugins, libraries, CMS’ or OS utilities.
The problem that I see is when people get lost in this and the outcome of their work blurs out behind the tools. How many times have you heard people try to show off by listing their modern work process tools. Such as ‘I use gulp, jade, stylus, typescript, this year hot js framework’ and so on. That is not how engineers talk, is it?
I had a chance to introduce multiple people to the web dev world and it surprises me how after some time of getting used to all the tools and technologies available. People forget what they are working on and their focus shifts to the tools they use.
Too many tools?
Why is having a large amount of tools good? Think about all the time you had to spend with your work if you didn’t have that one plugin or shell script that you wrote out of tiredness and non availability of alternatives. These are the essentials that we cannot imagine our work without. These days most people can easily name top 5 of the tools that they would not say not to. These are the essentials. But there are more. As an example I have a color picker plugin for my text editor, do I use it often? No, I don’t. Do I find it useful when I use it? Most certainly. Such tools can be called secondary or non-essentials. Both are good for you and healthy for your work.
By this point you might be asking yourself
so what is so bad about these tools you talking about?. Some time ago I was asked to help a person with his build system setup. The amount of time the person had spent on trying to setup the build system was times greater than the time he spent on finishing his work on the project. After looking into his set up and what the default technology he was working with is capable of. I showed him how little time he would’ve saved with his build system and much time he already lost because of it.
Should I strip off my tools?
I am not inviting people to fresh install their OS’ and work out of built in text editors with HTML only. I am inviting people to have a more engineer approach to the problem they solve and not to blindly throw all the newest tools on every project they do. Pick what they actually need to reach the finish line and save their time through the process of both setting it up and working on the project.
The point that I would like to bring you to is that your client does not care what so ever what stack of npm modules and preprocessors you used for this project. From the engineer perspective the one thing that matters the most is the final project and it’s your responsibility to get there and get there with the reasonable span of time. Use the right tools for the job. Don’t pick the newest framework because it’s hot right now. But pick what you are familiar with(unless it’s your side project).