The Strategic Brief:
The hardest decision in coding applications is to admit your users are NOT delighted – and that you have to rebuild. It takes discipline to move application development from functional to delightful. It can only happen when there is clearly understanding by coders of the purpose of the code. Connecting coders to customers is hard work. It takes deeper effort from product managers and marketing teams, though the payoff is worth it.
Public speaking is supposed to be one of the most stressful events in life. Luckily, I am pretty comfortable in front of audiences. As a musician in bands, I was lucky enough to perform before thousands. It was ok because I was part of a band. My inner critic could interpret success or failure as being caused by other members of the band! 😉 (It was the bassist’s fault, or the singer never won the audience). Then a friend asked me to read my poetry in a public forum before an audience of about 30 people. Yikes! The poetry was my own words and thoughts, performed by me. Solo. Whether the audience applauded or threw vegetables, it was solely down to me. They were judging me personally. Yikes!!
One of the things I love about code is that code does not judge. Code either compiles or fails. It runs or it does not. Code does not care what clothes I have on. There is no human value judgement involved with coding. Except that is not true.
Code has no value or quality on its own.
Until code has a user, it is the bad poetry that never leaves your high school diary. Using code makes it real – the user gives code purpose. The value judgement in code is what it does for a user. Airbnb makes finding a bed in a foreign town easier. The binary nature of code function is decided by whether a user can find a bed or not. The quality of code is found in the experience of the user.
Compare coding an application to making a movie. Director Jon Favreau describes the movie editing process. “The first [compilation of the film from the editor] you view is terrible! Each edit makes the film less terrible. Then somewhere in the process it starts to be good … and maybe even great.” Like a movie, the application code begins as terrible. Edits make it less terrible, and eventually the code runs. It is functional. HERE IS WHERE FAILURE HIDES. If you get to running, functional code and think the job is done. Well, sorry, you failed. The movie director is not even done once they get to a good edit. Movie directors then perform test screenings to see how audiences react. Based on audience reactions, reshoots are performed, final edits are made and then the film is complete. Running code gets you to the first alpha test. Here you should be both looking for user response, as well as bugs.
Sometimes delight is baked in. You were lucky enough to identify the delightful aspect for your customer during a sprint or early mockup phase. Sometimes delight is serendipity, in the coding process you find something beautiful to reveal to customers. Sometimes you get to functional and delight is still not there. The hardest choice to make is to admit your users are NOT delighted – and that you got it wrong – and you have to rebuild (or reshoot in movie terms). If coders cannot be users of the code themselves, you must connect them to customers, not just product managers. Code must be seen in use to understand delight in its’ use.
Applications have one distinct difference to movies. Movies get one distribution, or maybe an additional director’s cut. Applications get multiple versions. On the plus side, this allows you to address challenges over time. However, be careful this does not turn into the dependency on the adage of ‘we will delight them in the next release’.
EDIT: Reader’s asked what happened with the poetry reading? The audience applauded, but I realized I was better with processors than poetry. 😉