How to Hire Software Developers
In order of importance, the factors that matter most towards efficient software development are:
- Developing the features in the right order and at the right time
- Mental Model - A good developer will have an excellent mental model of what the application requires and will have provided code that matches that. This seems
obvious, but most developers fail to do that and end up making a mess. If your developer is constantly breaking other functionality while they add features or fix
bugs, the code is probably a mess because the developer just can't comprehend how it should be organized.
- Avoid copy/paste - Copy/Paste is the name we've given to the programming style where the developer
copies code from one area and pastes it into another then makes some changes in order to get slightly different behavior in the second
location. There is OK copy/paste, and lousy copy/paste. You can tell if you have lousy copy/paste if you ask the developer to fix something,
but similar functionality in another area of the application does not get the fix.
- Expert in php - Familiarization with a particular technology or development tool is not important.
This is not important and the more a developer tries to convince you one technology is
superior to another, the more you should run from them.
The middle two factors are really about developer competence. The last is included only because many developers feel that the development
environment matters and to make it clear to you that when you find a developer like that, you have proof they are not aware of more important factors.
Below are two examples that illustrate what item #1 from above means and how important it is.
Busineses where the software is the product
quick2coach is an example of a company where the product is the software. In other words, quick2coach intends to make money
by selling the use of the software that we created for them. Pam, from quick2coach, contacted PNWSoft because
she was frustrated that her current developer wasn't able to make the UI like she
wanted it. In our initial one or two hour meeting I
determined that the developer that she was using was not very experienced. Given the type of product Pam wanted to
create, it was obvious to me that the UI had to be very easy and enjoyable
to use. This application needed an AJAX UI (see Wikipedia),
but the developer had created a Web 1.0
type of UI. In addition the developer had
created features like login/registration and purchase, that were inappropriate at
this time. PNWSoft created a new version of the product, but we did not add the
features that let the user login and save their results. This meant that Pam did
not have a complete solution that she could go to market with, but she did have
the essential UI that she intended to sell. She and her partners used that version
to demo to potential customers to determine if the idea had merit. After she proved
to herself that it was worth going farther, we added the login and other features
necessary to make her product.
This example shows three things. First, the inexperienced developer created a UI
that they were capable of creating, instead of a .
Second, the developer didn't recognize that the features that were not related to
the Golden Nugget should not be developed until after the Golden Nugget was working
and proven to be sellable. Third, Pam didn't recognize what should be done first
and what should be implemented later. The end result is that Pam wasted a bunch
of money on the .
Most software developers do what they are told, but most new software products are
created by people that have not created a lot of different businesses and therefore
don't know the best path to develop the software and the business. Most need the
type of business consulting that PNWSoft provides as a by product of developing
the software.
Businesses where the software is not the product
Freightclick is an example of a business where the software is a cost saving tool and a customer convenience feature, not the product.
In this example the software is used to buy the real product, which is shipping.
Justin had been paying some offshore developers to build a complete solution that
both the end users and the internal staff would use to run the business. We reviewed
the software and determined that the developer knew how to write software. However,
they didn't understand that where the software is going to replace existing processes
it must be developed in different phases. Each phase will be deployed and replace
a chunk of the existing business processes so that there will be many small changes
instead of one big change. The previous developer had created a lot of software
and most of it worked, but unfortunately there were bugs in every module. That meant
that no module could be deployed separately to phase out different parts of the
current business processes. Justin put a lot of money into this developer until
he recognized this lesson. By the time he contacted PNWSoft he knew he wanted to
do just a small phase instead of the whole thing. Had he contacted PNWSoft at the
start, he wouldn't have had to learn that lesson the expensive way.
The
developer was probably charging less per hour than PNWSoft. We suspect this
because they only provided offshore developers. They didn't have anyone like John Taves, Mike Hayer, Keith Benedict, or Dave Rivard
who have not only the software development skills but more importantly the business experience that could guide Justin to the right plan.
In the long run
PNWSoft was a bargain.
Conclusion
When searching for a software developer, you should make sure that the developer has significant business experience.
That knowledge should be aparent in your initial interview where you describe what you want to accomplish. The developer should ask a lot of questions
and challenge your views on how your business should be developed. If they don't, they most likely don't know how to organize the development
so that it has frequent releases and the features are implemented in an order that maximizes your return on investment and minimizes your risk.
For a business where the software is the product, The Golden Nugget is the set of
features or functionality that makes the product different. For example, the Golden
Nugget for Google is their internet search. They added many features after they
created the search, like the ability to create and display an adWord, but at the
start they had to focus on search and not develop all the other features, like adWords, that would
be necessary to make Google a viable business.
We don't know this developer, but we don't think they were incompetent. They just didn't have the experience to
see how the software affects the business. We hire developers that have similar skill, but our
less experienced developers work on larger projects where they follow the lead of
someone with more experience.
All PNWSoft developers are employees and we invest
in their skills for the long term.
The user interface depends on many factors, including the business, the product, and the users.
If the business has competitors the user interface might need to
be more slick than the competitors. If you are creating some new product, then it
is probably more important to get something on the market and make it slick later.
Sometimes the benefits of the software are so clear that the user interface
does not need several iterations to be good enough. Sometimes the benefits of the
product are somewhat difficult to convey and if the user interface is not really
easy and intuitive to use, the benefits will be missed.
If the users are few, but
use the software frequently throughout the day, the design will have a very different
emphasis than if the users are many and infrequently use it. Most web applications
have both types of users, where the few are the administrators and the many are
the customers.
Most software developers just don't differentiate between the
many different factors and end up spending too much time on one area and not the other. An
excellent software developer will understand your business, your product, and the
users.