If you’re lucky enough to have in-house developers who solve problems through code, it’s important to establish an effective environment for them to work in. Without one, your talented developers will be forced to spend valuable time completing tedious tasks rather than improving their code. According to a recent study, software developers spend only 32% of their time writing new code or improving existing code, revealing some major opportunities for improving operational efficiencies within the development cycle.
Here at Zuri Group, our developers are constantly coding enhancements and workarounds for software systems such as Blackbaud CRM, and over the years we’ve adopted a handful of best practices for development environments to ensure efficiency, cohesiveness, and satisfaction across our development team. Let’s dive in!
4 Best Practices for Development Environments (shared by a developer)
1. Establish a local development environment
If you glean just one takeaway from this article, understand how important it is to establish a local development environment for each of your developers on their individual machines. When working on customizations for Blackbaud CRM, I always have a Blackbaud sample database (less than 3GB after restored) running on my machine alongside the application.
This practice offers several benefits. For one, it gives you the ability to backup or restore the database as needed. And since it’s under your domain to manage, this approach naturally helps you gain familiarity with the inner-workings of SQL server. Lastly, this allows you to LoadSpec\test files directly from Visual Studio in a much easier fashion. Deploying DLLs to verify that the contents of your files are correct is tedious, time consuming, and something we want to avoid at all costs. So do yourself (and your developers) a favor by establishing a local environment where your dev team can harness their creativity outside of a shared development instance.
2. Operate a single machine to both run the application and develop on
The second best practice in our development process is to run the application on the same machine we’re using to write the code. If you’ve ever tried to debug any of the VB/C# pieces (think UIModels), you know better than anyone how finicky it can be. But if you’re tasked with doing this remotely or without running Visual Studio as an administrator, it can be extremely difficult!
Running a single machine that contains the application and a designated space to develop code will allow you to connect directly to the process without having to go through a slew of permissions between two machines. And by adopting this best practice, you’ll also be self-sufficient when it comes to quickly attaching to local processes for debugging. You don’t need to involve central IT to open the correct firewall ports or elevate the necessary privileges. Just you, your code, your machine, and endless possibilities…
3. Adopt source control
This one is simple: use source control! If not for your developers, for your organization. Source code protects your intellectual property in the cloud and offers several added features when using products like Azure DevOps. Adopting a single solution in source control for all of your code to live in helps you easily manage builds, auto-deployments, code review, and revert to previous versions.
4. Create a safe space for testing within the dev environment
Our final best practice for your development environment is for testing purposes. Once you’ve established an effective environment for your developers to build in, it’s imperative for them to have a place to test the shiny new customizations against your organization’s data. And I’m not talking about a testing or staging environment.
As a developer, I’m a huge advocate for having an additional developer environment on a shared server with a backup of your organization’s data in it. This space is the final checkpoint for a developer to test and deploy code before moving it to more user-centric environments. You can test your packages for deployments and validate your scripts here before sending them off and away to your internal testing environment.
Happy developers = productivity + high-quality work
While these best practices may sound simple enough, you’d be surprised by the amount of development teams who don’t follow these values, and in turn, unknowingly waste valuable time and resources. Implementing these core values into your development process will save your team dozens of hours of work each year and can easily be blended with other practices to create a safe and efficient development ecosystem.
Ready to streamline development operations?
Chris is a senior software developer specializing in the Infinity CRM and BBIS space. He has over a decade of experience working for nonprofit organizations around the world and is well-versed in development operations, SDK training, and technical architecture.