A guest post by Daniel Nolan, FlexiGroup Ltd.
We like to think of ourselves as full-time software professionals. Yet how much of our time and energy is actually focused on producing really great software? That is, software that delights and excites our customers?
If you work within an entrepreneurial, scrappy, and ambitious sales-driven organisation the answer is possibly “not enough”.
If you are a key team member with the experience and deep technical knowledge of how your vast, sprawling array of systems tick, upon which said organisation depends to earn a crust, the answer is probably “very little”.
Chances are, your days are instead filled with a mixture of activities that have very little to do with the art of software development. This may include investigating production system performance or reliability issues, installing and configuring your software on servers, checking the status of builds and testing environments. Or if it’s a particularly bad week perhaps you’re just watching your inbox, waiting for the next outage notification to arrive.
“If you are a developer, you should be focusing on building a great application, not busy setting up an application server or a 3rd party solution.”
In enterprise IT, we spend far too much time prepping and maintaining our infrastructure instead of meeting the needs of our customers and fighting the accrual of technical debt as our systems grow evermore complex. It’s a battle that rages within many entrepreneurial organisations as they feverishly attempt to fight the decay of system code, whilst managing to satisfy the insatiable appetite of the hungry beast we call “the business”.
This is where I can see that the new breed of cloud-based services starting to emerge could make a big difference to the way we work: if we’re willing to leave the running of our systems to those who are already equipped to handle its needs, we can finally start to free ourselves up from the burden of self-hosting. As a development organisation, we can also hope to achieve greater autonomy by being able to configure and administer systems ourselves, without going through IT or a separate group.
Making an entry into this brave new world can be a daunting prospect, but I’ve found hosting source control in the cloud to be a great place to start: Distributed Version Control Systems (DVCS) such as Git and Mercurial are really built from the ground up for this purpose and I can now forget about the state of the repository and can easily access it anywhere I go. The next logical step to offload DevOps management hassle is to start doing continuous integration in the cloud and begin to host your applications systems with a Platform as a Service (PaaS) provider like CloudBees.
Making great software is a challenging business to be in, and having to respond to the ever-changing needs of the business can bring out the street-fighter in all of us. But if we keep a clear focus on doing the things that we’re best at and find a way to offload or automate everything else, then we have a much better chance of staying on top of our customer’s needs and keeping that hungry beast satisfied.
Based in Sydney, Australia, Daniel Nolan (Twitter: @dan3r3) is a Senior Developer with FlexiGroup Ltd and has 15 years experience in Software Development. He is passionate about fostering ‘virtuous cycles’ in software development by promoting Continuous Integration and Software Configuration Management practices within teams. He divides his time between his work at FlexiGroup and his new software startup, ReadyRoll, which aims to provide a better workflow for refactoring SQL Server databases. You can read more of Dan’s insights on his blog.
The fine print:
The views expressed above including any references to third-party products or services are Daniel’s and not those of FlexiGroup Limited.