Whether a project is successful or not is often determined before the work is even started. As developers, regardless of which languages, databases, operating systems, or hardware we use, we are ultimately builders of things.
Like the many great builders of things who built things before us, the most important decisions we make start at the time when we begin selecting the tools we plan to use when building our things.
Picking the wrong tool will lead to a frustrated builder and sub-standard results. Picking the right tool will make the job a breeze while letting you unleash your best work.
More importantly, if you follow these steps and set aside any existing biases, you might be surprised with the toolbox you end up choosing; this is okay. Sometimes the tool you least expect to use ends up doing a better job than the prescribed tool.
The old days of choosing the right tool
In the past the task of choosing tools was made easier by virtue of the fact that there were fewer tools. If you were a computer programmer in the 1950s, there was a pretty good chance you were writing Short Code on an ENIAC. No matter what problem you wanted to solve with a computer, you were almost certainly using this setup.
These days saying that you are a developer could mean you write in any of the dozens of popular languages that are available, and deploy your software to multiple different environments on different kinds of hardware all the time.
Heck, the way that technology is moving these days it is entirely possible you are building solutions for something that doesn’t even look like a computer. One project I am involved in is helping to restore pinball machines using a custom designed hardware.
“Wunder-tools” are not the answer
Compounding this problem is the fact that many tools are advertised as wunder-tools; capable of solving any problem you might run into when building. Considering the complexity of modern day technology the truth is that there are no miracle tools.
A successful project will employ dozens of different tools for a variety of reasons. Understanding why, when, and what those reasons might be will make the difference between success and failure when it comes to filling up your toolbox and accomplishing something worthwhile.
The process for choosing the right tool
So how do you do it? How do you decide which tools are best for your build? Where do you even begin?
Fortunately, building your project toolbox is not as daunting as it sounds. No matter what you are building or what tools you use, the process of tool selection can be carried out in a few easy steps.
The first step when picking tools is to forget about the tools all together. Instead, you must clearly define what it is you are building and how you plan to measure the outcome. By first defining what it is you want to accomplish you can now measure the performance of any given tool against that benchmark.
It is inevitable that you will have to make compromises between what a tool can do and what you want to accomplish; that is the nature of building. But, by clearly stating your project goals up front, it is easier to understand the value and cost of those compromises.
This also helps you avoid taking on, or at least understanding, extra baggage that comes along with the tool. Any PHP developer who has tried to choose from one of the many PHP Frameworks available knows that there is no such thing as the perfect framework.
Second, every framework has its way of doing things and depending on your objectives a framework that works for one project may be wrong for another project. Having a clear picture of your own objectives will give you a way to effectively compare your options.
Shortlist the tools that will help you get the job done
With your project goals in hand, the second step is to build a short list of tools available that might get the job done.
It is rare that you will get a task where there is one, and only one, tool available to complete the job. Even something as simple as building a fence you have to choose between screws and nails when attaching the fence boards.
A project like an Internet SaaS platform serving thousands (or even millions) of users is much more complex and so is the number of tools for you to evaluate. Creating a short list lets you compare the tools to each other, ensuring that you make the best selection possible.
… and continually update that list
Evaluating a short list of tools at the outset of new projects is a good practice whether you are on your first project or your fifteenth. Technology moves fast and there are new tools available all the time. By going through this process, you can be sure that your toolbox is up-to-date with the best available tools.
This, in turn, helps prevent you from falling into the rut of always seeing solutions through the lens of your beloved, trusty, favorite tool.
They say that every problem looks like a nail if all you have is a hammer...well...don't be that developer whose only got a hammer. Be the developer who knows how to use the hammer, the electric drill, the staple gun, and the crazy glue. Not every problem can be made into a nail and you need to know when to put down the hammer and pick up a different tool.
The final step in picking the right tool for the job is to try them out for yourself. Before you begin your project, identify the core objectives you need the tool to accomplish.
Don't just use only one of the tools either. Try out the most promising tools from your short list on the same problem and see which one performs the best. Prototyping those sections quickly using a few different tools is one of the best ways to evaluate if the tool is right for you.
A nice side effect of doing hands-on testing is that you gain a little bit of experience with each of the tools. Even if you don't use them for the project, this experience will come in handy for future projects.
When faced with your next build, you will already know a little bit about each tool in the toolbox and how they might help you develop a solution. Things will stop looking like nails all the time because you are already comfortable using some of the other tools.
Building things can be complicated. Often there are a number of different ways to build the same thing with each option providing different costs and different payoffs.
Understanding and controlling the cost vs. payoff equation is fundamental to building effective solutions that hit their target. It follows, then, that navigating those decisions and building great things is a fundamental skill for every developer.
By applying this simple methodology when selecting the tools for your job, you can master this skill, equipping yourself to tackle anything.
About the AuthorMore Content by Chris Johnson