Skip to content

The everyday challenges of a developer

The world of development is changing rapidly. Developers need to know more and need to take more aspects into consideration and on top of that many companies are changing the work methodology as well.
What should be the focus, what is the most important thing to get right and what aspects can count on some leniency while learning to apply properly? All things cannot be learned in one go.

A developer needs to be aware of the following aspects:

  • Agile working
  • Security
  • Privacy
  • Deployment automation
  • Continuous integration
  • DevOps

Focus

I think the focus should be fully on DevOps. The reason for that is simple: DevOps is not only a way of working, but also brings a whole new set of requirements to the table and requires a drastic change in attitude (development, testing, releasing, operations and support). This is explained as integration of the life cycle chain [1].
So far, developers have been taught that there is someone else for maintenance & support and there are no additional requirements for keeping software running as it should. Now both these assumptions prove to be false and need rectification. But how do you learn the aspects of maintenance & support when the art of doing that has evolved to an IT specialism? A specialism with its own set of rules, its own way of working and its own jargon.

This calls for an operations-mindset which is rather different and has many additional specifications because proper pro-active monitoring is not something you can easily pick-up. And besides learning this trade, the financial side of things is also difficult. It is, of course, hard to make a business case on getting more information in order to prevent eventualities.

Agile

The agile way of working is there to assist this process, so you can implement additional measures every time you learn more about monitoring. And Scrum allows you to do so while implementing more features every sprint. Agile and DevOps combined make a strong case for having an operations expert in the team as well. This person should educate the team.
The agile way of working also means learning from each other by helping each other and taking over simple tasks every once in a while. The team should be self-supporting even when one of its members is on holiday. This is part of coaching each team member to be and feel responsible for problems that arise during the time that the software is operational.

Automation

Deployment automation assists this process by making sure that you can easily apply the latest learnings to everything running in one click of a button. Deploying things automatically does not mean that you do not need to think about it anymore, it means you have to think about it even more. What do you want to deploy? How can it be deployed best? Are there dependencies?
Continuous integration assists in keeping quality high and getting it higher every sprint. Testing is key to quality improvement and of course this needs to be done automatically as well.

New legislation

And last but not least the challenges with regard to privacy and security have been increased a lot recently due to all kinds of treaties in different continents and the fact that the customer expects his/her data to be safe and guarded for unwanted use. This is new legislation and should be treated as additional requirements to all software developed. The requirements can be added to the list of non-functional requirements, next to all operational requirements of ability to monitor and being able to trace calls and perform audits.

Conclusion

Lots and lots of things to be taken into consideration, but definitely the hardest capability is the DevOps one and learning it. Make sure your team is balanced in its capabilities, which also means that an expert in operations needs to be part of the team. The Scrum Master needs to work on molding the group into a well-oiled DevOps team.
[1] DevOps article 16022016 Dutch IT magazine Informatie p26-p33 (Job ten Hagen)
[2] http://labs.sogeti.com/hiring-a-devops/

Other relevant DevOps content