, , , , , , , ,

What is ALM?

A: Tools that manage the application lifecycle. Tools that help from creation to application deployment.

It is common to see ALM divided into the following categories:

  • Requirements Management
  • Configuration and Change Management
  • Build Management
  • Test Management

Knowing this, you need to know what is ESSENTIAL and what will be USEFUL to your problem. Here is my opinion on key ALMs.

  • Version Control Tool (Git, SVN, etc.)
  • Continuous Integration Tool (Jenkins, Bamboo, etc.)
  • Build Tool (Maven, Gradle, etc.)
  • Task Management Tool (Redmine, JIRA, etc.)
  • Testing Tool (JUnit, Selenium, etc.)

Many people ask why I do not put Documentation Management Tool as ESSENTIAL and the answer is quite simple:

  • Not every application needs documentation.

“What? You are against documentation? Application without documentation?”

No, I’m not against documentation. Au contraire. But I am in favor of useful documentation. If the application is written using the principles of Clean Code, just a few documentations would aggregate value to the point of having a ALM just for that. Then… use when HELPFUL.

Other examples of ALMS that are useful in some cases:

  • Documentation Management (Redmine Wiki, Confluence, etc.)
  • HelpDesk (Infra only. Ex: JIRA Service Desk, FreshDesk, etc.)
  • IDE (Integrated Development Environment. Ex: Eclipse, PyCharm, IntelliJ, etc.)

Why use ALM?

  • Productivity and Performance
    • They make the developer’s life much easier
  • Team work
    • Integration, collaboration, task management… all in a simple and accessible way.
  • Organization
    • ALMs usually organize the application lifecycle and centralize informations.

Beware ALM

Although ALMs are highly recommended, everything has a limit. Using many tools because you think cool or because you want to, it’s not recommended. My point is that ALMs in excess can harm you, especially with regard to bureaucracy.

I’m like: the less bureaucracy, better. I have worked in companies where a deployment to production took more than a week because he had to go through all the steps defined by the ALMS.

Appendix: My ALM Suite

When I usually do a personal project, I often use the following tools:

  • Version Control Tool: GIT
  • Continuous Integration Tool: Travis ou Jenkins
  • Build Tool:
    • Java
      • Maven
    • Python
      • Sometimes Pybuilder
  • Task Management Tool: Redmine
  • Documentation Management Tool: Redmine Wiki
  • Testing Tools: JUnit ou Unittest, Selenium e outros
  • IDE:
    • Java and other languages
      • Eclipse
    • Python
      • PyCharm

That’s it, folks. Which suite you usually use?