I like building. There are very few activities that can monopolize my attention span for hours on end like assembling individual pieces to form something new. It doesn’t matter how trivial its purpose is. I obsess over it, sifting through all the components to find which combinations give me the best result. As useful as this has been for work, I didn’t get it from freelancing or employment. I got it from videogames.
Deckard Cain is a chatty old man in one of my favorite videogames of all times, Diablo II. He wants to tell you all about the world you’ve been dropped into. He wants to warn you about upcoming challenges. He wants to advise you on where you should be heading to make progress. All Deckard Cain wants to do is talk to you. His catchphrase is “stay awhile and listen”.
Conversations with Deckard Cain are useful because the world of Diablo 2 is gigantic. The maps you must explore are randomly generated every time you start the game. You must re-explore it every single time you play the game. The checkpoints scantily scattered across the world don’t save your exploration progress. They save your time but it’s likely your objective is 3 or 4 (or as many as 8!) randomly-generated maps away from the checkpoint anyways. Considering how long it takes to fully explore each map, it’s really not a game you want to be running around blindly in.
Building for the web is very similar to the ever-morphing world of Diablo 2. Every browser is its own unique environment – no two are completely identical. Browsers change between versions. Sometimes very drastically. Internet Explorer is so different from version to version that it requires special attention to accomplish the same task in different versions. Web Developers have leaned on collections of code to make working in browsers easier. Today there are so many different collections of code that choosing the right one for your project is a bigger problem than dealing with different browsers! If you’re working with a team, better pray they are willing to use the same collection of code you want to work with.
All of these “explorations” keep web developers from reaching the true objective: the thing we set out to build in the first place. To that, I’d like to channel Deckard Cain and give one piece of advice: “Stay awhile and listen”.
1. Listen to The Client
The desire to start building right away is so strong that it’s entirely possible to miss what the client wants and build something they aren’t willing to pay you for. Deckard Cain doesn’t speak until you click on him, so don’t expect to get nuggets of wisdom from your client without engaging them in a conversation. Whatever you do, get them to talk and be sure to listen. They may tell you in absolute terms what you should build. Sometimes they won’t. What’s most important is understanding why they need a solution in the first place. Nothing requires you to solve it in the same way the user expects it to be solved. In many cases, solving it exactly as the user expects will result in something they’re not willing to use! Listen to the user to understand why need a solution. Let their problem guide you to the best approach.
2. Listen to Your Environment
What you’re working with directly limits what you can build. There are things that are impossible to do in the browser. Out of the things possible in the browser, some are impossible in your framework. Some features available in your framework are unfeasible due to your project structure. You really want to listen to all these constraints, because the solution you’ve envisioned might not be possible to execute due to circumstances beyond your control. Don’t waste your time when your environment and what’s available in it will tell you the limits of what you can accomplish.
The more you stay awhile and listen, the better the quality of things you build. This isn’t limited to Web Apps or Diablo 2 characters. The quality of my relationships have improved as my ability to listen increased. An area I’m still working on is completing people’s sentences. It’s nice when I’m right but the satisfaction is shallow and fleeting. It’s downright embarrassing when I’m wrong. All things considered, I should be fully listening; focused on what they have said and never assuming what their next words would be. That’s not what Deckard Cain would advise me to do.
Building is hard. The challenges keep coming. Even when you’re “done”, you can expect more challenges to turn up. Don’t sweat it though. Repeat the following words and let them guide you to the right solution:
When the going gets tough, stay awhile and listen.