Something I just realised (shamefully late).
As the world advances and we continually innovate, there are two institutions that remain stubborn – and ironically they are both born from the Industrial Revolution:
1) Schools (and classrooms and teaching methodology).
2) Offices [for information workers].
Both are built around factory line work and designed to keep workers “in line”.
How do I do software architecture and design?
Mostly I sleep on it.
Seriously – I’ll can sleep on a problem for months before coming back to it.
Or some problems I’ll chip at – an hour here, a couple of hours there. Not thinking about it in between, then coming back with a fresh mind.
Sometimes I build on previous work, and other times I might scrape it and start again.
Obviously I think a and work hard to develop a solution, but the element of design that I never hear talked about is “walking away and leaving it be for a bit”.
Working in the corporate consulting world, every project that has gone belly up I want to attribute [in hindsight] to the architecture and sales team(s) writing a proposal literally up to the 11th hour to submit by a deadline.
That’s no way to design a solution.
Like a published book, great software is never created in the first draft.
I follow (and am a patron of) someone on YouTube who creates content about games.
He’s colour blind.
And he continually makes me think about how shit the world must be to people who… I was going to say: “who are colour blind or not as able bodied as the creators of things”.
But I realised how narrow my thinking is.
What about women in male dominated workforces?
And people of colour?
And everyone else who is not in the exact group as the people who design and build the things that are thrust upon the rest of the world to use?
The Western technology world (Silicon Valley, etc) produces a whole lot of technology “solutions” that are not so much what I would call “discriminatory” as they are just “narrow minded” – because they’re designed from a self-centred ignorance more than from malice.
The solution: Usability testing.
Gather a diverse range of people and ask for feedback.
It doesn’t even have to be a lot of people for high gain. A few dozen people spread across the spectrum.
But that costs money. And may prove the designers wrong.
Something a lot of software business leaders don’t realise (and more than a few software developers):
Writing software is like writing a book.
Authors never get it right on the first draft (software: first deployment).
And they rarely even get it right on the second draft, and sometimes not even the third.
Some parts of a book can take many drafts to get right before it’s published.
Yet there’s a lot of software that gets released after the first draft and not touched for man years (even in the age of agile).
If a software business is not iterating over its product – i.e. reviewing, refactoring and iterating – then they’re not producing a quality product.
And the benefit of software is that unlike a book, software can be updated (corrections, bug fixes, improvements) after it has been published.
Would I buy a “first draft” book? No.
So why should I accept first draft software products?
Everything people create for other people has a usability/UX component, including movies.
What is the thing people interact with in movies? The “story”.
We may not interact with it in the same way we do software, equipment and real-world objects – we can’t touch or control it – but it has an “effect on us” as an audience.
A reverse interaction, from the audience’s point of view.
The same can be said for music, books, art, blog posts, documentation, teaching…
Creators of content need to be just as aware of UX as creators of things people use.
The secret of my “success”?
There is no secret.
- I’m dyslexic.
- Reading is difficult.
- And I’m a slow learner.
- I have an atrocious memory, so I have to write everything down.
- I have zero natural talent in ANYTHING I do. I’ve had to learn everything the hard way, and for me learning is extremely hard.
- Imposter syndrome haunts me every single day.
- In the last 6 months the main lesson I’ve learnt is how rubbish I am as a programmer, and I’ve been reading and writing code for 25 years. Put it another way: I suck at the primary output I’m paid for.
- I have literally “brute forced” my way to where I am today by working harder than others, listening more, and doing the dirty work, every single day.
I’ve been creating software for 25 years, and I’ve been a “professional” in the industry for just on 20 years.
And every day I feel as inferior – actually, I feel more inferior – as the day I started.
And that’s OK.
Because that’s life.
On social media, I tried writing a “happy Father’s Day” message (for Australia) but I stopped myself when I thought of the fellow men who cannot, or will never, be a father.
Likewise, for the similar women and non-binary people who have no day that celebrates them.
I now hate days of celebration like Father’s Day and Mother’s Day (and Valentine’s Day) because they’re purely commercial days that never acknowledge the people who have no chance of experiencing them (yet expect a level of participation – i.e. giving gratitude).
Let’s instead have a single general day of “Gratitude for All People We Love” – friends, family and lovers alike – that sets no expectations on gender or circumstance.
(And no emphasis on gifts.)
After all – these days are all to celebrate those we love, aren’t they?
The need for technical tests when hiring software developers (of mid-junior experience) is a sign of 2 things:
1) The industry is not regulated and does not have the backing of professional certification authorities to enter the industry, which would largely negate the need for the rudimentary testing we see across the board today.
2) Our education institutions (e.g. universities) are failing when their name and reputation is not enough to get the “average” candidate through the door without the need for additional testing (not talking about the FAANGs of the world).
(Speaking primarily from observation in Australia.)
Do we need regulation and accredited certification in the software industry? Hell yeah!
The software industry might only be a a handful of decades old at this point, but the exponential impact software developers have on the world means we can’t wait the 500 years other accredited industries have had to see people requiring accreditation before they can practise the craft.
Reading threads on Twitter, it’s a telling sign that almost all discussions from software developers/engineers I follow revolve around code, software architecture and technical stuff.
Very few think to mention customers or the greater impact on people from what do.
My priorities are:
1) People. Our customers.
2) Security and data privacy.
3) People. Our customers.
(The only reason security isn’t #1 is because without people, security isn’t a concern in the first place.)
But to be clear, I do spend a hefty amount of time thinking about code and software architecture. They’re just not my priority.
“Legacy software” and “monolith” are just synonyms…
for “the product that pays your fucking software developer salary”!