It goes through many iterations but also incorporates a ton of customer feedback while it iterates. I will be talking about software development in this post with examples from my career and video games.
What makes a high quality video game? let us compare cyberpunk 2077 with Hades and the different development approaches.
The Jimquisition YouTube channel awarded Hades game of the year for 2020:
They credit the many years the game spent in beta and incorporating customer feedback along the journey as main reasons why Hades as turned into the awesome game it is.
There was never any forced “crunch” time (think overtime and sleeping under your desk) and the game has been well received by the community at large.
Where as cyberpunk 2077 has been the biggest hyped up flop of a game to be released in 2020. There’s an outstanding class action lawsuit, many reports of bugs and Sony pulled the game from the ps4 store.
Yahtzee only got their review copy unlocked 1 day before release, that’s not a lot of time to incorporate any user feedback:
Big Bang releases are bad
Hades had a team of roughly 20 people, they decided to do early access in 2018 on only one platform (the Epic Game Store) before porting to other platforms. It took them about 3 years of development. Source: Wikipedia.
Cyberpunk 2077 was announced in 2012, the team started at 50 people and grew to 500. It was released on all platforms at once and subsequently pulled from the ps4 store. Source: Wikipedia.
With all of the money, time and resources behind cyberpunk 2077 you think they’d able to release a solid game. However big bang releases and expensive projects don’t always get released as planned.
Pick one platform
If you are looking to develop a mobile app or website, pick one platform to learn and iterate on. Don’t start with an Android app + iOS app + Web app only to learn you built the wrong product. Depending on your situation you might pick one platform over the other.
When I was working at Tyro and we were working towards our banking licence, we built an iOS app first for managing your business bank account. Android came after we got our licence and a web banking experience wasn’t even on the tables by the time I left.
My current team released version 1.0 of our app in March in 2020, we’ve since done monthly releases and incorporated customer feedback into each release. This has been a great way of starting with a basic app and fleshing out the features to be the best superannuation app on the market (look I’m biased).
Keep an eye on the app store
Tyro is still doing pretty well on the app store, especially compared to something like the myGovID app which has a similar number of ratings.
Delivering quality products
You don’t need a giant team or lots of $ to build high quality products. If you start small and incorporate feedback it’ll be money better spent than a big bang approach.
We don’t say manual programming, do we? But programmers use their hands too? Why do we have manual testers? It’s one of my biggest bug bears. You can read a day in the life of a mobile app tester for more info.
With the whole work from home situation I’ve spent some time tweaking my desk set up to make it more ergonomic. This blog will go through my set up, purchases and learnings along the way.
Today’s Desk Hardware
MacBook Pro (work machine)
Logitech G105 keyboard
Razer Basilisk mouse + pad
Vertical laptop stand
Acer G245H 24 inch Monitor
Selfie stick/phone mount
Logitech c920 Webcam
Rode podcaster MKII microphone
Rode microphone arm + shockmount
Astro A10 headset
iPhone 11 Pro
iPhone XR (work’s test phone)
iPhone 6 (work phone)
I’ve bought most of this equipment second hand, over the last 2-3 years.
The windows machine was built from second hand parts and hand me downs from my partner (they upgraded their graphics card and gave me their old one). The surface/bose headset are also hand me downs from my partner too.
The Mac Mini, mouse, webcam, laptop stand, desk arms, a10 headset and samsung s10 were purchased new.
Here’s the cable’s under the desk (it’s still a little messy):
My tiny bedroom
My room is tiny, I can fit a single bed and a desk and that’s about it. Adjusting to work from home was hard for me. My apartment is freezing and I don’t have a lot of space.
I live in a 2 bedroom apartment in Crows Nest, it’s 6km from the Sydney city centre and before the pandemic I would occasionally walk into work. Walking across the Sydney Harbour Bridge is an iconic way to start the day.
My share of the rent is $210 per week. I charge a little more for the larger room. I have an obsession with tiny houses, hence my loft bed arrangement.
Working from the lounge room
Earlier on in the pandemic I was working from the couch/bar table. The lounge was more comfortable and there was a better heater in there:
However the issue with this set up was shoulder/ankle pain from a poor sitting arrangement and not exercising enough.
All of the heating equipment
To keep warm during winter, I bought an electric blanket, an electric throw rug and an oil heater for my bedroom. Sydney can get cold in winter. It’s almost as if our houses here aren’t built for the cold.
Upgraded equipment along the way
I upgraded my computer chair and monitors more recently. They were still second hand equipment, I needed a mountable monitor which my previous monitors didn’t support. A KVM switch allowed me to downgrade to just one monitor output for 2 computers.
One of the issues I have is the webcam is a little blue when I record with it. I think getting a mirrorless DSLR camera would be better for filming video but that’s an upgrade I don’t want to make just yet.
Also considering when I create videos, my desktop screen share takes up more real estate and my web cam is just a small part of the video.
Having a portable set up would be nice
When I’ve filmed from my partners place this is the set up I’ve used:
However OBS is a challenge to get working on a mac environment consistently. Hence why I prefer to record from a windows machine. I’ve tried setting up the surface as a mobile set up. It doesn’t have enough grunt and I think there was a config set up issue when I tried.
I’ll leave you with a few more clean desk porn shots:
Have you tweaked your WFH desk arrangement since the pandemic came along?
It has embed links and is very brief. It has a visual timeline at the top with recent experience. If you want more information about my work history you can always check out my LinkedIn. I don’t need my entire work history on my resume.
The 2 Page CV
I use this CV (PDF) when I feel like the 1 pager is too experimental. However the job application process is broken and resume’s aren’t all that useful. They are just a token part of the job application process. I’ve gotten my last 3 job offers by networking, speaking and meetup events and blogging.
I’m studying to be a financial advisor and I’ve been exploring many of the mobile apps out there that can be used to help manage finances. This post is a review of the ones I’ve used so far. My preferred apps are listed first.
This is NOT financial advice or a product recommendation, a professional can help you if you have any concerns about your finances.
I own shares in CBA, Westpac, Eggy & Tyro. This represents a vested interest.
Otherwise most of my banking is done through CommBank. I have used a variety of other banking apps but they are all kinda similar. 86 400 has a bank feed integration feature and a decent predictive bills feature which is cool.
The bank card I received from Xinja was the funnest card that I received:
If you need to do EFTPOS/credit card processing as part of your business Tyro is cool. I worked on their mobile app a few years ago. Otherwise I use commbank as my main business account because the fees are cheaper than westpac.
CommSec pocket is great if you are learning to invest and has a minimum investment of $50, but the fees can be expensive. Raiz has an auto roundup on bank transactions for the purposes of investing which is nifty.
Most of my portfolio is held in CommSec (minimum initial investment $500). BrickX isn’t a mobile app but their website is mobile friendly and I’ve been using the platform to learn about property investment. BrickX may not be great if you need to liquidate those investment quickly though.
This is starting to get towards the bigger end of town in terms of minimum investments. If you have a larger portfolio these options might be worth considering. These products aren’t all mobile apps but they have very attractive web portfolios for checking this stuff while on the go.
I don’t have much invested in spaceship but their managed portfolio has exploded recently mostly due to US tech companies doing exceptionally well during the pandemic.
I’m biased, the mobile app that I’ve been working on for the last 1.5 years is the best one here. However Sunsuper is my main super and I like Aware super. Grow is also pretty but it was confusing to use at first.
A few days ago I posted on LinkedIn that I have hardly written any test automation code in the last year:
And I had a few people ask, “how do I test during a code review?”. So I thought I would dive deeper into what an average day for me looks like.
My Role; Software Engineer in Test
Officially my role is a Senior Software Engineer in Test on a mobile app team, it’s a little like this role description but with a mobile app focus instead of a C#/web focus. So why am I not writing test automation code? It’s there in the job description.
I’ll start my day by checking our scrum board for our current sprint and figuring out what my focus is for the day. What tasks have been assigned to me and what needs some focused testing:
I use git to help me with large code reviews. The developers will create a pull request with their new feature. I’ll check that code out on a local branch and use Xcode/Android studio to test that code on emulators/simulators. I’ll often use this git command to do so:
I’ll explore the new feature and pass the code review. I’ll chat with the developer if there were any issues observed. I might even run the tests they’ve created as part of that pull request.
I don’t do this for every code review, if it’s a small change I’ll approve it and once it’s merged into the main dev branch I’ll update my local to test those changes. Then I’ll test on emulators/simulators or I’ll wait for our continuous integration (CI) testing pipeline to produce an app file and test on devices.
I have a similar set up for Xcode, we are in the process of dropping support for iOS 11 because we’d also like to update Xcode.
I also sometimes checkout backend code but my work machine isn’t set up to be able to build our back end locally. I’ll usually use a test environment to test API’s via Postman or cURL.
Helping with unit testing
I’m more likely to help the developers I work with come up with unit testing strategy. E.G. we were working on a feature recently to add up transactions over the last financial year and we have over 100 different transactions types.
We came up with an approach, if we give every transaction it’s type as it’s value we can more easily check the sums invoved. E.G if one category to calculate was:
we could say we’d expect the unit test result to be $4 (2+3-1). We created the mock JSON that went into the unit tests and it really helped the developer figure out how to test this more easily.
Supporting the App
I helped my team build out a mobile analytics dashboard where we could monitor user engagement and any potential issues that needed more investigation. Recently I’ve be checking it nearly every day and helping my team add more sections because we’ve got an SSL certificate issue at the moment.
We release our app monthly and we’ve got 7 versions that our customers can be on. We have a force update API that the mobile app will hit before it starts the log in process. If a user is on an unsupported version they can’t log in and are directed to the play store to update.
BUT this API uses HTTPS and our production SSL certificate expired recently. We haven’t built certificate white listing yet so it means instead of the old app seeing a forced update, they see a generic error message instead because the SSL certificate has expired. Oops, our bad.
We were able to get 98% of our regular app users onto the latest build with the latest SSL certificate but people who log in infrequently would not have seen the forced update. We are monitoring for an increase in generic error messages and hoping that no one gives us a poor review on the app stores.
Most of my code changes involve adding mock JSON data to our mobile app mocking framework. We can test our mobile app independently of any test environment. It’s a really cool feature that I’m proud of our team for building it.
We have a bunch of profiles mocked into the test build of our app. E.G if you wanted to see the difference between a pensioner vs investor you can change the profile in the test build.
Our whole business has access to this test build to help the company support the app (not every staff member has an account to use the app with). Sometimes these mocks need updating. As a team we’ve discussed a programatic way to keep these profiles up to date but it’s a little hard and hasn’t been prioritised.
If we are working on a new feature and I’ve recently been testing the API, I’ll often add the API mock test data into our mobile repositories ahead of the mobile dev work to make that process easier.
Recently I’ve been branching out and helping the design team with competitor analyst and research for new features we are working on. For example, how do other mobile apps handle two factor authentication?
Running a bug bash
every few sprints I’ll book the team in for a bug bash. It’s dev tools down and bug hunting goggles on. I’ll organise some snacks and a confluence page of test data and information about what has changed recently to help people focus on what to test. We award our best bug bug hunter for their efforts and add bugs found to the backlog. You can read more about running a bug bash here. We try to keep it fun and social.
So yes, I haven’t written much test automation code and this is ok. The developers I work with are great at writing their own unit and integration tests. Does this make my work any less valuable? No.
I enjoy engaging with customers and analytics more than building out test automation code. If you are interested in learning the technical skills that I use on a day to day basis, I have a technical testers guide here.
Wow, we are just as close to 2070 as we are far from 1970. How did they test software 50 years ago? You’ll be surprised to find out, very similarly to how we do it today. The main difference with testing approaches today is the access to technology is greatly improved.
Nearly every developer has access to tools that provide fast testing feedback for what they are working on. Software testing has evolved with the history of computers.
Landing on the Moon
We first landed on the moon on July 20, 1969. This required a huge amount of testing across software, hardware and with astronauts. There were no second chances if this stuffed up. A lot of the Software Engineering practices developed for the moon landing have established themselves as decent practices today.
Hamilton led the team that developed the building blocks of software engineering – a term that she coined herself. Her systems approach to the Apollo software development and insistence on rigorous testing was critical to the success of the Apollo Project
When it came to testing the physical hardware/software, there were 5 guidelines which were applied to all spacecraft tests:
Building block approach to testing. Each component was verified before integration testing.
End-to-end testing. The use of mocks and substitutes was minimised.
Isolation and functional verification of all redundancies. All code paths were proven with end-to-end tests.
Interface testing and verification. All interfaces were consistent.
Mission profile simulation. The astronauts were involved with real user testing.
These guidelines still ring true today and actually align with this mobile app testing strategy my team uses. The only difference is today we don’t need to build a space hanger to do end to end testing. Oh and getting users involved with testing reminds me of Soap Opera Testing; what could possibly go wrong?
Software Bugs from History
The Y2K bug from the year 2000 (any old computer that used YY as their year format, e.g. 99 might stuff up when the year 2000 rolled around) is an interesting lesson in how bugs in software shape the industry.
This bug caused a huge investment into updating mainframe computers all around the world and established India as the outsource IT capital of the world.
Globally; $308 billion dollars was spent on compliance and testing and it helped build more robust systems that survived the system crashes from the 9/11 terrorist attacks.
A lot of these business critical mainframe systems were built during the 70’s and 80’s. A lot of finance industries around the world still rely on these systems.
I’m currently reading Jerry Weinberg’s Quality Software Management, which was published in 1992 and he has some references from the 70’s. Once I finish reading the book I’ll put up a summary here too. I reckon it’ll be just as relevant today as it was in 1992.
What lessons from history have influenced your testing approach?
Have you heard of the Agile Manifesto? It was published in 2001 when 17 blokes who work in tech came together to come up with a consolidated way of working. They came up with 12 principles which still hold up today. It’s worth a read.
This blog is digging into the archives and asking the question; where are they now? It is in alphabetical order by surname.
Finally I’ll leave you an Agile is Dead talk by Dave Thomas. It’s probably one of the most viewed software engineering talks on youtube that I’ve seen since I started putting this blog post together (over 1.2 million views):
Surprisingly, only one of these blokes is confirmed as dead. And there is a serious lack of diversity in this group. However they have all been instrumental in current development practices. Who hasn’t heard of Agile?
So who do you think is driving software development further these days?
Other benefits with building with accessibility in mind are known as the Curb-Cut effect. When people first introduced curb cuts (i.e. sloped ramps) at intersections for wheel chair riders they discovered that many other people benefited too; i.e. people pushing strollers/shopping trolleys, people with deliveries and people with walkers all used these new curb cuts to help navigate their urban environments.
Over 4 million people in Australia live with some form of disability. That’s 1 in 5 people (1). Over my lifetime I’ve experienced a number of health issues that have impacted my abilities temporarily. I might not be living with an officially diagnosed disability today but I frequently use features such as the closed captions on YouTube and Audio Books when I feel like changing up how I consume information.
It’s easy to get overwhelmed when thinking about accessibility testing, there’s many different levels of accommodations to consider (7). Getting started with the following is a good step in the right direction;
Vision Impairment (Can people use screen readers interact with your content?)
Hearing Impairment (does any linked video content have closed captions?)
Mental health/Intellectual/Autism spectrum (Does your content overload people’s processing ability? Is it easy to read and follow?)
It’s no wonder people often put this type of testing in the too-hard basket. However if you start with testing with vision impairments in mind you should be able to get a good return on investment towards a more inclusive experience.
Screen Reader technology
Most vision impaired users will use some sort of screen reader technology to browse the web. Even I use this technology when I feel like listening to a news article online instead of reading. 2.3% of the US population have some sort of vision impairment (2). This statistic is likely to grow with an aging population. The growth of voice interfaces will also grow the use case for this technology. I prefer using iOS’s VoiceOver technology but there are many other tools out there; Windows comes with Narrator and Android has TalkBack, there’s also the paid software JAWS.
Using VoiceOver with mobile apps
On my iPhone, I can go into Setting > Accessibility > VoiceOver to enable the screen reader:
I enable accessibility shortcuts on my mobile device to make it easier to use. When I press the side button 3 times, I can easily switch accessibility features on and off.
When I test using VoiceOver;
First I’d navigate to the app/site I’d like to test
Then enable VoiceOver using my shortcut
Finally flick/scroll two fingers up the screen
This enables the screen reader to read everything on the screen from top to bottom and I can test if the flow makes sense. There are plenty of other guides out there for using VoiceOver (12). I suggest switching on a screen reader on your mobile device and getting familiar with the technology. As a test, can you figure out how to take a photo on your phone using screen reader technology?
Large font accomodations
Jacking up the font size or using a dyslexia font plugin in on chrome is a great way to find ways your UI may break. Watch out for views that don’t scroll and text that doesn’t line wrap.
Alternative text for images
Screen readers will read out the alternative text for images for vision impaired users who can’t see your images. Alt text is an optional field for HTML image tags. For example, using Campaign Monitor’s Email Builder I have included an alt text tag with my image to convey the message of the image for screen readers. Here is the HTML tag for the image;
<img src="darth_vader.jpg" alt="Meme; Come to the dark side ... we have cookies">
This is what this email looks like with images;
I used Firefox’s web developer tools to replace images with their alt text to see this next view of the same email;
Check you have alternative text for your images and that it makes sense
Check that you have blank strings or no alt text options for decorative images so that screen reader don’t try to read the image or the file name
Don’t include words like “image of” in your alt text because screen readers will announce it’s an image and then announce the alt text. You will get a double whammy “image. image of blah” from your screen reader, this is super annoying
Use tools that display the alt text or replace images with their alt text to help test this
Test your images for colour blindness
About 4.5% of the British population experience some form of colour blindness (3). To help test this I have a grey scale shortcut button set up on my iPhone. On a side note, setting up grey scale for your phone helps make it less addictive too (17).
Hopefully you now realize that testing for accessibility in your apps/websites isn’t that hard. If a screen reader works with your content, you have alternative text fall back options for images and your images are still readable using grey scale you will be most of the way there in providing an awesome, inclusive experience with your online content.