Go back
PowerFLOW

PowerFLOW a.s.

Description
Development and maintenance of a low-code/no-code platform built on Camunda and Form.io, enabling orchestration, management, and monitoring of business and manufacturing workflows.
Project type
Contract — team
Start date
December of 2022
End date
July of 2025
Project URL
https://powerflow.cz
Skills

About project

Jumping onto a project building a no-code/low-code platform around technologies such as Camunda (7.xx), Form.io, Zeebe and the Spring framework.

The start

At the time this collaboration began, the project:

  • was becoming a separate entity, splitting off from its parent company NOTIX s.r.o. with big ambitions and prospects for the future, which still required a fair amount of work on new features - partly set by the product roadmap, partly by the demands of existing customers, and partly paying off the technical debt that is sometimes unavoidable when you need to buy time and meet business goals.
  • had only recently started running as a new iteration of version 3, in which fairly fundamental but necessary changes had been made to how some of the main components work, so that future implementations and extensions of the product would be possible

At that point, the first thing I started with was fixing and filling in the automated integration tests, of which there are tons, and through them I learned the concept, the features and the extensive codebase and architecture of the platform.

Gradually I also took over responsibility within the team for handling incidents reported by customers or internally by the testing department.

Getting up to speed

By the end of my first year there I was also handed responsibility for larger implementation blocks (30+ MDs) based on an analytical specification.

Customer support and incidents reported by testing run in the team on the basis of two groups of developers swapping over every two weeks.

New management arrived, along with reinforcements for sales, but above all the development team grew as well, a separate DevOps department was formed, and I started taking some part in activities such as:

  • migrating the main microservice (whoever came up with the name microservice - sometimes it is a behemoth) from the Spring framework to Spring Boot
  • separating from the parent company's infrastructure
    • a DevOps department is formed
    • migration from BitBucket to GitHub
    • migration of CI/CD from Jenkins + BitBucket to GitHub Actions
    • migration from the "internal cloud" - self-managed hardware in a datacentre - to Microsoft Azure
    • leaving on-premise behind, the platform now requires a Kubernetes cluster
  • upgrading libraries and ageing components running out of support, such as:
    • MongoDB
    • the Oracle and Postgres database versions
    • Components that use legacy code from the parent company
    • The question of support for Camunda 7.xx and the new licensing model for 8.xx

Crisis and the start of the changes

Before the end of my second year here, the shift in sales activites, personal changes and other factors led to necessary reduction of capacity and part of the team leaves voluntarily.

That is pity, because team here works like good example of startup, I think each member did more than he was supposed to do according to contract. I hope i will meet this people somewhere in the future on the future projects.

Alone, and the challenge

Before the end of the second year only one backend developer with lowest rank is left in the team - me. I am immediatelly deciding to leave too, but this can also be the strange once a lifetime opportunity to try the senior load and move forward.

Over the following 8-9 months my work looked like this:

  • bugfixing and customer incidents
  • preparing and releasing servicepacks to the customer, one release of major version
  • technical analysis, preparing HLD for customer request on behaviour change
  • studying things there is not much about on the internet, in documentation or on forums, because they are not the generic stuff people cobble together at home
  • bringing back support for on-premise environments - a complete deployment at the new smaller customer
  • creating a local docker-compose for local debugging and testing
  • creating a VirtualBox image with a working platform, plus hotswapping locally built source code through VirtualBox shared folders, to make local debugging and starting the platform even easier
  • the last month: revising and fixing the documentation (Confluence), documenting the deployment and release procedures and processes for the individual customers, onboarding a new developer that management finally after 8 months of promises and attempts to hire found,

Conclusion

After 9 months I started to notice that:

  • I had learned some new things, yes, but I feel I am growing only a fraction of what I would in a team, especially seniors and tech leads to help and bring new challenges - I am just sinking deeper into the project's legacy codebase and acquiring part of skills that I will probably not use anywhere in the future.
  • The overwhelming majority of the time, the testers and I work on L1 to L3 customer support, which I find grinding and frustrating when it is not alternated with other activities
  • after another 9 months, my doubts about the sustainability of the project had not got any better
  • given the multiplied difficulty and volume of the work, I also expected some increase in compensation - not just another praising words, not just another promise about the future
  • I am deciding that not every challenge in the life is the challenge that should be accepted
    • It is time to find another battlefield
    • I started to feel the stagnation intensively and while I am standing still maybe train is leaving
    • Dramatic shift in company culture

Post mortem

  • After contract cancellation I am still providing consultations and assistance with most critical incidents for next 6 months in amount of 0.5 to 1 FTE per week for this company.