under_dev

You’ve caught us mid-build — features may be incomplete.

Logo

For Inquiry

Email

info@leanq.digital

Contact Us

  • LogoLogoLogo

E-Commerce

How to build quality software products

Strategic planning, technical proficiency and active communication etc.

How to build quality software products

Key Takeaways

  • Sustained production of quality software is essential for continuous software delivery and sustainment of an optimized deployment pipeline.
  • Annual capital investments ear marked for training and infrastructure (hardware and software) improvements are required to facilitate development of quality software. 
  • Adoption of light-weight processes that align, with organizational business models and facilitate developer productivity is a key environmental decision.
  • Upper management commitment, organizational culture and contributions from effective software developers are the differentiating factors for developing quality software.
 

Abstract

The level of software quality attainable is a reflection of an organizational business decision.  There are many factors that influence this decision, including development, build and testing environments effectiveness, resources and their associated skillset, integrity, motivations and experience levels, commercial agreements, and adopted processes and productivity tools. 

The effectiveness of development, build and testing environments sets the bar for attainable efficiency and breadth of testing.  The closer test and production environments mirror one another, the greater probability of uncovering dormant and edge-case issues that are otherwise destined to surface in a production environment.   

Selected process should surface and mitigate risks while ensuring repeatability.  Processes should not be cumbersome nor contain duplicity.  Processes should undergo periodic review, to ensure that they are optimized and provide organizational value.  

 

Work organizing and planning productivity tools should improve efficiency, support transparency and rollup reporting.  The selected tools should require a minimum amount of team administrative overhead.   Also, the perceived significance of these tools should not overshadow the effort and actions required to produce quality software.

Experience, technical acumen and self-awareness are attributes often associated with software developer effectiveness.   Effective developers have a significant role in the production of quality software.  Their domain knowledge, attention to details and aggressive approach to testing are borne from ingenuity and practical experience. Integrity and self-motivation are traits necessary to sustain consistent and high-levels of productivity during both the exciting and challenging phases of software development. These factors combined with a suitable infrastructure and a set of light-weight processes, are precursors to continuous production of quality software.

Effective developers are not infallible, however their deliberate design and implementation decisions ensure “built-in” quality. Thereby reducing the probability of unexpected and undesired quality related outcomes.  The effective developer relies on critical analytical and deductive reasoning skills, as oppose to rote or surface comprehension to guide them during the software design, implementation and testing stages.

Recognizing the role and contributions made by effective developers, towards the production of quality software, does not diminish the need for light-weight processes nor the contributions of others.  There are many articles that describe software development processes importance and the contributions of others along the software value chain.

This article will resonate most with those that have had exposure to software development environments wherein roadmap development and/or custom/fix bid implementations are the norm.

Therefore, this article describes:

  • The significance of continuous delivery and an optimized deployment pipeline to the software value chain.
  • Upper management commitment and capital investments required to facilitate production of quality software.
  • Observed traits and patterns of behaviors exhibited by effective developers that facilitate “built-in” software quality.

Continuous Delivery and the Deployment Pipeline

Continuous delivery entails sustained incremental development of quality and production ready software.  This workflow facilitates agility during feature implementations and is necessary to maintain valued customer and stakeholder feedback loops.  However, caution must be exercised to ensure technical debt is not incurred unabated, due to implementation short-cuts taken to facilitate quick delivery.  Effective code reviews, consistent use of a static code analysis tool and planned code refactoring periods are deterrents to increasing technical debt.  

Continuous Delivery Process

Sustained production of quality software and the effectiveness of applied automation to build and test environments are significant continuous delivery contributors.  Open lines of communication and respectful dialogue among software development, build and release teams must exist.  Inadvertent “broken build” scenarios are destined to occur on occasion, despite best efforts from developers to build their modifications against a replicated and periodically synched main code branch prior to repository submission.   These scenarios should be addressed in a manner benefiting timely resolution with a focus towards future improvements.

When consistent production of quality software is attained, the next logical step entails deploying features and solutions from an internal ecosystem to end-user environments where value can be realized.  An optimized software deployment pipeline:

  • Utilizes automation tools to efficiently move software along the deployment pipeline.
  • Employs the minimum number of actions and interactions, required to move code from the repository and transform it to a binary form for use by end users.

Consistent production of quality software is a precursor to continuous delivery and an optimized deployment pipeline.