editione1.0.1
Updated August 7, 2023While some people may embrace a well-defined process that provides structure, it may bring a negative connotation to others who value autonomy and independence. At some point, all programmers feel the frustration of dealing with โred tape,โ or the lengthy process to gather the necessary approvals to move forward with a decision. But processes arenโt always a bad thing, as they provide a tremendous amount of value.
Whether you work for a large Fortune 500 enterprise, a development agency, a small scrappy startup, or even freelance for a living, you will follow processes every day and probably even develop new processes. Building a process provides value because it allows you to standardize a set of steps to complete specific tasks. By doing so, you are able to increase efficiency and scale your throughput by training others to follow the process.
When you take a set of steps, which may need to be done in a specific order, and formalize them into a process that can be followed by anyone anytime that task needs to be completed, you add value by creating consistency. Youโve defined a standard way of doing something that can be completed the same way every time, regardless of who is performing the task.
Assuming youโve documented your newly formed process, you unlock numerous advantages. First, you can reference the steps in the process at any time, which can save you in the future if you forget how to perform a task you havenโt done in a while. Sometimes a process only needs to be performed on a monthly, quarterly, or yearly basis. As long as you have your process documented, you can always reference the documentation and be confident youโre performing the steps correctly every time.
Second, you can scale your process by training other people on how to perform the tasks. Whether itโs a sales process or a deployment process, youโre now able to train an entire team on how to perform a specific task. You have just created value.
Furthermore, processes can be measured, and anything that can be measured can be improved. If youโre able to define specific and quantifiable metrics that accurately reflect the efficiency of the process, you can track how well youโre performing the process. Once you have a baseline for how efficient your process is, you can work towards refining it to improve that efficiency even further.
And lastly, in many cases processes can be partially or fully automated. Processes often define a set of repeatable steps, and if some or all of those steps can be automated with scripts, programs, or third-party tools, you may be able to reduce the burden on teams and individuals who rely on those processes. The time saved by automating a process adds up over time and can provide a significant amount of value for a company depending on how often that process is performed.
So, as a developer, how can you add processes to add value? Start by observing your day-to-day tasks, and look for things you repeat over and over again. A good rule of thumb is if you repeat a task more than three times, thatโs a potential candidate for a process, if thereโs not already one in place.
Help your team formalize an onboarding process for new hires.
Help formalize a deployment process to ensure the code getting pushed to production has been thoroughly tested.
Add a process around code reviews, even if itโs just adding a standard template for the description to include testing instructions, a change log, multiple approvals, or anything else that should be filled out before opening up a pull request.
Propose adding, modifying, or removing steps in the software development lifecycle that you think will help your team work more productively.
Push for better-defined requirements from the product team before you begin designing the technical solutions.
Push for more-thorough design documents before you and your teammates begin implementing a solution.
Document the process for applying a hotfix to a release build.
Document the steps needed to manually run a set of commands from the command line to perform a specific task.
Help formalize a bug reporting process to make sure youโre gathering the required data every time, such as date first seen, browser version, the userโs role, and steps to reproduce.
With a little creativity, you can create a process around almost anything. And as you build out these processes, youโll start to see what works and where the processes break down and need to be improved. Then, you can rework them to accommodate a new use case and improve the process. This improves efficiency and reduces errors because itโs documenting a standardized way to perform a task. Think of it like bumper lanes in a bowling alley or swimming lanes in a lap pool. The process is supposed to guide someone to perform a task while reducing the chances of making costly mistakes.
Processes are a great way to formalize a set of steps that others can follow. Processes give you leverage to scale those tasks at the expense of adding rigidity and extra work. Keep in mind that too much process can be a bad thing, so thereโs a balancing act youโll need to look out for if youโre looking for areas where you can add or improve a process.
While most of the ideas in this section so far have involved coding, there are other ways to add value without writing any code, such as writing documentation. Often overlooked by both young and experienced developers, the ability to write clear and concise documentation will set you apart from the rest of your teammates.
Transferring knowledge through written sources has been used by almost every civilization thatโs ever existed. Thereโs a reason itโs so valuable, and writing is a skill that anyone can do and anyone can learn.
As a business matures, knowledge is gained. That knowledge is valuable, and it probably took a lot of effort on someoneโs part to build an understanding of a specific problem, a customer pain point, or a nuance of the industry. When you work hard to solve a problem, fix a bug, or develop a new feature for a customer, try to document what you learned on an internal knowledge base.