Skip to content
This repository has been archived by the owner on Oct 28, 2020. It is now read-only.
/ manifesto Public archive

Digital Engineering Manifesto

Notifications You must be signed in to change notification settings

digital-dynamite/manifesto

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 

Repository files navigation

Digital Engineering Manifesto

The Code

Stay highly functional

We believe in Functional Programming. This means we strive to write declarative code using pure functions. We rely on structures over classes and we avoid shared state and side-effects. We adopt the principles of category theory into our code wherever we can. This implies the use of algebraic structures such as semigroups, monoids or the monadic laws.

Dry isn’t everything

As developers, we are taught “Do not repeat yourself” above all else. We feel this is a principle more than a rule that cannot be broken. When taken as a rule, it leads to complex dependency hierarchies or tons of static utility methods, but it also leads to bugs and side-effects that can creep in when the application matures.

We much rather see code that will never change because it has only one responsibility, be copied over as a private function in another module rather than be pushed as a utility or given its own module. Copy the code first, use unit tests to document the functionality, the generalization of the code is the last resort thing.

Push logic to the boundaries

By pushing our business logic to the boundaries of the application, the web components that remain become representational components whose sole purpose is to render UI based on the props passed to them. This makes those components very predictable in their behavior based on the state. Through this reasoning, we feel confident enough the rendering of the components themselves does not need to be unit tested, as long as the business logic is.

The People

DevOps is a culture

At Dynamite Group, the focus is on us to deliver quality fast without compromising on reliability or security. It is also on us to be autonomous. This means that DevOps has to take up part of our focus at all times. We have to recognize recurring actions so we can automate them. We have to be critical of our processes, so we can optimize them. Through these efforts, we strive to accomplish continuous deployments and build quality into the development process.

Quality is a team responsibility

The testers are there to ensure quality gets delivered to the customer. It would be easy to grow accustomed to the perception that this responsibility of quality lives and dies with them. But in reality, the devs are responsible to deliver quality code to the testers. And our Product Owner and stakeholders are responsible to deliver quality to the devs in the form of well-articulated stories. As engineers, we do not forget our role in this chain by putting quality over quantity.

Be critical

At Dynamite Engineering we encourage communication, to challenge and to be challenged. We are always open to improve and to grow in meaningful ways. We are not here to stay content, we are here to make things better and make a difference. When we meet that obligation, we inspire others to grow as well. When we challenge the status quo, we make sure we are prepared to argue our reasoning. Sometimes, we disagree and commit. Other times, we flesh out and iterate on previous ideas.

Signatories: Stijn Winand, Mark Massoud, Luis Rodriguez, Angelo Vagenas, Viktor Kotusenko, Matthew Staniscia, Andres Rodriguez, Stoyan Mishkovski, Lian Longfeng

About

Digital Engineering Manifesto

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published