Agile software development has the potential to save the federal government billions of dollars and significant time, allowing agencies to deliver software more efficiently and effectively for American taxpayers. However, the transition to Agile requires an investment in new tools and processes, which can be costly and time consuming.
What is it? Agile is an approach to software development that encourages collaboration across an organization and allows requirements to evolve as a program progresses. Agile software development emphasizes iterative delivery; that is, the development of software in short, incremental stages. Customers continuously provide feedback on the software's functionality and quality. By engaging customers early and iterating often, agencies that adopt Agile can also reduce the risks of funding failing programs or outdated technology.
Agile is implemented in different ways. For example, Scrum is a framework focused on teams, Scaled Agile Framework focuses on scaling Agile to larger groups, and DevOps extends the Agile principle of collaboration and unites the development and operation teams.
Scrum, one of the most common Agile frameworks, organizes teams using defined roles, such as the product owner, who represents the customer, prioritizes work, and accepts completed software. In Scrum, development is broken down into timed iterations called sprints, where teams commit to complete specific requirements within a defined time frame. During a sprint, teams meet for daily stand-up meetings. At the end of a sprint, teams present the completed work to the product owner for acceptance. At a retrospective meeting following each sprint, team members discuss lessons learned and any changes needed to improve the process. Sprints allow for distinct, consistent, and measurable progress of prioritized software features.
How mature is it? Organizations have used versions of incremental software development since the 1950s, with various groups creating Agile frameworks in the 1990s, including Scrum in 1995. In 2001, a group of software developers created the Agile Manifesto, which documents the guiding principles of Agile. Following this, Agile practitioners introduced new frameworks, such as Kanban, which optimizes work output by visualizing its flow.
The Federal Information Technology Acquisition Reform Act (FITARA), enacted in 2014, includes a provision for the Office of Management and Budget to require the Chief Information Officers of covered agencies to certify that IT investments are adequately implementing incremental development. This development approach delivers capabilities more rapidly by dividing an investment into smaller parts. As a result, more agencies are now adopting an incremental, Agile, approach to software development. For example, in 2016, the Department of Homeland Security announced five Agile pilot programs. In 2020, at least 22 Department of Defense major defense acquisition programs reported using Agile development methods.
Acquisition strategy. Contractors may have a role in an Agile program in government. However, long timelines to award contracts and costly changes are major hurdles to executing Agile programs. One way to clear these hurdles is for organizations to create an integrated team with personnel from contracting, the program office, and software development. Clearly identifying team roles will alleviate bottlenecks in the development process.
The ongoing debate of why software and applications with vulnerabilities are making it to market is multi-faceted, with several stakeholders involved. Everyone seems intent on passing the buck: DevOps teams, their functional buyers (the primary users of the project), even CISOs. Many claim that patching is just an unavoidable fact of life.
The Biden administration in the US has recently voiced its concerns, too. It has called into question the reliance on post-sale bug patches, suggesting that companies should be required to build software in secure development environments. The stamp the administration plans to introduce to allow the public and the government to determine if the software was developed securely may cause developers to re-examine their environments and improve the overall security standard of applications.
Preparing for and anticipating security responses to happen in parallel with release activities trains teams to quickly identify key resources to resolve the vulnerability, provide them essential support, and provide a quick route for delivery of the update to resolve the threat while the rest of the development team executes their current activities undisrupted.
So to give you a little context on where my advice comes from, I spent the first half of my career as a software engineer working for various small businesses and startups, then I went into consulting and worked in a number of really large businesses. Then I started Simple Thread and we grew from a team of 2 to a team of 25. 10 years ago we worked with mostly small/medium businesses, and now we work with a mix of big and small businesses.
Software engineers should regularly blog, journal, write documentation and in general do anything that requires them to keep their written communication skills sharp. Writing helps you think about your problems, and helps you communicate those more effectively with your team and your future self. Good written communication is one of the most important skills for any software engineer to master.
9. Forgetting that software development is a hard, tedious, isolated job where people desiring lots of human interaction will rapidly leave the field by their own choice and lots of people not getting into the field by their own choice.
Well, yes, in fact we will. The opportunities in software are too hot to pander to toxic engineering managers like you. Ever stopped to question why the average tenure in this field is like 2-3 years?
This is a great article , a list i will keep in my bookmarks for long time. Couple of things i would add from my 18 years of experience from firmware development to web apps development, and integrating very large and poorly written components and dealing with 100s of engineers on daily basis.
Thank you for writing this fantastic article. You have accurately described the way I feel after 10+ years designing and building software and have re-inspired me to keep learning even though I am very close to giving up the profession. Businesses and bosses need to read and understand this in order to better understand the role of software and developers in todays business environment.
Ive been is sw for the past 40 years; and if theres something Ive learned, then its that people you work with are the key to better software; and that software is like a wheel. If you build it square, it wont get you far.
With technology powering everything from how a business runs to the products and services it sells, companies in industries ranging from retail to manufacturing to banking are having to develop a range of new skill sets and capabilities. In addition to mastering the nuances of their industry, they need to excel first and foremost at developing software.
Similar patterns hold within specific industries and sectors. For example, top-quartile software companies saw revenue grow almost two times faster than other software companies in the same period. In financial services and retail, top-quartile companies saw positive revenue growth while average revenue declined in the other quartiles.
Interestingly, these findings fly in the face of conventional industry wisdom. For example, many of the business leaders we interviewed assumed agile ceremonies at a team level would be among the top enablers of software development. But while agile team practices are helpful (especially in lifting performance among third- and fourth-quartile players), our study finds they do not play an outsized role in advancing DVI scores beyond that.
Why the disconnect between what leaders think drives software success and what actually does? One answer is that relatively few leaders understand the day-to-day developer experience. Another challenge is prioritizing investment among the large and diverse set of levers. Several actions can help address the four biggest factors in Developer Velocity: tools, culture, product management, and talent management.
Another notable distinction is that DVI leaders are more advanced in managing open-source development securely. Many are using centralized security management and automated tools that can scan open-source components and remediate vulnerabilities before deployment. Comparedwith these leading adopters, less than 20 percent of companies are employing these advanced security measures.
The analysis also identified emerging drivers with the potential to accelerate DVI scores over the next three to five years. Top-quartile companies are increasingly exploring the use of artificial intelligence (AI) and machine learning in developer tools. For example, some have begun using AI to perform aspects of pair programming (in which typically one developer writes code while another almost simultaneously reviews it), providing automated code reviews and using natural language processing in low-code tools. Additional areas that executives believe will accelerate software innovation and impact in the future include increased usage of product telemetry to make product decisions and automation in detecting and remediating production issues.
Improving Developer Velocity is a journey, not a race. The businesses that are achieving the greatest returns from their software investment are those willing to tackle the entrenched cultural and structural barriers that are often the hardest and most nebulous to address. Companies that excel in providing the right tools, culture, product management, and talent management not only develop software faster but also deliver significantly stronger business outcomes. 2b1af7f3a8