Development teams face a demanding and constantly evolving landscape. Our projects vary in length and complexity. We may be required to work from remote locations or asked to ramp up a new effort rapidly with little advanced notice and aggressive timelines. The tools available for our use increase in number and capability, and their considerable power creates growing demands on our hardware. It seems every week a compelling new framework, third party tool, or API is released. How can we meet these challenges in a manner that allows us to remain productive and competitive?
As developers, some of these factors are out of our control – we shouldn’t dictate requirements, budgets, or timelines. We can, however, manage and use our own local, developer environments in a more efficient and nimble manner. In doing so, we’ll have a positive impact on the outcomes, cost, and schedule of our projects.
The developer machine is the technologist’s safe space. Here, the developer can safely create and test new code before it is introduced to a shared environment. It’s also ideal for experimenting with new technologies, tools, and architecture. Most production features are born on a developer’s “box” — coaxed into existence through a careful process that combines determination with the skillful application of technology.
Yet the isolation and flexibility of the development environment has significant cost. Over time, the tools, dependencies, and technologies needed to support a specific system’s development are likely to grow. For example, each instance may require a specific OS version, runtime operating environment, databases, third party tools, mocked service endpoints, and connections to external APIs. Often, these dependencies place significant demands on the hardware, thus increasing the need for computing power beyond the initially-provisioned state.
At seedUp, we’ve built a product that seeks to solve these common challenges for developers. Our framework provides a series of simple tools that reduces management of the developer’s environment to just a few clicks. We help developers to concentrate on outcome rather than process.
In the government, you might also contend with additional policy or security requirements that mandate an environment’s configuration and contents. This is the natural state of a developer’s machine built to support a mature, complex system: one with significant resources, configured precisely as required, fully compliant with all rules. Over time, these requirements get more difficult to meet and reproduce.
What’s the estimated time and effort needed to obtain a fully-ready, brand-new developer machine that supports your system? These costs are often hidden, unexpected, or excluded from normal budgeting. The experience can run from several hours to several days, and includes tasks like physical hardware/software provisioning, OS management, regulatory compliance, and the installation of all the tools and gadgets that make a developer productive.
After this lengthy process, the developer is ready to begin work. If you are “ramping up” several team members, multiple this effort by the number of new developers. Every moment a developer spends on “local” issues is a moment lost to your system’s development. How can we reduce the time, effort, and expense of supporting a local environment which still supports our needs as developers?
An effective, proven approach is to remove “local” from the equation. Instead of using physical, on premise hardware to support your developers, seedUp can host their environments in the cloud. Using newly-available technology, we can create a cloud-based template from which every developer’s environment can be produced. This template is custom-made to contain your specifications, dependencies, tools, and configuration. It’s also compliant with any regulations to which you are subject. You can use this new template (or “seed”) to deploy new instances on demand, each taking no more than a few minutes to establish.
Once deployed, we have a pre-configured, fully-compliant workspace in the cloud ready for immediate use. And in doing so, we’ve reduced our provisioning and developer “ramp up” process to a few automated steps, while maintaining the isolation and configurability we require as developers. This reduces friction between enterprise IT and development teams and creates positive downstream impacts on the programs and managers who are relying on the end product.
Without question, this is a paradigm shift. It requires us to think of development environments as non-local, temporary, fungible assets that can be quickly deployed at will. However, it provides a significant reduction in cost and complexity and allows our development teams to act more quickly and with greater agility. At seedUp, we feel government innovators can benefit greatly from this re-orientation in approach and technology. We’ve chosen to work with Dcode due to their extensive experience and history in bringing similar, powerful technical adaptations into the federal technical space.
Dave Sweeny is CTO of seedUp.