The Infi Way

At Infi we like to work the following way.

The Infi Test #

A quick check to see if you're roughly following The Infi Way. A sort of Joel Test.

  1. Are developers seeing real users?
  2. Is code being reviewed?
  3. Are you running automated builds with tests?
  4. Can you automatically deploy to production?
  5. Are repositories self-documenting?
  6. Does the team autonomously pick fitting technology?
  7. Does the team autonomously choose their own process?
  8. Is the process evaluated periodically?
  9. Is work refined before it's being done?
  10. Are outages noticed and handled proactively?
  11. Is knowledge actively shared within- and outside of the team?
  12. Are secrets managed correctly?
  13. Are there (proven) working, encrypted backups?

We aim for maximum score, though sometimes you still have to work towards it.

User-centric #

We work for the client of our client. They use software to achieve their goals, our goal is to help them with that.

How we like to do this:

  • Direct contact with users
  • Prototyping, iterate quickly
  • Work user-centric
  • Close collaboration with designers
  • Work should deliver value
  • Work from "why"

Concrete examples:

By us:

Principles #

We work in a modern way, aiming for quality. "First time right" is also cheapest in the end.

How we like to do this:

  • Modern version control
  • Up to date tooling, frameworks, and libraries
  • Automation where possible
  • Strong test coverage
  • Linting, code quality checks
  • Pair programming
  • Code reviews for (nearly) everything

Concrete examples:

By us:

Code is the Source #

Source code is just that: the source. Self-documenting, so usable for any developer, our own or otherwise.

How we like to do this:

  • Architecture in the source
  • Clone & run repositories
  • Continuous integration, continuous delivery
  • DTAP
  • Infrastructure as code
  • Ad hoc scripts in source control
  • Backup scripts in source control
  • Monitoring and alerting defined in code

Concrete examples:

By us:

Used Technology #

We prefer using "the best tool for the job"; we're generalists who can quickly specialize when the need arises.

How we like to do this:

  • We do custom-made software; aiding in buy-over-build where needed
  • Hosting (usually) in the cloud
  • Back-end in a modern stack
  • Front-end normally with mature frameworks
  • Mobile cross-platform, unless "native" really adds value
  • Data storage fitting for the project

Concrete examples:

By us:

Process and Team #

Teams work autonomously, but usually pick an agile way of working. With a Product Owner from the customer.

How we like to do this:

  • Team determines their own process
  • Continuously improve the process
  • Product Owner from the client
  • Scrum master (can be a developer or project manager)
  • Maintain a planning together
  • All team members help with refinement
  • Minimum of 2 people per team, split up from 6-7 upward
  • Call in help from colleagues in other teams
  • Regularly work together with the client at the same location
  • Testers, designers, and other experts called in when needed

Concrete examples:

By us:

Craft #

Building custom software is a craft. We are happy (and proud!) to show what's going on behind the scenes.

How we like to do this:

  • Active knowledge sharing
  • Plenty of studying
  • Invest in tooling
  • Great hardware
  • Experiment
  • Monitoring and alerting

Concrete examples:

  • Presentations (internally and externally)
  • Study groups, self-study
  • Visit conferences and meetups
  • Kibana, Sentry, Zabbix, etc.

By us:

Foundations #

Some things speak for themselves: they are always part of the deal. Think Security, Performance, Backups, a critical note, plus the opportunity to be ourselves.

Those foundations include:

  • Backups, including encrypted offsite backups
  • Security in code, and a secure way of working
  • Security audits when sensible (possibly via audits)
  • Performance, for example via load testing
  • Be critical of features, come up with alternatives
  • Buy-over-build suggestions where that makes sense
  • OS (Windows, OSX, Linux) as a personal choice per developer
  • Open Source usage and contributions
  • Meetups: host and organize
  • Be ourselves: (Dutch manifesto) "Wij zijn mensen."

Concrete examples:

By us: