Agile Practice: Continuous Delivery

All throughout the week, I have shared to you the most common software process models that a software product manager can best use for his/her product development. After the prototype is complete and once the product is ready for the client feedback, there are times when even if the prototype function well during development, it may not work as well for the client. To avoid this, it is an essential agile practice to automate the build of the prototype for testing, integration, and release of the product.

What is continuous delivery in the world of software development?

According to Stewart Hardy (2008), continuous delivery is the ability to get changes of all types—including new features, configuration changes, bug fixes and experiments—into production, or into the hands of users, safely and quickly in a sustainable way.

Continuous delivery allows the developers to deliver a product continuously, as it is being developed. Whenever a developer commits a code change, it will be built, tested, integrated, then released. The gap between the change and having it released is very short so it becomes noticeable for any problems that may arise. With this immediate feedback, the developers will be able to pinpoint immediately what went wrong and fix it in no time.

Further, continuous delivery prepares the product management team to release the product at any point, each to a specific channel or streams intended for different audiences for feedback. In order to support continuous delivery, the software product management team could use automated tools and these tools can be used to build and integrate the code, run tests, and package the product into a releasable form.

Test-driven development, usually used by large teams practicing continuous delivery, is an approach of writing tests before actually writing the code itself. The developers are actually solving the right problem by making the functionality they want. Here, the code is written, features start to take form within the product, and then with continuous delivery, the process is happening all the time and tested and fix immediately. If nothing breaks during the process, the prototype is ready for distribution anytime for testing by the users.

Check out this illustrated notes by Nhan Ngo continuous delivery:

See the source image
What is Continuous Delivery? – Continuous Delivery by Nghan Ngo

Reference:

University of Alberta (2020). Software Processes and Agile Practices. [Coursera Course] under the Software Product Management Specialization. Taken November 2020.

Poulette, B. (2020). Unified Process. [Video]. Embedded under the course study videos under the Week 2 of the Software Processes and Agile Practices Coursera Course. Taken November 21, 2020.

Hardy, S. (2008). Continuous delivery: Introduction. [Article]. Retrieved on Nov 21, 2020 from https://continuousdelivery.com/.

Foundational Concepts of SPM

I am knowing more about software product management through the specialization Coursera course I am taking: Software Product Management taught by instructors from University of Alberta.

Previously, my notes covered about what is software product management (SPM) and Agile development. Today, I will be sharing my notes for the foundational concepts I learned:

In SPM, there are 4 core topics an SPM professional should take into heart:

  • Process
  • Requirements
  • Planning
  • Monitoring

PROCESS

In SPM, process is a good foundation to apply the Agile development principle. Basically, a process organizes the work of people into distinct phases or stages to develop a software product.

For example, in preparing a pizza, the phases include planning, preparation, assembly and cooking. In each phase, work tasks can be assigned accordingly with a timeframe so the one who prepares the pizza will easily deliver and the customer, who is waiting for their order, will have an idea of what is in their pizza and how long they will have to wait for it. Similar with SPM, a process organizes the work tasks into distinct phases so a software product manager can easily manage the whole project.

In SPM, the phases of software development process are:

  1. Specification – This is the part where the client and the software product manager drills down the client needs into the product specification, and what the product will do.
  2. Design and Implementation – this is where the developers and designers will actually check and put into codes the product specification.
  3. Verification and Validation – after all he coding and developing, this is where we make sure the client is satisfied with the initial product (hence, validated) and the developers check if each code is tested and the product is done right (hence, verified). This is achieved by rounds of client inputs and demo, and testing on the part of development team.

Now, let’s say when you have an idea for the product, you went straight to developing instead of first writing down and planning how you will work it out, what items to include, how you will test. What do you think will happen? It’s like sitting at a keyboard and expecting a great novel to come out while you type. As a writer, I know it’s not gonna happen.

In SPM, this type of just getting it out there and doing it is called Ad hoc development. Ad hoc development is working on a product without applying all the agile development core values and principles; hence, wasting time, money and resources.

Having a well-defined software process enables everyone on the team to know what to expect and what responsibilities each one have; just like in any other project.

REQUIREMENTS

Specifying the requirements for a product allows the development team to be focused and efficient. This is making sure that the development team will be able to create the features according not only to the needs of the client, but also to the user. As what Bradley Poulette mentioned in his video for requirements, avoiding confusion is incredibly important in software development. It starts with knowing how to get clear requirements from clients, and refining these further to detect any potential errors in the product before it is being built.

PLANNING

In planning, it involves using processes and requirements to start organizing the tasks and schedules. This is where the software product manager and development team identifies who should do particular tasks and estimates how long each work will take. Estimates make sure that the team will also not over commit to the client.

Also, another part of planning is risk management. Examples of risks encountered are missing deadline/budget, software release bugs, development of team responsibilities, unforeseen events like team member quits, or the technology crashes. In all these risks, proper planning is ensuring these risks are managed and solutions created ahead of time.

As Alan Lakein says, “Planning is bringing the future into the present so that you can do something about it now.” True enough, effective planning makes any project successful.

MONITORING

Lastly, monitoring is important in managing software product development. While your development team is working on their own tasks, as a software product manager, you are to ensure that the development is on track, the budget is met, and the team’s environment is productive and efficient. Let’s say the development is ongoing, then no monitoring is being done. The next thing you know, the deadline is near and the team is cramming to make things work, only to sacrifice the quality of the product. So, definitely, we don’t want that to happen.

In monitoring, the development team and the product manager works together to monitor their progress in the project by each member being transparent with their progress, and each one of the team knows the project status. So in monitoring the progress of the each member in the team, it helps the whole project adapt to changes, meet deadlines and deliver the product required.

So, overall, understanding and applying these 4 foundational concepts in software product management will eventually ensure that the development of the product is on the right track.

Reference:

University of Alberta (2020). Introduction to Software Product Management. Coursera Course under the Software Product Management Specialization. Taken November 2020.

Patzelt, M. (2020). Why Process. [Video]. Embedded under the Week 2 course study of Introduction to Sofware Product Management. Taken November 2020.

Patzelt, M. (2020). Why Requirements. [Video]. Embedded under the Week 2 course study of Introduction to Sofware Product Management. Taken November 2020.

Patzelt, M. (2020). Why Planning. [Video]. Embedded under the Week 2 course study of Introduction to Sofware Product Management. Taken November 2020.

Patzelt, M. (2020). Why Monitoring. [Video]. Embedded under the Week 2 course study of Introduction to Sofware Product Management. Taken November 2020.

Concepts in SPM (Agile Software Development)

In any project, there are parameters for measuring success:

  • on-time delivery
  • completion of project within budget
  • delivery of complete features or requirements

In software product management, it is the same. However, there are added items:

  • The number of post-release bugs
  • The technical support needed after a software release
  • The software product’s customer rating
  • The revenue generated
  • The client’s satisfaction

It is basically a lot, huh? Well, a software product manager will help identify the product and project success by checking the above parameters for and make sure that the development efforts are directed towards the delivery of a quality product.

Agile Software Development

Agile, from the definition of Miriam-Webster dictionary, is having a quick resourceful and adaptable character. So when we say agile software development, it is the set of software development principles created for effective and adaptive software development where it prioritizes 4 core values:

  • Individuals and interactions
  • Working software
  • Customer collaboration
  • Response to change

Below are the 12 Agile principles from the www.agilemanifesto.org, with infographics designed by the University of Alberta for the Coursera Course: Introduction to Software Product Management: