I get to spend a lot of time with junior developers and designers – actually at my age it seems like everyone’s a junior developer. We spend large tranches of our time together discussing the various designs, architectures, technologies, patterns and standards that will best address the particular problem domain we’re exploring.
Inevitably the conversation turns to the question of priority: what is the most important thing? The need to apply ‘best practices’? The use of patterns? SOLID? Structured Exception Handling? Language? Platform? Or is it speed of development? So I tell them: the most important thing is to set their own high standards and stick to them.
The fault, dear Brutus, is not in our stars, But in ourselves, that we are underlings.
Julius Caesar (I, ii)
I have a particular point of view on this issue that is grounded in what I believe I am as a member of the software development community. This self image is a unique amalgam of artist and scientist, craftsman and engineer, innovator, leader and developer.
So we get to the point of the title of this article. The most important person I must satisfy with the work that I do is myself. On this point I cannot compromise and should never be asked to.
I encourage everyone (who’s interested) to develop their own standards and then not to compromise those standards. This is not trivial, and should not be undertaken lightly. Determine what is genuinely important to you, your values, and then build your personal standards around those. Of course, at the risk of sounding like a life coach, the same approach could, arguably should, be undertaken for any aspect of your life, but that’s a bit beyond this article.
I have found that almost universally the standards that I hold myself to are at least as high, and more often higher, than those that are expected by any of the people I’m consulting for or working with.
This might all sound a bit rigid and uncompromising, but in practice that tends not to be the case. The simple test is the question:
Is this the best work I could have done in this case?
If the answer to this question is ‘no’ then the first person you have compromised is yourself, the first person you have disappointed is yourself, and the first person you have let down is yourself. The only long term outcome than can follow is dissatisfaction: you can’t be happy if you’re never reaching your personal potential.
The important element of this question though is ‘in this case’. Unless you live in a vacuum, you have a responsibility outside of yourself. Whether it’s a customer, employer, partner or teammate your work is part of some larger plan and naturally is not completely under your control. You may not control the delivery date, the architecture, the platform, the design or the price – in fact you might not be in control of anything other than your small piece of the puzzle.
Given these factors, you are operating under a specific set of parameters. You can possibly negotiate those parameters but ultimately there will be parameters, a boundary that you should not cross. There’s no point in delivering something of exceptional quality, wonderful design or magical engineering if everything else fell apart waiting for your magnum opus.
Understanding that a boundary exists, is this still the best work you could have done? Your chances have certainly increased with this knowledge, but time and again I see people who continue to compromise their standards. Why? well there are a couple of patterns that emerge time and again:
- You didn’t understand the boundary – there’s always a boundary and the onus is on you to discover it and adhere to it
- You understood the boundary, but you disagreed with it – worse again. In this case, you already lost the argument, but decided that the decision was wrong so you ignored the boundary
- You understood the boundary, but you misunderstood your own ability
- You understood the boundary, but refused to adjust your own behaviour to the boundary – you over committed
In the end, all that happens is that you put yourself in a position where you couldn’t do your best work. So you were forced to compromise late and, if past experience is anything to go by, you then looked beyond yourself for a reason rather than taking responsibility for your decision.
Wait a minute, this is my fault?
The problem with setting personal standards is you also have to take personal responsibility for what ensues. If you haven’t done enough work to make the right decisions then that’s on you. You must understand that one of your standards must be the ability to make the most appropriate compromises in a given context. Eventually you might rise to the point where you don’t have to compromise, you’ll be the boss, at which point the only compromise you will need to make is in regards to salary – compensation for working with a boor.
Here’s the horrible list of questions to ask yourself:
- Did I understand what was being asked?
- Did I have concerns over what was being asked for?
- Technically, Financially, Temporal Constraints (it means time), Resource Constraints
- Did I voice any concerns and ensure they were known?
- Am I sure it wasn’t a Pyrrhic Victory where I got to make my points but ensured nobody would listen? Did I just upset everyone with no value?
- Did I clearly identify for everyone what compromises I would make to meet the requirement?
- Did I ensure everyone agreed and understood what I was going to deliver in the context of these requirements?
- Did I ensure that I was maximising what I was delivering? Did I pad my estimates to allow myself more time?
- Did anyone (or perhaps everyone) know that I was fudging my numbers – undermining all of my objections, suggestions and compromises?
- Did I allow anyone change what I was going to do in a one to one conversation later?
- Did I communicate any change far and wide? Along with a synopsis of the consequences? Did I make sure I didn’t trip anybody else up?
To summarise, did you ensure that you didn’t compromise your own standards of integrity and honesty? Did you communicate at the level you would want to be communicated to? Did you do everything in your power to ensure success?
Look it’s not easy, but it allows you to hold your head high – secure in the knowledge that you consistently strive to do your best work. People recognise this, and are drawn to it: you have integrity which should be prized above all.
Its not all rainbows and unicorns. Things happen, projects fail, your work may not always be recognised but the mental calmness that comes from knowing you did your best will help get you through the rough patches.