Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Just Stop for a Moment

DZone's Guide to

Just Stop for a Moment

Before you implement that next user-requested feature or integration, stop for a moment and make sure your code evolves as it grows.

· Agile Zone ·
Free Resource

Adopting a DevOps practice starts with understanding where you are in the implementation journey. Download the DevOps Transformation Roadmap. Brought to you in partnership with Techtown.

I know there are deadlines in front of you that need to be met. They are the reason why you keep writing code. They are the cause of your lack of time — you are running from one deliverable to another, trying to deliver as fast as possible. Trying to deliver with the highest quality possible.

I know there are people around you who keep asking how long it will take. How much more time your team is going to need to implement the functionality. And you are doing the best you can. You know the users/customers/business matter and you are not writing code for the sake of its beauty. No, you want to keep users satisfied. You want to make customers happy. You want to save/earn money for the business your application supports. I know all that.

I know you are writing the best code you can. You keep in mind all principles, rules, and laws you've been taught. You try to weigh pros and cons. You know that "good enough" is not a bad option. And you don't forget about two important aspects when you are making a choice: how long it will take and how risky it is.

I know you have got your personal life and you don't want to spend time working over hours. That's why you are doing everything you can to start deliver as fast as possible. Because you know this is what really matters. Written code. Working solutions. Delivered features.

So now's the hard part — you have to stop for a moment!

I know it's not easy when people are asking and deadlines are coming. It's not easy when there's so much code to write, so many features to implement. Anyway, take a breath.

As software developers, we cannot only think and be focused on the closest deadline and deliverables we are currently working on. We cannot constantly add new things without a moment of reflection. This leads to growth. With growth comes complexity. Without continuous tackling with the complexity code degrades. The delivery of new features takes more time, effort and money. New features are more likely to have bugs. The delivery requires more knowledge about various places of the application and within the time there's less people who are familiar with those places. New developers have to go through the code to find all the necessary puzzles. But the code is complex and there's no one to ask. So they can miss something. What is scarier? Rather sooner than later they WILL miss something.

So what can you do?

Don't focus only on now and here. Don't allow yourself to NOT take into consideration future and big picture before you start writing code. Don't be the one whose change leads only to the growth alone. It's impossible not to add new features into the application but if with the growth comes evolution, your code will be easier to maintain and understand.

Don't be the one who increases the complexity. Freshly written code and delivered features do not have to equal additional complexity. Adding new code, if well-planned and designed, can decrease complexity and make future development easier.

So what can you do? You can stop for a moment and think. Consider your options and possibilities. But not through the prism of current deliverables. Consider wider scope and longer time frames. Maybe you can invest some time and effort now to save more of both in future?

Take Agile to the next level with DevOps. Learn practical tools and techniques in the three-day DevOps Implementation Boot Camp. Brought to you in partnership with Techtown.

Topics:
agile ,continuous delivery ,code complexity ,kiss

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}