Dev Workflow 101: Why You Should Care
What constitutes a good development workflow is rarely discussed outside of developer circles, despite the far-reaching consequences that can affect every party involved in a web project.
So, what is it?
You could ask 10 developers and get 10 different answers as to what should be included in the discussion. At a high level, a good development workflow should contain rigid, well-defined and, ideally, automated processes for developing, testing and pushing changes to a website or application.
On a more tactical level, this can involve everything from specific task automation software (like Capistrano) and version control (like Git) to in-depth process and workflow documentation. There are a lot of different solutions, but in every case the end goal is an error free feature release with minimal to no downtime.
Where does it happen?
Short answer: everywhere. A good workflow envelops the entire development cycle, but the place it affects (or, hopefully, doesn’t affect) the most people is when a feature is deployed to your live site. Say, for instance, your content manager is publishing a new blog post at the same time your developer is publishing a feature to update how blog content is structured and displayed on your site. If both parties are working on the same thing at the same time without knowledge of what one another is doing, the content manager’s blog post could very easily be lost in the shuffle. A well planned and structured deployment can prevent situations like this by enforcing update policies and schedules that all involved parties are aware of.
Deploying code updates should never be a cross your fingers and hope for the best situation. Any website project should have at least a matching development/testing environment where every update can run through a thorough QA and approval process by all stakeholders before anything makes it to the live site.
Who is impacted?
Your dev team’s workflow, or lack thereof, can impact just about anyone who comes in contact with your web project. This includes everyone from end users to site administrators and, most obviously, any developers you may collaborate with for the lifespan of your project. When things go well, most of these people will have no idea what the workflow looks like behind the scenes, which is exactly how it should be because, ultimately, the single most important KPI is site uptime.
What’s the bottom line?
At this point, it may seem fairly obvious, but commissioning a development team with a tried and true workflow is an investment in both the stability and longevity of your web project. Don’t believe me? Try asking the developer who’s been making untested code updates via FTP on your live site to immediately revert the last two features that have been pushed live. The benefits of a well planned and executed development workflow will become apparent right away.
More specifically, both deployment of new features and rollbacks of code should be automated to ensure an absolute minimum amount of downtime with as little chance of human error as possible.
On top of that, version control (we prefer Git) should be used to track a full history of code updates to further simplify onboarding new developers to your project and chasing down any elusive bugs that may be introduced along the way.
I’m sold. How do I know if my dev partner is on board?
We’ve taken the liberty of putting together a simple checklist, so you can make sure, at a high level at least, you have your bases covered.
Do you provide or require a development environment?
A development or testing environment is hugely important to the QA process. Publishing untested features to a production environment is likely to introduce unpredictable bugs.
How frequently will my site be backed up?
Always be prepared for the worst case scenario. Make sure all components of your site (code, files and database) are frequently backed up and accessible in the event of an emergency.
What do you use for version control and where is it hosted?
Version control creates a documented history of updates to your site’s codebase. It allows for much more efficient collaboration between developers and can serve as an offsite backup of your site’s code. A stable and reliable hosting environment for version control is important to ensure this code is always accessible. We prefer Git as our version control software and Github for hosting.
How do you deploy a code change to a live environment?
The right answer here will involve automation. An automated deployment process takes out the possibility for human error in performing tedious tasks that need to happen every time a code change is deployed. We use Capistrano to handle this, but there are lots of good options out there.
Can you describe your internal QA process?
A good development team should be able to speak to how they track, test and record bugs. Our tool of choice is Asana because its easy to use, integrates with our version control host (Github) and provides a detailed history of even the most granular task.
Overall, a good development workflow can end up being one of the most important factors in the lifecycle of any website. There is no replacement for a thoroughly tested, managed and deployed codebase. If even the layperson takes time to consider how this process is managed there will be long term benefits in the form of an easily scalable and maintainable website with little to no downtime.