4/5/2023 by jdabulis

There's Only One Way to Develop an Application

 (Sorry about the click-bait title)


There are literally dozens of technical decisions that must be, or can be made to develop an application.  The question is when and how those decisions should be made if we want to get a high quality product to market most quickly.  We maintain a predetermined list of technologies suitable for immediately starting development on nearly any application of interest to our client businesses and their customers and end users.


The prototyping application development approach reduces costs and delivers faster because many use cases and business questions are elaborated and addressed early in the design. This drives the set of features and enables filling the product backlog with perfect user stories-- i.e. ones which are easily understandable, discrete, independent, testable, and most importantly, small.


But prototype-powered development requires that developers are ready on day zero with a toolbox of reliable and high performance frameworks, components, patterns, and other technologies. This lets us spend all our time concentrating on the business and the user experience instead of researching, discussing, evaluating, debating, and selecting the technical tool chain.


By "tool" we usually mean a software library or external service providing built-in functionality needed by our application.


Criteria for Tool Selection


  • Replaceable


We must able to replace one tool with another without weeks of refactoring and programming. The scope of a tool should be such that we would replace it with another for a single reason. The only technical components exempt from this requirement are hosting platforms (e.g. Azure), programming languages, and frameworks (e.g. .NET).


  • Popular

We select only those tools that have also been selected by many thousands of other developers so that when development or deployment challenges are encountered, information on how to solve these problems can easily by found. Developers are either already experienced with, or eager to master the use of popular tools and components for career development reasons. Popular tools have documentation are often of higher quality; open source tools contain unit tests and usage examples.


  • Easily Integrated


By selecting a platform and framework, we typically get many tools "out of the box" that we won't need to individually install and configure. There should be a clear path for consuming lower level components, services, tools and libraries into our application.


  • Important


We integrate external tools or component instead of writing our own implementation especially when the tools have many possibilities for reuse, and are designed to solve complex generic problems with many possibly many edge cases.


As of April 2023, here is our current list of default tool/platform choices we show up with on day zero. with the expectation of each slashing many hours of precious development time from our prototypes and, ideally, our production applications:


Purpose/Vertical

Component/Platform

Cloud PaaS

Azure

CMS

Wordpress/Peachpie

CSS Framework

Bootstrap

Database (RDBMS)

MySql, Connector/NET

DI Container

.NET 8

Domain/DTO Mapping

Mapperly

HTML embedded text editor

SummerNote

HTML/Js Data Grid

ParamQuery

Image Storage

ImageKit.io

Mobile App Type

Progressive Web App

ORM

Dapper

Payment Gateway/ecommerce

Authorize.net

Performance/Timing

Benchmark.net

PM Framework

Scrum

Project Management

Azure DevOps

Server OS

Linux

Service Testing

VS (v17.5+)

Services Framework

Azure Functions

Site/Health Monitoring

Montastic

SOA Service Bus

Azure Service Bus

Source Control

Git

SPA Framework

Blazor Server

Unit Testing

xUnit

Web/Services Server

Kestrel


Takeaway


To get started on a new project, it's important to have a list of "go to" tools and technologies that you've evaluated and selected beforehand to avoid spending a lot of time deliberating over these decisions at the customer's expense early in the project when it's important to show rapid progress. However, it is important to always stay up-to-date with, and informed of, trends, updates, and new options so that your list will be periodically updated.

© Lognosys LLC. All rights reserved.