Musings on the software development
"No battle plan ever survives contact with the enemy" is a famous phrase by German military strategist Helmuth von Moltke back from 1861.
This is just as true in software development - I can crudely paraphrase this into "No software design survives the contact with the realities of technology and actual users". I have seen this time and again over the last 15 years in my career.
Typically, any kind of software feature starts with a design - usually it's a combination of some kind of written description of how things will work and/or a set of screen mockups. Lots of time and effort is spent on thinking through the various angles, polishing the colors and alignments, defining use cases and scenarios. Then, a team of software engineers sits down to review and guesstimate the work involved. They announce the final verdict - so-many days of development - and usually also produce a nice-looking Gantt chart which outlines who does what when.
Everyone is excited, development starts. Then reality happens. One of developers gets sick for a few days. Another one ends up spending 5 days (instead of planned 2 hours) trying to make some stupid button work they way it should work - but somehow it doesn't! Yet another developer gets reassigned to fix an urgent bug in the current product version. First few times this happens, the nice Gantt chart gets carefully updated. Later on, people just stop trying to keep it current.
Finally, the feature is ready, developers are excited that their work is coming to a conclusion. Testers (aka QA engineers) get involved, plus product designers get to review it. Things keep going downhill. Testers find that if you type all capital letters into this field under Internet Explorer 9 on Windows 7, the system unexpectedly crashes. And in Safari 4.15 on Mac OS 10.6 it does not crash but does not save the correct results. Product designers look at the screen and say "Oh, shoot! This looked so nice on our mockups but is actually pretty annoying to see this yellow box every time this button is pressed. And, by the way, we somehow overlooked the fact that people would want this report".
Now the developers are really ticked off. All the carefully laid plans are in ruins.
And you know what, this is normal. Yes, it would be nice if perfect design could be created. And it would be great if people would never be sick. And no bugs were overlooked. And, and, and...
Well, we don't live in a fairyland. Changes and problems will happen. And people will adapt! New software development approaches are being experimented with all the time (so-called Agile development) - and they are still no silver bullets to solve all problems.
Do you think that a perfect iPhone was designed on the first try and then manufacturing plans sent to China to produce it? Just take a look at a modern iPhone 4s and the original iPhone. The latter looks really clunky and full of stupid design decisions. No copy-paste? Only web apps, no custom apps? No unified inbox? No push email? And that's after Apple team worked on the iPhone in secret for many years?
What really matters is how you deal with problems, how you stay cool, be flexible, navigate the path around the obstacles and keep your eyes on the final destination.
We definitely had our share of challenges with the upcoming version 4.4 - from people being distracted to urgent bug fixes in previous a version to extensive on the fly changes requested by our product team (including myself) at the 11th hour. Now we have dealt with most of them and...
Version 4.4 is entering the final stretch!
The development team have completed most of their work (including several rounds of adjustments from internal reviews). One of the byproducts is Internal release notes page - which lists the biggest and most important product changes with short descriptions and links to full details on each:
Our senior product designer Evgeny just presented the new version internally. Marketing team is now planning updates to our website and other materials, and technical support team will start next week on playing and learning the new and changed functionality, getting ready to update our online help pages. Still, the actual launch of the new version is more than two months away - we plan to release it by end of June. Lots of things still to do:
- Developers still have quite a few bugs/comments in their stack
- Testers will be going through the whole system with a fine toothcomb - several times
- Infrastructure engineers will have to prepare, deploy and test some new servers (some new servers to scale up performance, also special servers needed to support https data encryption functionality)
On the subject of testing - the holy grail of testing is automating it. In theory this sounds nice and exciting - press a button and some automated code simulates how someone would use the system, check the results and notify someone if things don't check out.
The reality of modern web systems is that this very hard and time consuming to do. For starters, simulating user behavior - all those clicks, mouse movements, field selections - is not that easy and prone to glitches, leading to false alarms. Then there are questions of timing (how does the testing software know that the page has fully loaded and button can now be clicked?), various browsers, changing user interface - and the end result is that it takes to long to automate anything except for the simplest workflows.
Still, this is something we have been and will be working toward - and just to give you an idea, we have listed more than 200 test cases just for the login process (the simplest workflow out of many dozens in Wild Apricot).
The end result is that good old manual testing is still the best way to test software. Our test team will lead the way and give us a go-ahead for the final launch date which hopefully will be some time by end of June.
One other thing we plan to do is organize a preview of version 4.4 for our clients around Toronto. We have been planning to start Wild Apricot user group for a while - and now have a good opportunity to do this, tentatively mid-May . If you are a current Wild Apricot user from around South Ontario / Great Toronto Area, please get in touch with us (you can simply contact support) and let us know if you are interested in participating in our first User group meeting - previewing the version 4.4, meeting our employees etc.
Welcoming new Wild Apricot team members
We're pleased to welcome two new Apricots to the fold.
Justin Lee brings great experience to our already excellent support team. Justin has over 10 years of direct technical support work under his belt along with many years in the customer service industry. Justin worked with our support manager Kathryn and is known for his hard work and dedication to his team and customers alike. Outside of work, Justin is busy spending time with his family including 2 boys and his wife. Justin's creative outlets include 2D drawing as well as 3D computer graphics work using Maya and other 3D software.
Starting in a brand new role, Steve Andrews joins our product design team as Technical Communicator. He brings more than 20 years of technical writing experience to Wild Apricot. Steve has a wife and two daughters, and enjoys playing guitar, soccer, hockey and riding his bike. Steve will be responsible for making sure our online documentation and other texts within the product and our websites are clear and informative - as well as produce video tutorials!
We hope you'll join us in welcoming Justin and Steve!