My Last Decade in Tech (2010-2019) and what Next?
Phil Spilsbury, Esq.
?????? Veteran Programmer ?? Building TextZformatter & zubbit.io and more ?? Passionate about AI ?? | Indie Games ??? | Tech Enthusiast ?? | Living with MS ??
Gosh, another decade has ended and a new one starts ??
Having been in the Software Industry since the 1980's I've of course had to pivot my skills and direction multiple times. If I hadn't then I'd have been stuck a long time ago!
So I'm usually horizon scanning what's happening in the Software Industry and what new things are emerging pretty much all the time, but on the change of a decade its even more reason to reflect on what's happened over the past ten years and what direction things will take next.
So what happened in the last decade....
Winding the clock ??? back to 2010 I was working for a Software Company in Tamworth operating in the Warehouse and Logistics sector.
It was a 30 odd-year-old Software House with only a small team which I'd joined in 2007 so it had the usual mix of Legacy code, in this case, Cobol, along with various forms of .NET and Microsoft stack, along with some Java in the mix.
It was a bit of a mixed stack but I kind of liked the way we could use older Cobol functions as services to more modern systems so could mix the old and the new without a big rewrite.
The business was small but solid with some good-sized customers, including one massive tier-1 client. But as 2010 kicked in, the business, to be honest, had been struggling due to customers putting IT spends on hold as the 2007-2008 economic crash effects rippled on ??
The business weakness was its dependency on high-ticket sales partly due to the complexity of the software - due to its Legacy/.NET mix - and the hardware required both on the server end and on the client delivery side, basically too much cost to implement and support.
For me as the new decade kicked in I was looking - as I am now - for what was happening next in tech, and to me, it looked like the future was mobile. The first generation iPhone ?? had been released in June 2007, and the first Android devices in 2008, and the first iPad was released at the start of 2010, so something new was happening.
Looking at what these devices could potentially do was really getting me excited and should have been exciting for a lot of people. Remember, phones up to this point were just phones but this new generation of devices offered the ability to run software on them so could be so much more.
This, of course, got my brain ticking and what I envisaged was a sliming down version of the companies warehousing application, and running it as a service over the internet, so what we now commonly call a SaaS. We could then use mobile devices to facilitate the movement of goods in the warehouses and into the trucks and also supervisors could use mobile devices to monitor what was happening rather than using desktop computers.
So by doing this, it would open the doors to all sorts of sized of customers who may be couldn't currently afford the existing heavyweight offering and it would be a lot easier for us to support with all the complexities cut out.
I took the idea to the Managing Director but he had bigger things on his mind as the company spiraled into a black hole ?? as one customer after another froze their spending.
At the start of 2011 that company was all but beaten and had to reduce down to a shell workforce to survive, so I moved on.
So I needed a new direction and one that would allow me to move into the new tech directions I felt were going to dominate the decade.
I decided that a good route to allow me to explore new skills was to shift into the contract market, and certainly, in a time of uncertainty it was a great time whilst businesses sought to keep projects moving forward without the long term costs of taking people onto the payroll full time.
Contracting was going to let me pick and choose projects with more frequency and therefore I could shape my own direction a lot better.
So at the start of 2011, I set up a Limited Company and became a Contractor ??
The first role that came along was for the ?? opticians Dollond & Aitchison who at the time were in the process of being absorbed into Boots Opticians. The role itself was another one of trying to adapt a 30-year-old Cobol system to use a modern .NET or Java front end, but I still had this thought of the new mobile frontier so I decided to turn down the offer from Dollond & Aitchison and keep looking.
The next thing that came along was a rather vague project spec for a project for the National Health Service (NHS) who wanted to hire someone for a project who knew .NET, or PHP and had some mobile skills or interest in mobile.
Brilliant I thought, this one is for me and I made contact and snapped up the chance to work on this project. The NHS was paying less than market rates but in terms of tech stack it was a direction I wanted to move into.
The first project I undertook with the NHS was an assessment based tool, and initially, I was asked to build it as a web tool for pilot ahead of potentially taking it onto mobile devices in later stages.
The NHS trust was using a .NET stack, but for portability and the potential to open-source this across the whole NHS I suggested to the Techincal Director and project leads that we should be writing this in PHP. Despite much noise from the in-house .NET DEV and Microsoft infrastructure teams, the project leads agreed with me. The biggest prize lay with being able to take this beyond one NHS trust.
Java, of course, was another option and having also been a Java Developer for about 7-8 years then it would have been a good tech match for me but I just felt PHP was on the move, plus was cheaper to host and didn't have all those annoying memory leaks.
Years before when I was a full-time Java developer, Java had promised to be the language of the web but in the years since up to 2011 PHP had made great strides to prove its OO credentials with Frameworks like Zend and Codeigniter springing up in the 2nd half of the 2000's.
Don't get me wrong, I still think languages like Java and C# have more of a claim to still be called the defacto business enterprise languages but in terms of the web PHP had usurped both from its early days as a scripting language, and it was portable across operating systems like Java was.
So PHP it was..
So I shifted into a PHP direction for this project and although there were several frameworks about, I decided to hack together my own using a mix of an existing framework and mixing in elements I liked from Java frameworks like Struts.
The product was built and piloted across Warwickshire and I presented it at several conferences and to project chiefs at events at the Houses of Parliament several times. So it was a great success. I did have to wear a necktie ?? to get into the Houses of Parliament though, but its the only presentation I've been to which ended with a Champagne lunch. They do live it up in Parliament ??
So the next stage was to take it onto mobile but on what platform and mobile operating system?
Well back then there was, of course, the Apple and Android eco-systems but also a few other long-forgotten ones, including Blackberry's which the NHS was really into at the time, so the first thing to decide was, do we build for the platform/device - so go native - or use a cross-platform wrapper? So write the code once and compile for multiple platforms.
In the past, I'd written cross-platform wrappers for Cobol that allowed code to be written once but work across different hardware using different variants of Cobol. It saved a lot of time but unlike on mobile, it offered no hardware-specific benefits or downsides, so by using a wrapper back in the Cobol days we weren't losing out on hardware features, it just simply saved us time not maintaining multiple versions of the same software.
With mobile, however, my gut feeling was in order to get the best use of the device's features I needed to go Native and develop for the platform, but I wanted to explore what wrapper options were out there to make sure I'd not dismissed them out of hand.
By far the best one at the time was a framework called Rhomobile (Rhodes) and the CEO Adam Blum was really helpful to me after reaching out to me on Twitter and put me in touch with a UK based business using his framework. Rhodes was a wrapper written in Ruby so you'd build your application code in Ruby and it then recompiled it in Objective-C (for Apple) and into Android.
At the time it was actually pretty nifty so I built a demonstrator using Rhodes and it worked really well, but my gut was telling me "Go Native" so we did! This was going to let me get the best from the Hardware (the phones) features and not put us at risk of using an external framework that may or may not exist in 5 years' time, which was a real risk in the early days of mobile development. So with that done my first true mobile project started in 2012 ??
The specification for the project was to convert my earlier web pilot assessment tool over to work on iPads but I thought we could do far more. What we'd observed was that the NHS was full of assessments - in fact, hundreds - and they were paper-based. So being paper-based none of the data was available in real-time to make fast decisions, and with things like discharge processes from hospitals, you couldn't make dynamic referrals. Plus of course, with paper-based ?? assessments they were basically being done twice by clinical staff, once on paper and then entered onto a computer later. By the time they got onto a database, the data was not really of any great value other than as a historical record of a patient's events.
So with the right tool, we could reduce costs, free up clinical staff time and allow decision making much faster with real-time data as well as being able to dynamically link and refer patients in real-time.
Now the great thing about developing for Apple devices using Objective-C/XCode (which was the Apple's main language and IDE at the time) was that you could drag and drop the screen components, input boxes, drop-down lists etc onto the screen and it would dynamically build the code behind the scenes so you didn't need to worry about it, however, this wasn't really going to work for me as the NHS had hundreds of assessments. So this tight coupling of the drag and drop approach to building Apple apps was actually going to hold me back. So I needed to come up with some more dynamic.
So along with a new hire we'd brought on board we designed and built a PHP web application that allowed us to design assessments, the flow, page by page, component by component, store them on the server, and via an API the configuration for each assessment could be sucked down to the mobile devices.
So I built just one application for the mobile/device which could then dynamically download the configuration for hundreds of assessments and render the screens dynamically rather than them being made of fixed drag and drop components. Hmm, not the way we were supposed to be building apple apps at the time, but I was never one for sticking to the rules! ?? So instead of writing lots of assessment applications, we wrote one very dynamic one which could cater for any assessment.
It was actually really good and worked really well and was my first big success on mobile and it fulfilled the promise of two years before which I'd envisaged whilst I was in my last Software House role.
So happy days the first mobile business application delivered ??
I then moved onto another big project with the NHS which was to make the Trust's District Nurse Teams truly mobile with iPad's.
So District Nurse teams basically work out in people's homes and support people who may have been discharged but need wounds redressing or a host of other things that can be done with the patient in their home rather than them being in a hospital.
Up to this point, there were multiple District Nurse Teams scattered across the Trust/County, supporting up to 40,000 patients in their own homes. The referrals for these patients came in via phone ?? or fax ?? and the teams had no ability to share resources (people sorry!) So for instance, one team could be running at overcapacity and struggling but a neighbouring team were running under capacity, and they had no way of sharing resources as they had no visibility of each other.
The other big issue was that when patients got visited then paper notes were made but didn't make their way onto a computer for weeks, so if a different nurse visited the patient's home each time - which often happened - then any information was being passed on verbally or via notes. This meant the teams were reliant on bases where they would spend time passing information between themselves. All this was causing lost time plus having to have bases that they perhaps didn't need.
So the potential was to make better use of human resources (sorry people!), make the collection of patient data real-time onto an iPad, and to potentially reduce the number of physical bases they were using and all the costs associated with those buildings. The biggest winner was the patients who knew that the nurse coming to see them had 100% visibility of previous visits and any notes, so nothing was going to be missed anymore, and the nurses had more time for visits.
We worked for a year on this product which was made up of a PHP web referral system where patients could be referred to a district nurse team either via GPs or a hospital or via the digital discharge tools we'd built. On the delivery side, all the nurses were armed with an iPad each which each day gave them their schedule and notes for each patient along with them being able to add new notes either by the patient's side or in their car before they left. On the admin side, the teams could now manage human resources (people!!) better and reduce the number of teams struggling with staff levels.
It was a great success and the only downside was the funding being cut during the 2015 General Election, which stopped us open-sourcing this solution to the whole NHS, which was a tragedy ?? what a waste!
But for me the project sealed in my mind that the decade was dominated software-wise by the rise of mobile devices and using them to deliver business services at a low cost, as well as the rise of PHP as a more serious language used to deliver SaaS services to business.
I, of course, worked on lots of other interesting projects throughout the decade, mainly using PHP and up and coming frameworks like Laravel (Released in 2011), Symfony and lots of other stuff.
But the decade demonstrated how mobile devices could be used to deliver business services and also the rise and rise of PHP off the back off some great Frameworks, which brought great features of earlier Java frameworks like Spring into the PHP world. PHP had certainly arrived on the development scene in the 2010s.
Ah but what next for the next decade?
Well first up after a decade of contracting, in May 2019, an interesting permanent role landed in my inbox, building a Development team from scratch for the UK's biggest independent Cyber-Security company. Great bunch of guys in a sector I really wanted to get involved in and they took me to Las Vegas for Defcon only months after starting and gave me a deluxe suite in Caesars Palace ?? so how could I say no to that one?
Contracting is great but it's almost like an episode of the Lone Ranger, where you arrive in town to save the day and then move straight on. So there are few things I've not been able to do properly for a while, like building super-swift software delivery systems and processes.
So with the decade ahead, it's about picking the right choices of technology to move this new project and team forward.
Well, I'm not one for predicting the future - flying cars etc - so I'll usually look around the edges as to what's up and coming and where things are trending and moving towards, plus look back at the past ten years at what has caused pain points and how those can be improved upon.
...and for me, I'm seeing a rise of newish languages like Golang and Rust delivering microservice architecture applications, possibly challenging languages like Java as an enterprise language.
After all, the Java programming language is nearly 25 years old now so it's becoming the Cobol of its day, so it's about time something new challenged it.
So 2020-2029, I'll be watching this space, as I see one or both of these languages (Golang and Rust) underpinning services for both web applications and mobile applications.
What I like about it is that you can build a flexible reusable architecture that can run standalone or be fitted on to the back-end of existing applications, or they can service multiple applications.
The other big area I see development teams moving towards in a big way over the next decade is super-slick DevOp's processes.
I first got involved with DevOps back in the early days of things like CruiseControl which I used both on Java and .NET applications. Although great DevOps is an investment in time to set up and build, in the medium-longer term, it improves the speed in which development teams can deliver robust, working and secure code. Every day being best!!
For me, super-slick DevOps is a great way of improving a development team's productivity and it's especially useful when you have a small compact team where resources (people!!!!) are tight.
So watch this space over the next year or so and through the decade.
Dept. Head at Juicify | We help Companies Rank Higher On Google in the UK and European markets
4 个月?????
We build mission-critical, fault-tolerant software running under high load
5 年Phil, wish you to get a new exciting Software challenge in 2020! ;)?
Uniting Tech, Strategy and Operations | Building and Running International Development Teams
5 年Good read, Phil. I know what you mean about Obj C development and the close coupling with Xcode as a visual IDE. I have done hardly any dev this last ten years, but in that time I did a few at-home projects, all of which were native iOS dev (with Swift rather than Obj-C) and I really enjoyed them. The problem is, turn that around and put myself in a position where I am asked to give the go ahead for a native project and I start to see all the reasons to avoid it. Totally agree with your point re Go or Rust driven microservice architectures (you'll be unsurprised to hear!). Hope you have a great 2020!