Effective Treatments for Enterprise App Development Pain

Effective Treatments for Enterprise App Development Pain

Originally published on SitePen.com

Those of us that work in the software engineering space know that a healthy, highly efficient engineering organization drives better business outcomes. But what gets in the way of that? The two obstructions we see the most often at SitePen are decision paralysis and technical debt. This article is for enterprise development leaders that want to bust those barriers down and more reliably deliver features.

It’s all about 
Culture. Code. Process.

Here are three steps that you can take to improve the health and efficiency of your org based on SitePen’s proven formula for success. 

1st: Establish a culture of engineering and excellence by building an engineering process

No alt text provided for this image

Establishing an engineering process within your organization will make your team better able to react to changes, like onboarding a team member or shifting your organization to work from home, because everyone will have well-known, documented ways to produce work. It’s about creating a familiar process within your organization. 

Truth: Teams with well-defined processes are able to write better quality code at a quicker pace and be more flexible and independent. 

The first thing you should do to set a good foundation is to ‘Define Done’. This is basically Agile-speak for creating, documenting, and implementing a clear path for a feature from inception to production.  

Then, once everyone is in agreement about what defines success, these are the steps you should take. 

  • Create a sprint plan - This is the first step in any engineering process. It is the opportunity for the entire team to discuss a planned set of features, to build roles and responsibilities, and to get key questions about the process on the table. Teams that skip this step often end up redesigning solutions in code reviews, which has a serious impact on quality, morale, and velocity.
  • Build shared knowledge - This step ensures everyone is able to correctly execute on a planned sprint. Teams should make it a priority to create and maintain a well-organized, streamlined, central repository of knowledge so that engineers are able to efficiently find and share common patterns and architectural decisions.
  • Iterate and refine your engineering process (a.k.a. retrospective) - This last step helps you look at what worked well and what needs to be improved. The goal of the retrospective is to identify deficits in your process and make changes to guarantee the quality of your application.

Read Disciplined Engineering Part 1: Building An Engineering Process to learn more about sprint planning, feedback loops, and other best practices.

#Agile #EngineeringProcess #CodeConfidence 

2nd: Ensure quality and sustainability by creating code confidence

No alt text provided for this image

Quality and sustainability matter and can be a challenge to achieve, particularly for large applications. Adopting tools and practices improve your team’s overall confidence in an application’s code, reinforcing common coding practices to help engineers automatically write better code that is easy to understand and maintain. 

Truth: Without these tools, it is practically impossible to consistently and sustainably create high-quality code. Coding confidence is a key part of any high-quality development team. 

Here are the most important things to deploy or optimize in your organization to increase code confidence: 

  • Testing - Testing is a fundamental practice for all forms of engineering. Regardless of methodology, unit testing represents the most baseline form of testing and the first step for many teams to instill confidence and quality in their software.
  • Code Coverage - A code coverage tool instruments an application’s code while it is being tested and identifies which branches, methods, and files have been executed. It provides a critical metric that correlates to the health and quality of your application. 
  • Code Reviews - Code reviews are a discussion between two engineers to ensure that a piece of code follows good practice and is understandable by another engineer. Without code reviews, it is impossible for a team to ensure the quality and readability of a piece of software. 
  • Continuous Integration - Continuous Integration (CI) is an automated system that builds a piece of software on every code commit. In a way, CI acts as an automated gatekeeper of quality and standards. Continuous integration systems can also act to streamline your team’s development processes by automatically building and releasing artifacts or deploying fully built sites or applications using committed code.
  • Linting and Coding Conventions - Proper use of code style makes it easy to find things that are out of place. There are a number of tools that effectively reduce the cognitive load of reading and writing software and eliminate the need to waste time addressing styling issues in code reviews.
  • TypeScript - TypeScript is a compiler and type-checker that provides static typing to JavaScript. It improves most IDE’s auto-completion of class attributes, object keys, function parameters, and more. This leads to better flow while developing software as engineers are better assisted with the specific use and function of the modules they are using. It is especially useful for the onboarding of new engineers to the project acting as a set of guide-rails that assist in writing correct code.
  • Measuring Quality- Measuring quality is one of the best ways to make your efforts tangible and identify areas of risk before they become a problem. While there are no objective measurements of quality or sustainability, we can certainly measure second-order effects that indicate the overall health of an application.

Read Disciplined Engineering Part 2: Create Code Confidence to get more details on conventions, typing, and various tools that will improve code confidence.

#CodeCoverage #ContinuousIntegration #TypeScript

3rd: Improve focus by refining your engineering process

No alt text provided for this image

Now you’ll take the focus further by streamlining problem-solving processes and establishing patterns around common work. New practices can be added that accelerate development by allowing engineers to cleanly focus on solving problems or implementing features using standard patterns.

Truth: You will improve your engineering game by identifying the common patterns that will further improve your team’s focus on quality.

Here are the refinements that SitePen most often recommends to help mature teams ensure quality and sustainability. 

  • Build an Onboarding Process - In many ways, building an onboarding process is a litmus test for the health of your project. It forces the team to document all necessary steps and decisions for building and working with the application.
  • Have a Release-first Approach - The biggest and most common show-stopper from engineering is not having a release process in place to deploy the application to production. Defining the release process and putting systems in place to support it should be the number one priority of the lead because it puts the team in the best possible position and is a marker of a robust engineering process.
  • Use a Git Process - With all application development, it’s important to have a source control process in place. At SitePen we use GitHub to ensure that each engineer works from their own fork and creates a feature branch for each feature they work on. Teams best able to achieve this are ones with few single points of failure, have taken the time to document and share knowledge, and have automated processes in place that support good engineering practices. 
  • Manage Bugs - Bugs are an inevitable part of any project. Mature teams should have a well-defined way of triaging and fixing bugs as part of their engineering process.

Read Disciplined Engineering Part 3: Refining Your Engineering Process for more insight that will help you streamline new engineer onboarding, build documentation, squash bugs, and implement successful code review. 

#GitHub #CodeReview #DevelopmentDocumentation

The team at SitePen has consulted with countless teams on how to incorporate quality engineering practices into new and existing projects. Contact us to discuss what we can do to help you improve your engineering quality and developer productivity.

Follow SitePen on TwitterFacebook & LinkedIn

To view or add a comment, sign in

Insights from the community

Others also viewed

Explore topics