Innovation and Product Development

Build Faster with the App Accelerator

Build faster

A few years ago, Satya Nadella, CEO of Microsoft, stated: “Every company is now a software company.” The line between the product you offer and the software that supports it has thinned, and in some industries, the software is the primary competitive advantage. Like it or not, the software is a critical part of your business. The only question now is “build or buy”? There are many variations of buying, but they all have one serious limitation, control. If you want full control of your competitive advantage, then you must build.

Building

Building “in-house” can be cost-effective once you have assembled the right development team, but that’s easier said than done. It can take years to assemble and train an effective team. Partnering with a reputable consulting firm will get you great software faster but often at a higher cost, and eventually, you’ll take it “in-house.” These trade-offs can make building software feel like a necessary evil in a lose-lose game. At Perficient, we love building software, and we want you to love it too. So, we took our learnings from over 25 years of custom software development, distilled it down to the essential components, eliminated bottlenecks, and developed an accelerator that saves money and builds team discipline at every step of the development process. But it doesn’t just save money while you’re engaged with us. Our accelerator isn’t a framework or platform meant to lock you down and tie you to our services. Like good managers and great parents, we want to facilitate your independence. Our accelerator is a suite of tools, patterns, training materials, and disciplines that go with you when your team is ready to take full ownership of your software product.

Building… Accelerated

Our app accelerator is a modular toolkit designed on a foundation that is both timeless and broadly applicable. The accelerator provides the most value when building distributed applications like APIs or SPAs (single-page applications) with an accompanying back-end. It isn’t a great fit for desktop-only applications like word processors or graphics editing tools, but we don’t have many partners asking for desktop-only solutions these days. The accelerator supports enterprise-scale and distributed patterns like micro-services. At present, the front-end of choice is React. However, we intend to introduce support for Angular and other modern UI frameworks. The back-end of choice is .NET and C#, but we are exploring additional options here as well. Accelerated applications can be hosted on-premises or on any cloud platform. The accelerator saves money by automating project setup, eliminating boilerplate code, building in the right patterns, using strategic automated testing, and enabling rapid cloud deployment. Using the accelerator, an enterprise-ready “hello world” application can be generated and hosted in the cloud in less than an hour.

Rapid Project Setup

Setting up a project from scratch can take weeks. Development teams make tons of small incremental decisions about tools, patterns, frameworks, and coding standards. Even the most experienced architects struggle to keep track of all their “go-to” technologies and configurations, and then there’s the constantly evolving landscape of the latest and greatest tech. Our accelerator automates project creation packing 25 years of software wisdom into a project setup process that takes minutes. Our architects carefully curate new technologies for inclusion in our accelerator, keeping projects both stable and modern. Here are a few examples of the assets produced during project creation:

Front-end

  • React application for interactive and engaging user experience (more frameworks to come…).
  • TypeScript for improved stability and developer efficiency.
  • VSCode project with extensions and configuration that enhance developer productivity.
  • Storybook integration to improve user-interface development and provide developers and designers with a “living” component library.
  • Simple hooks-based flux state management.
  • Client-side SPA routing
  • Configured linter to enforce coding standards.

Back-end

  • C# .NET Core or .NET 5 (more platforms to come…).
  • Layered enterprise-ready architecture.
  • Modern internationalization and localization support.
  • Simple dependency registration eliminating barriers to composition-based development.
  • Custom code analyzers to enforce coding standards and patterns.
  • Infrastructure-as-Code for effortless deployment to the cloud.

Boilerplate

Shaving weeks off project setup time is a great start, but the accelerator doesn’t stop there. It also eliminates the full-stack boilerplate associated with creating new “pages.” This shaves hours off every new page. And using real-time code generation, the accelerator facilitates communication between the front-end and back-end; developers focus on building content, not “wiring” the application. This is all done with flexible tooling, not a heavy-handed framework. So, you’re not locked in and have full control to customize every aspect of your accelerated project. We’ve carefully mixed one-time and build-time code generation strategies to unlock productivity without impacting flexibility or creating roadblocks. Some of the per/page boilerplate eliminated by the accelerator includes:

  • Data access mediators
  • Domain logic processors
  • Distributed application adapters
  • Client proxies and models
  • Client and server routing
  • Presentation components
  • Flux actions
  • Storybook stories
  • Automated tests

The Right Patterns

There is a lot of hype in the software industry around patterns and approaches, and even experienced engineers can get distracted by the prospect of something new. Unfortunately, this noise often makes software development harder than it needs to be. We have extensive experience building new projects from the ground up, and we’ve surfed more “trendy” waves than we’d like to admit. But that experience has helped us cut through the hype and select timeless patterns and architectures for inclusion in our accelerator. From training to tooling, we’ve built the right patterns into the fabric of the accelerator, making it hard to go wrong. And we’ve done so without limiting developer creativity. In fact, by freeing developers from counterproductive debates and trendy patterns, they are better positioned to master the patterns that matter and develop creative solutions for actual business problems. The patterns adopted by the accelerator enable teams to build faster, with greater parallelism and resilience to fads that result in technological lock-in.

Automated Testing

Automated testing is a critical component of any software solution: if it hasn’t been tested, it doesn’t work. But testing can be a significant pain point and, if poorly managed, will bring progress to a halt. Accelerated projects utilize a modified BDD (Behavior Driven Development) approach to automated testing that makes tests easier to understand and, critically, easier to maintain. The layered architecture used in accelerated projects defines clear “seams” at which to introduce tests. This reduces the overall number of tests without reducing code coverage. Developers spend less time writing tests, running tests, and maintaining tests while holding a high-quality bar focusing on business requirements.

Deployment

The accelerator generates boilerplate code that enables deployment to popular cloud providers using infrastructure-as-code. Infrastructure-as-code provides reliable and repeatable deployments saving developers time and stress. Accelerated projects can be generated and hosted in a cloud provider in minutes, simply integrate with CI/CD, and you have an agile team capable of delivering value to your users in record time.

Training

The accelerator is chock-full of great technologies, time savers, and smart patterns. But it can’t “force” quality software. Many of the patterns and techniques that engineers learn in school and on the job are counterproductive at an enterprise scale. Breaking bad habits and unifying a team with diverse personalities, perspectives, and experiences is what makes the difference between success and failure. And the software industry is inundated by overloaded terms that coble effective communication in large teams. We’ve developed training materials that build a shared “mental model” so that developers from diverse backgrounds can “speak the same language.” This mental model is the foundation for our accelerator training. Accelerated projects are always staffed by certified engineers, and this training is extended to your team members.

Conclusion

Our partners didn’t ask us to build an accelerator. We built it because we’re passionate about building better software faster. It wasn’t easy, we serve a broad range of industries, and each partner comes to us with unique challenges. But through years of experience and passionate exploration, we identified a path that saves money and frees our engineers to do more of what they love and less of what they don’t. Yes, we use our accelerator to save you money. But more importantly, we’ll use it to teach your team how to build great software protecting your investments and delighting your users.

Next Steps

To learn more about the app accelerator, contact us or check back here monthly; I’m writing a series of blog posts that will provide a technical in-depth review of the patterns and technologies that enable the accelerator. I’ll link to those posts here as they come available.

  • PADM, a Foundation for Great Software (Coming soon…)

 

Contact us to learn more about accelerating your next build:

About the Author

Nathan is a Senior Solutions Architect with over 14 years of experience designing and building custom applications. He studied Industrial Design and knows his way around Illustrator, but his most creative work is done with an IDE. He has a breadth of full-stack experience, loves .NET, and is constantly exploring new technology.

More from this Author

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.