Lessons from Grant about Software Development

I've been at FedGroup Financial Services for 6 years and 5 months today. As I look forward to new opportunities and a new chapter in my life, I've taken some time to have a look at my tenure at the Sandown office. Overall it's been a fantastic experience.

But as life goes, it's not always a great, and I've had my fair share of the lows. From one specific low though I decided to open my ears and eyes and actually listen to my boss Grant Field. Young as he is, dude's got some wisdom. These are just a few of the things he's said in meetings and left me thinking "Damn, I wish I'd said that":

    1. GUI
      GUI is very important as it creates usability. Your software may do great things (or not) but if the GUI is not user friendly, consistent and not usable, your users will not appreciate what the software can do.
      Example: Mac OSX is still a UNIX kernel, but UNIX as an OS is dead because it is unusable. Apple has been making fancy, usable improvements for a long time and continue to succeed.
    2. Perception
      How your users perceive the software will greatly impact how they use it. Frequent interruptions (due to fixes) or rolling out of functions that have not been well tested will ruin the 'reliability' perception of the software as well as the confidence the users have in the software.
    3. Elasticity
      A system needs to be able to quickly scale up, or down, according to needs. An example is how Twitter becomes overloaded when some huge event happens (e.g. Michael Jackson's death? don't remember) and crashes the service. This is really a hardware issue... So a system needs to be proofed in such a way that when additional capacity is needed, it can be quickly added and when it is not, it can be removed. Obviously when you own the hardware it, it makes this kind of elasticity really difficult to achieve because you have to buy the hardware, and can't sell again after.
    4. Continuity
      A system needs to be able to carry on in the event of failures in hardware, people, networks, etc.

      (3 & 4 happened in a conversation about future-proofing the app and cloud considerations)

    5. Data Cleanup
      When asked, how do you clean up data... he answers: you fix your process that your data is clean going forward and you deal with the crap after - instead of continuously chasing a moving target of new dirty data.
    6. Disaster Management
      Three things to avoid a disaster (said in the context of a missed EFT payment):
      - Don't leave the important things to the last minute. Define proper cut-off times to kick off 'last minute protocols'.
      - Communicate. Let the relevant stakeholders know if there's a problem, so as to manage expectations.
      - Plan B. There's always more than one way to do really important stuff. Implement Plan B now.

I feel blessed to have worked under Grant's leadership. I'll carry the lessons going forward, to be the best I can ever be.