Evaluating a Web Developer
This is where things get tough! Why so tough? Why can’t you just look at a portfolio, check some references, and pick someone to build your website? Because those things will give you zero insight into the quality of development you are going to get. Those things will give you zero insight into the future cost of support, the (potential) headache of maintenance, and the probability that your investment will last as long as you expect it to.
Think about it, when you go and buy a new car you open the hood and look around the engine. Even I do this, and I don’t know jack about cars, engines, or what all those hoses, wires and fans are. However, we look, and we make the salesperson tell us all about the engine. We don’t do this with websites. Most owners of websites and clients of website developers never look “under the hood.” Even if they did, they probably would not know what they are looking at or how to judge it.
To make matters worse, if you ask 10 developers to do the same task it will get done 10 different ways… I promise. Sure, there are best practices to development, but that doesn’t mean it won’t work 9 other ways. So which way is best? Well I cannot say there is an absolute “right” way, but I can say that there are ways that will make the website perform fast or perform slow, there are ways that will make it easy to maintain or hard to maintain, there are ways that will make it easy to change and enhance and ways that won’t, there are ways that will give it an SEO advantage and there are ways that will hurt the site’s chances of ranking well. These are all concrete facts but much more abstract to define, evaluate or make a decision on if you are not a pretty advanced website developer yourself. In the end, there is a right choice, and there is a wrong choice and this is where so many people have gone wrong. It inspired the folks at FatLab, LLC to put together this eBook and service.
Web Developers vs. Designers
At this point I feel like I am beating the proverbial dead horse to death (again) in my point that designers are not developers and developers are not designers … they are always going to be better at one or the other. However, that doesn’t mean that a good web product can’t be produced by a single person. Regardless, these are very different disciplines. So here is how I see things:
A (good) designer is someone who has experience working in software platforms like Photoshop, Illustrator, Invision or Sketch. This person, following the client’s direction or sometimes following wireframes developed by them or a UX/UI consultant, develops a series of comps for client review and critique. This person then refines these comps to the client’s taste, the whole time being aware of, and advising on, the limitations of display within modern browsers (desktop or mobile). This person is not an “artist” and does not take constructive critique personally. They design for the audience and not themselves, following best practices for design and not something neat they saw on another site. They experiment with modern design techniques but do not sell “cutting edge” design.
A true designer is not buying a commercial theme, is not making code decisions, or using plugins or modules to enable their “design.” They know how to work with a developer and can provide assets to the developer but are not “coding” their way through design. Design is done separate from development and then “integrated” through code but not built from.
The Web Developer
A good developer knows how to write code from scratch, knows multiple frameworks, and knows the principals of at least one programming language (regular Googling is allowed). Code is like a foreign language in that you either know it or you don’t … immersion works but it doesn’t mean you are fluent.
A good developer understands the basics of the server technologies they develop for. They don’t need to be server administrators or engineers, but they need to understand the core principals of how things work. They will know how to debug; they will understand how their programming decisions affect everyday performance and what constitutes best practice.
A developer is defined as someone who builds websites by writing code and maybe integrating “helpers” like pre-built plugins and modules but does not rely on such things to determine the final product. They should be able to listen to their clients or project managers and be able to define a challenge in a technical sense and propose and implement solutions without being limited to copy and pasting from online tutorials and installing (more) modules and plugins.
It is critical to understand that a developer is not a person who buys a commercial theme, then installs plugins or modules to produce a website for a client. A developer knows when to use pre-written scripts and libraries and when to write their own.
Different Kinds of Web Developers
Historically, there were two kinds of developers when it came to web development: Front-end and back-end. The front-end developer is someone who works with the cosmetic aspect of the website or application (what the user sees and how the interface is interacted with) while the back-end developer focused on the ‘engine’ of the application: whereby they program for the chosen servers to query a database and produce data that will be shown on the front end. However, it’s not always necessary to have both of these kinds of developers build a website as many web developers are proficient in both front and back-end development. It’s only larger, more complex projects where it become really necessary to split these roles.
As web technologies grew and improved from the late 1990s onward, different frameworks were introduced. These frameworks provide developers a defined structure which they can work in; a set of rules and a model to follow. These frameworks grew to include feature-rich content management systems such as WordPress, Joomla, Drupal, and hundreds of others. These are amazing systems. It was less than 20 years ago that we were building a custom CMS for each and every client. Today we can stand up a full-featured CMS in a matter of minutes and from there it’s simply an issue of customizing it for the client’s needs. This, in my opinion, has led to the introduction of several new kinds of ‘developers.’ Not all of them are good and I cannot stress how important it is to know exactly what kind of developer you are working with on your project. The following are not technical terms and definitions but my interpretation of the ‘kinds’ of developers you may encounter.
The Point-and-Click Developer
This person may call themselves a developer, but I am going to disagree. This person doesn’t know how to write code beyond maybe a little minor styling with CSS. This person can install a content management system, a pre-built theme, and then load it up with a plugins and modules that provide the needed functionality or at least approximate it. This person, because of their lack of programming knowledge, is incapable of considering performance, ease-of-use, or long-term maintenance. They will be unable to meet their client’s challenges with anything that is not already written as part of a plugin or module and may complicate a project installing plugin after plugin trying to meet the project requirements.
Avoid point-and-click developers as they simply do not have the skills to develop a quality project. In fact, they are not doing anything you probably couldn’t do for yourself and potentially charging a lot for it.
The CMS Developer
This person is much more a coder than the point-and-click person. They understand the ins and outs of a content management system. The only disadvantage to hiring this person is that their skillset is limited to a particular CMS. In other words, this person may be able to do custom WordPress development (writing code) but is not a true PHP/MySQL developer (the language and database that runs WordPress). This means that unless what they want to do is a documented feature, capability, or function of the CMS, they may struggle to get it built. This person may be a strong CMS developer but lacking true development principals. They rely on the framework of the CMS to guide their work versus understanding the fundamental programming standards.
I’ll argue that there is nothing really wrong with this kind of developer. In fact, I would say a simple evaluation of any developer who is going to build you a website using a platform like WordPress is to ask if they are able to ‘open the hood’ and work within the code. This requirement will weed out the point-and-click kiddies and you’ll immediately be working with someone much more qualified.
Where this kind of developer is going to be a disadvantage is when you have a truly custom function you need built. If you need something that has not been built yet, is not part of a CMS’s documentation, then this person may be in for a real challenge. The problem I see over and over again is that it is this person that doesn’t realize they are not a true developer. They are often very confident and though most of their projects go well, every once and while they meet a challenge, they don’t have the skills for. They may know enough but the result is often a rat’s nest of inefficient code or once again a plethora of installed modules or plugins that hamper performance and make the site hard to manage.
Wrapping Up Web Developer Types
In short ‘developer’ is an unqualified title and can mean very different things. I would flat out avoid the point-and-click developer and work very hard to weed them out of your potential project providers. Pick your individual or team based on the complexity of your project and not their portfolio alone. Ask them questions about how they meet challenges not solved with a plugin, and if they use commercial (prebuilt) themes or custom develop their own. Ask them if they know various programming languages or if they just know a CMS. Ask for examples similar to what you are looking for or examples of how they met other client’s unique challenges. Challenge them on what kind of developer they are.
Finally, never lose fact that, despite the fact that technologies have gotten easier to use, that you are embarking on a very technical project. It takes a lot to push pixels by running database queries, rendering dynamic data to HTML and to deliver a flawless performance centric experience to the end user. Design can be eye candy, but complex code still runs websites.