Cloud - it's all about the developer experience
https://foter.com/re5/4165ed

Cloud - it's all about the developer experience

Tl;dr I've written/recorded another book on cloud about 10 years after the 1st and the amount you can do with AWS "out of the box" is astounding in comparison to the "virtualized datacentre" we talked about in 2011. Providers like AWS & Google have really delivered a platform that corporate IT has been promising for as long as I've been working in technology. If you want a platform that allows rapid, agile application development, cloud is the only choice but you also need discipline to use it and so platform engineering needs to focus on making it easy for developers to consume cloud services in the right way. 

If you would like a free pass to the catchily named "AWS Certified Developer - Associate Certification" Video, ping me you email address. The first 2 emails received get a free access code ;)

About 10 years ago I had my head down helping Telco's like Telefonica and Colt build new cloud platforms and I had a job interview with AWS and while I made it through the technical, when it came to the business interview, I was asked what was the main threat to Amazon?

I said AWS needed to be careful as the Telco's could take their lunch because they had great network access and lots of points of presence! WRONG!!! I didn't get the job and in hindsight I'd forgotten one of the most important aspects of cloud which traditional IT, has in most cases ignored, developer experience.

My IT journey started longer than a care to think about at IBM as a grad, playing at being a Java developer before very quickly moving into systems engineering/networking. A lot of my focus has been on building/operating large platforms at scale, so my personal bias always falls back to that, however in cloud your provider/developers/IAC are taking care of a lot of that, evolving it, managing it, so what do I find myself doing these days?

More and more I find myself trying to make it easier for developers to use cloud by automating complex infrastructure patterns and exposing them through pipelines, building small web services to do things like IP address management or automating documentation in confluence, trying to optimise code to work in cloud, building dashboards to show cost forecasts blah blah. Generally, working with developers to help them use cloud effectively and then getting out of the way.

Over the last few years I've had the opportunity to play on the other side of the fence again, as a founder/developer at lattice security and published this month! (yes this is really a sham to plug my book) my second, difficult, book/video, the snappily titled AWS Certified Developer - Associate Certification.

As part of the book development I had to touch most of AWS core services such as S3, EC2, Cognito, Lambda, DynamoDB, Kubernetes etc. using python and the AWS boto3 library (3,500M downloads!!!) to build out parts of a demo application. The speed at which I could take a simple static website running in S3 to an authenticated, server-less lambda app, with a NoSQL backend/caching and build/deploy it was frightening and really illustrates to me why cloud has been growing at such an astonishing rate.

It's not about the tin, or the console! it's about the experience you have. As a developer I was able to identify the best components, review samples and concepts on the provider website/stack overflow/reddit and quickly build a prototype using SDK examples locally in a container and then build and deploy that container on a variety of platforms. I didn't have to think too hard about installation, deployment, CI or operational things like resilience or monitoring etc. to get up and running as there were plenty of examples. Now as we think about production these things are more important but there are some really great articles on scaling cloud solutions from people like AWS, Netflix, Google etc. which help developers and DevOps/SRE teams to think in the right way.

What about platform lock-in or technical debt? An absolutely valid concern but I challenge any organisation to look at where they are today with their key strategic suppliers and current application estate and tell me those problems don't exist anyway and what's the solution for today's estate? In most cases there isn't an answer!

With cloud providers you have the option of utilising Open Source so configurations and data can be ported (at a a cost, but try moving a datacenter!) and building the right level of abstraction into your application (think of object-relational mapping/ORM at the infrastructure level) means you can at least reduce the amount of technical debt if you ever need to move technology (inside or outside the platform) or pivot.

Irrespective of these concerns if you think about developer experience as much as you think about the technology,

  • Your developers can quickly and easily use platform services
  • Your developers feel they are staying current
  • Your developers get to use shiny new things if they want

Then you will have a productive, agile team who feel valued and will build better code. Of course there is challenge, self discipline! In my experience, the best agile teams don't need things like dedicated scrum masters as they know what they are doing and everyone is committed to doing the best job! more importantly they have control of their sprint and understand the context for that sprint. Using a cloud platform requires the same level of self discipline and contextual/situational awareness around security, technology adoption, coding standards, operational characteristics and monitoring and you need to build that knowledge into your development practices.

You might do some of the following things to drive "good" cloud behaviour

  • build an SRE function
  • Implement Infrastructure as Code CI functions and codings standards
  • develop some "hello world" examples or code scaffolding
  • publish good FAQ's
  • add branch protection in Github and enforce reviews and commits

but just assuming people will all have the right level of discipline and use your approach/best practices from day one will probably contributes to a data breach. Its very easy to build an application on cloud, but its much harder to build a good, secure, scaleable application on cloud (but easier than on-prem) so investing some thought on what your cloud development practices will be, how developers will use the platform, what technology they develop on and making it easy consume and develop should be the number one goal for the platform engineering team! IMO at least

PS my book will make an excellent Valentines gift :)

Malcolm is a technical cloud person who is passionate about using technology in the right way and tries to balance work and life by working in a couple of startup's with contracting and trying to be a good husband/dad. All these views are my own and not attributable to any company I work for or have worked with in the past.

Congratulations on your second book. It was great to work with you on the first book. Now, I am retired, I am taking it easy. Is your book available on Amazon? All the best to you!

Like
Reply

Where do I get a copy?

Like
Reply

Congrats Malcolm Orr, Please send me a free copy :-)

Like
Reply

Oooooh, look forward to reading/watching it.

Like
Reply

To view or add a comment, sign in

More articles by Malcolm Orr

Others also viewed

Explore content categories