By its nature and evolution, web development has proven to be one of the most dynamic industries out there, I believe it’s the most. With this, among a lot of benefits for its participants, comes a lot of chaos. I believe, as a manager, you need to be the one that understands all the moving parts and brings to the table a sense of order and balance by defining and applying policies and procedures in web development.
Before having people screaming in my ears that “web development should be free of these, only so it will bring evolution” (which is not completely wrong, to be honest), let’s all make a little exercise: each morning we wake up, do our morning routine(s) and then leave for work or start working from home. As a policy, we can have: “you need to start working at 09:00 AM“, and as a procedure: “When you make your coffee you press the same 3 buttons on the machine in the exact same order all the time to have it done“. So, as a statement, policies and procedures are present in our day to day life everywhere, period!
We know these are present everywhere, we kind of get why there are important, let’s define them first before we get the differences (yeah a know, this can be found on Wikipedia, but I will explain how I see and understand them).
What is a policy in the web development industry?
A complete set of guidelines and most-follow rules, exposed on a macro-level, for a specific topic, that has the role to direct all teams that touch that topic in the same direction and assure a level of flexibility on both sides.
More bluntly said: you need to have this, this and this present no matter what, but I honestly don’t care how you do it. But hey, here is how I would recommend doing it.
As a small example: “When discussing deployments, the policy should state that automation is mandatory to be present, all deploys should be with no downtime and the possibility of rollback at any given moment is present. Also, we recommend that the app is Kubernetes ready and Gitlab CI is used for pipelines“. So, reverting back to the definition: a set of rules to follow and a guideline on how they can do it. That doesn’t mean that spanning a new cluster on each deploy, keeping the old one up for rollback, and using Jenkins is wrong, no, on the contrary, it respects the policy.
What is a procedure in the web development industry?
A complete and non-flexible rule book that targets a specific topic, defined on the micro-level. that has the defined role to assure that everyone does the same steps when touching, in any way, that topic.
Again, more bluntly: if you want to do this, you need to follow these specific steps and assure these specific conditions are met, regardless of your internal process.
Going down the same example road as above: “When deploying to production, each team is mandatory to provide a designated coordinator that will oversee and have full responsibility to assure the success of the deploy. Also, all deploys to production need to have a changelog that is present prior to the deploy and the actual actions are only done each first Monday of each month between 05:00 AM GMT and 06:00 AM GMT“.
What is the difference between policies and procedures in web development and why is important?
Well, as mentioned in their “definitions” above, is about the applicability level: macro vs micro. But not only this.
As a manager (in my case) or a person that is responsible to define and assure that all processes work correctly and the business unit (or company) is going in the right direction, you need to take a very close look at what actually is wrong.
You cannot go around and start throwing them to teams and expect them to understand why is needed or better why is so important to apply and respect them.
The second big difference is mostly in what you want to achieve? I truly do not believe in complete law and order, especially in web development where (in theory) you deal with smart people. I believe, and I apply in my day to day business, a flexible management style where some lines are defined and need to be respected but some are blurry and each team can go at it as they find best. This not only helps with the work environment but also allows a lot of personal growth.
When do I need policies and procedures in web development (not only)?
Well, maybe today or tomorrow or 2 months ago or never. This mostly depends on the business type and model but also on your flexibility as a manager. And also depends on what are you trying to achieve. “Don’t touch it if it works” principle applies quite well here.
This is something that each one of us should figure out. There is no silver bullet, apply these and everything will work. Also, all the time, you need to take into account the human factor in each team: are they ready, can they be responsible, will they understand, and so on.
Before defining any of them I always ask myself the following questions and based on the answers I take a decision. Very important, you may be wrong or overestimating or underestimating so always keep an open mind and adapt what every you define to suit your current needs. What will fix a problem today can fuck up multiple things in the future.
- What is the problem you are trying to fix?
- How bad is it, from 1 to 10?
- What is the impact?
- What is the root cause?
- Can this be isolated to a single team or is it a general behavior?
- Can this be fixed individually or is an “all” level issue?
- Can the fix for it be “one” or there is a need for adaptability?
In the end, I think that policies and procedures in web development, and not only, are needed. Our lives are governed, more or less, by a sort of them (laws, directives from the state, and others). So maybe it’s time to think about them and understand what and where we need.