Recently I was working on a feature for one of my freelance clients and luckily this time I was able to step on the break before reaching that special moment where in the past I’d have thrown everything out the window.
Instead of freaking out I decided to just voice my opinion, one hard won after years of experience in the industry. I opened the project Slack room and just voiced it and then laid back waiting for feedback. Well, I tried to lay back but what I actually did was to start writing a long list of justification for what I had just written shaking in anxiety of having done bad.
Time went by and words piled up leading me to take the decision to move that stuff out of the Slack input box to a blank notepad file before inadvertently hitting the send button. Meanwhile I got a reply and that was the one I was actually longing for. I could not believe it. All my muscles instantly relaxed and I was invaded by that sense of having accomplished something awesome.
So it turns out I never needed to send that follow up which by now I’m already pretty sure would’ve overwhelmed my client and certainly shaken a bit our relationship.
What comes next is the message that never got sent.
By having this conversation I want to avoid having to make a buggy/hacky implementation that takes an imposible-to-estimate amount of time to complete.
I can certainly do whatever you want however I cannot guarantee a bug-free solution that works for all the possible use cases with the rather insufficient information and the limited time we currently have available.
I think we need to stop for a moment and take a step back to ask some fundamental questions before moving on.
I believe that by now I have already proved you guys that I’m able to write functional, fair-quality code. Now I want to make sure I’m delivering the right solution and adding value to your business.
So what is the goal of 456? What is the use case we want to optimize for?
Is it really important to spend so much more time getting right a design that might have taken you guys 5 minutes to put together moving widgets around without apparently really thinking through what it really takes to actually make it work within the web platform constraints.
Please don’t take my words personal, I’m just trying to be objective here. I want to suggest us to get lean with this feature and implement something straightforward that is fair enough to use without freaking out too much on how it looks or whether it’s the ultimate solution.
On a high level I think we should aim to get something that behaves predictably, is functional and doesn’t break as soon as something unexpected happen. Setting some hard width and height values for ABC so far has proved very difficult to get right as well as implementing some of the layout features such as DEF without eating up GHI preview vertical space.
Let me know what you guys think. As I told you I have some ideas on how to get there not by changing everything but rather tweaking a bit what you guys already came up with.
So the conclusion I take from all of this is that we should have no fear about voicing up our opinions as long as we’re reasonably sure about it. That is not to say we shouldn’t evaluate situations case-by-case. In my experience I found that very often the line between voicing a well thought opinion and one that is just not quite there can be very thin.
For now when in doubt I’m probably keeping my mouth shut, at most writing thoughts down because I found it helps me deal with anxiety. I did things the way I did because I was pretty much sure about what I was thinking about and was also ready to back my opinion with a lengthy argumentation if that was necessary. Furthermore, the situation was one worth to approach with confidence. After all I want my clients to get things right and thrive with their businesses.