The Ultimate Guide of How to Hire for Web Development
It’s easy these days to find a web developer
Hell, do this search to jump right in. There’s loads of people out there wanting to write your code. But…
What’s not so easy
…is to find and hire the right ones to complete your job as needed. For instance, how should you determine:
- Their technical skills
- How their past work, skills and tools will influence their future work
- How they can elevate the development group
- How well they communicate with others
- How they solve a real problem with a technical solution
- How to avoid creating a technical solution when the problem may only need a change in process (for example)
In other words, more than just their technical skills…
How’s their ‘tude? Aptitude that is.
- Learn a new language, platform, stack or overall coding environment?
- Learn it fast enough for your environment?
- Work well with people across disciplines (tech, biz, marketing, management, etc)?
- Organize and prioritize their activities?
- Jump in to help others
In years past, a heads-down-coding-I-can-do-this-myself-introvert may have worked well. Not so much now, eh? The software development industry has outgrown that narrow profile. Thank goodness. Developers are people, too.
What do they do? When would I need one?
An astute question. Like so many terms in our industry, ‘web developer’, can be a muddled role. Too, what do you want to build?
- A web site to tell or sell something?
- Some web services to connect multiple applications across the internet? Or…
- A complex web application to sell as a product, say for you or for your client?
My-oh-my, you have a lot of questions, oh-curious-one.
Let’s investigate to help you hire for your web development needs.
Want someone to work on the complete solution? Say you’re a small shop and need someone to ‘do it all’… from the user-interface all the way to-and-through the database. Or maybe, you need someone to be the glue in your large shop, across the entire solution?
Such qualities might include:
- Design the database to model the business requirements
- Optimize the database based on functional and nonfunctional requirements (e.g. indexes, stored procedures, default values, triggers)
- Code it up using tools like MYSQL, postgresQL or MongoDB to find, save or change data, and serve it back to the user via the front-end code
Development / Operations skills
- Create a reusable, tiered, data-centric architecture to be used across multiple applications, systems or subsystems
- Design the API for this tier to be called by other developers and systems
- Document the API to inform users how to call into your tiered component
- Code it up
- Code front-end mockups provided by designers
- Engage others to provide feedback, to further refine the requirements
- Define and design the UI approach and standards
- Code it up
It’s often more than just writing code, huh? Okay, that’s obvious.
How much do you want your developer to be knowledgeable and experienced in common web frameworks to do your full-stack development?
Some common frameworks to pick from:
- Laravel PHP to create a model-view-controller architecture (MVC) for your apps
- Ruby on Rails to create databases, web services and web pages by conventions
- Sinatra to create web apps quickly in Ruby
- Django to more easily create complex database-driven websites using Python
- Python for general purpose programming, emphasizing code readability
Here’s a good list to compare the features for many of these frameworks. Use this to help identify which skills to hire for your business.
Like building a house, a general contractor will know a little about a lot. Best to leave the electrical, structural, plumbing and more to the experts, who specialize and use these tools daily. Therefore…
Finding a full-stack developer means they’ll have knowledge, insights and experience across skills and technologies. This will help you build something from concept to front-end to finished product. They can influence the entire solution and jump in as needed to help out.
Feel better about having some ammo for interrogating for full-stack development? At least little bit?
Browsers process code differently, causing unintended effects. This applies to browsers across devices (desktop, mobile and more). How will your guy-or-gal candidate deal with this when building a client-server app?
And while you’re at it, find out about these, too:
- What is “render blocking”? Certain HTML tags can interrupt parsing when accessing an external resource. Ouch.
- How to avoid it? Hint: the ‘async’ tag.
- How to optimize images? Say, create images for the sizes you need versus show a giant image for all renderings.
- How to minimize round-trip requests? Those non-user generated images are one nasty source.
- CSS-related anomalies. Some tips.
- Browser reset stylesheets. The order of css can make a difference. Ask why.
- CSS Fallbacks. What to do when a browser doesn’t yet support a property.
- Prefixes for CSS property values. -webkit-, -moz- and -ms- and how to write snippets for these.
- IE is ornery and thorny, How do you deal with this?
- Advantages and disadvantages for SASS, LESS and CSS? First, what the heck are they? You and I know. Does your candidate?
How will your dev candidate field these client-side topics?
Only one way to find out.
Moving right along. From client-side to…
- Client-Side: Code living in the browser, responding to user input
- Server-side: Code living on the server, responding to HTTP requests
- I didn’t make that up
The server does the heavy lifting. It authenticates requests, processes data, applies business logic, and builds responses. It’s important to design an architecture for the server to run fast and efficiently.
Characteristics of server-side web code include:
- The server stores the data (typically into a database)
- Server code does not show up to the user (typically)
- Responds only HTTP requests for a specified URL
Some topics to throw at your candidate dev hire:
Why care about server-side caching? “Well”, says thou…
- It’s vital to using server resources efficiently
- You can allocate too much memory to the cache, which can degrade performance
- Expire cache appropriately to reclaim memory capacity
- Cache contents based on how often certain data is used, as part of your strategy
- The size of cache entries will matter. Should a complex data object be stored as a single object, or as sub-objects? No one size fits all.
“You’re hired.” Well, wait a sec…
Answer for me please:
- What is a session? – A mechanism for persisting user data across multiple requests
- How is it tracked? – Serialize the data in a way to quickly retrieve it for a future request
- What is REST? – A way to build lightweight, maintainable, scalable web services
What are some characteristics of a RESTful service?
- A well-defined operation via a URL, used as a stateless communication protocol
- Are simple, lightweight, fast and self-describing
- Benefits from a uniformed interface, most commonly: GET, POST, PUT and DELETE
- REST has replaced SOAP as an industry favorite protocol
A few more topics to consider:
- HTTP request methods
- HTTP server push
- Normalizing a database
- Differences between relational, document and graph databases
Of course, it’s endless… but this post must not be. Hope this helps you prepare to hire your next server-side web developer.
Let’s see now, we’ve covered plenty around full-stack, client-side and server-side development.
Need to keep the front-end and back-end in sync with your web application? Want to take advantage of some latest and greatest additions for web development?
- Leverage your existing HTML skills
- Extend HTML’s syntax to clearly and succinctly describe your components
- Reduce code you write, while AngularJS dynamically injects code for you
React.js is another popular framework to help you write less code, using a templated solution.
A few questions worth asking:
- What is two way data binding?
- Are you familiar with FLUX application architecture?
- Have you used ES6 syntax?
- Do you prefer webpack or browserify?
This can get you started. Of course, you can do some web searches to determine more questions to ask your candidate.
Enough now, about the tech-of-it-all. How about their DNA? Huh? Read on…
Okay, you like what you seen so far from your candidate about their technical skills. We all know, there’s more to it than that.
How can you become confident this person will succeed on your team? Let’s have looksie.
Is their DNA your DNA?
You absolutely want this person to fit in well with your team and organization (who am I to tell you what YOU want? Never mind.) Whatever characteristics make up your culture, identify ways to determine a match. It costs plenty to hire, even more to fire. Yikes.
Some example categories and questions to consider:
For continued learning:
- What new programming languages have you learned recently?
- What are your go-to places for learning new tech tips?
- What are you favorite technology conferences?
- What are your favorite books around web development?
Team member or going rogue (whatever works for you, right?):
- Do you prefer to work alone or on a team?
- Remote or in an office?
- On small or large teams?
- On small or large projects?
- How do you show your progress?
- How often?
For a test-driven-development shop:
- What does test-driven-development mean?
- What is a unit test?
- How do write one?
- Using what tool(s)?
- Do you write your tests before or after writing your code?
- What’s the difference between acceptance criteria and an acceptance test?
- How often and when do you run these tests?
Create a list of your DNA. Use this list to identify their DNA.
Is it a match? Good to know sooner than later.
How many times have you been in interviews where someone asked you one of those bone-headed-brain-teasing-flip-the-bit questions? Oh, you do this? Fine, then add these to learn about their real problem-solving skills.
1) They give you multiple solutions (without asking). Gotta like that eh? This is money and can be used daily. Hired.
2) They document their solution. No way. Way. Maybe they used or wrote an auto-generator to document their code. Or, wrote those automated tests to show how each class method is used. This shows their attention to improving quality AND communicating to others. Hired.
3) They improve the test. Create some tests with some lurking, minor issues to see if they spot them and are willing to fix them. A developer willing to address, tell you about, and fix them show how much they care about quality. Hired.
4) They refactor. Describe a small problem, have them write some code. Great. They coded it right up. Even better, did they then get right back in there to rewrite it to make it mo-better (and within the allotted time? They are crafting a solution. Hired.
5) “We have liftoff”. With some, any or all of the above AND there’s plenty of other “hire” signs… why wait? You could lose them to another employer. Don’t let that happen. Hired.
Sounds like a movie title, huh?
Some more traits to interview for? Can or does the candidate:
- Design and create an architecture and/or patterns to build things better
- Develop reusable snippets, libraries and frameworks to build things faster
- Identify and express trade-offs to help the business make good decisions
- Create or help create requirements, design specs, project plans and more
- Teach, mentor and inspire other developers, to elevate the group
- Apply methodologies (e.g. lean, agile, scrum) for creating solutions on-time, within budget, and with a known quality
Add to this list other qualities you want to see for your next hire (bossy aren’t I?).
It can only help to see what types of projects the candidate has worked on. This will help you learn a lot with a little. It doesn’t take much of your time to peruse what they’ve done and accomplished. That is, if they’ve put their stuff online, which has become quite commonplace.
Do they have:
- A blog site (or guest posts) writing about topics you’re looking for in this candidate
- An online library of snippets to share with the tech-world
- A portfolio of website or UX designs
Or maybe they can give you:
- Code samples of a solution they wrote and are proud of
- A reusable widget, system or any other code they created and used across many projects
It’s a good skill to learn a lot in a hurry about hiring candidates. It does take work on your part.
Who know’s, maybe this will become one of your strong skills… to use on a future interview.
- Know the type of web development you want to hire for (e.g. websites, web services, web apps)
- For full-stack developers, identify their breadth for how they can help you across the board
- For client-side developers, identify your biggest tech-challenges on the front-end, ask how they have addressed those issues
- For server-side developers, learn how they can help you optimize the back-end, using contemporary technologies and practices
- Identify a match in DNA to become confident you’ll hire the right candidate