Skip to content

daniellizik/engineering-first-principles

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 

Repository files navigation

Engineering First Principles

Principle 1: Be the developer you want to work with

It is amazing what one can accomplish if one does not care who gets the credit.

Harry Truman

The golden rule is at the heart of our engineering culture: "Treat others as you would like others to treat you." Believe in fostering an environment of vulnerability, trust, empathy, and accountability. By supporting our teammate's growth, celebrating our achievements, and practicing egoless programming, we strive to create a team that thrives on holding each other accountable for our mutual success.

We recognize the importance of maintaining a healthy work-life balance and prioritize personal health to ensure sustained productivity and well-being. We view our coworkers as internal customers, valuing their unique perspectives and treating our interactions as meaningful relationships rather than business transactions. By providing exceptional support for their needs, we strengthen the relationship between our teams and their stakeholders and cultivate an environment that embraces collaboration and success.

Best Practices

  1. Don't be a dickhead.
  2. Ditch your RTFM mentality, it isn't appreciated. Make it as easy as possible for everyone else.
  3. Draw the rest of the fucking owl, not everyone knows all the parts of thing as well as you.
  4. Seek a growth mentality for you and your team.

Principle 2: Practice a healthy skepticism

It is important not to worship what is known, but to question it.

Jacob Bronowski

Embracing a healthy skepticism enables us to challenge the status quo and continuously question the state of our understanding. By confronting our own cognitive biases and being open to alternative perspectives, we cultivate an environment of continuous learning and improvement. We encourage research, exploration, and exposure to diverse technologies, languages, industries, and cultures, seeking inspiration from external domains to solve local challenges.

Best Practices

  1. Don't assume existing solutions are wrong (or right).
  2. Don't endlessly bikeshed or reinvent the wheel.
  3. Don't operate in a vacuum, most likely the current problem you're facing has already been solved before, seek out those solutions.

Principle 3: Engineering is a side effect of business

If I had an hour to solve a problem I’d spend 55 minutes thinking about the problem and 5 minutes thinking about solutions.

Albert Einstein

Our ultimate goal as a software engineer is to create value for our customers. We fully understand that software development is not an end in itself but a means to serve the needs of our users. We align our engineering efforts with the organization's product vision and business goals by developing a deep empathy for our customers. We strive to understand the problems the team is trying to solve and focus on delivering solutions that truly meet the needs of our users.

Best Practices

  1. Don't rush into implementation before validating your assumptions and leap of faith hypotheses (the central tenet of lean methodology and product discovery).

Principle 4: As simple as possible, as complicated as necessary

Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take.

Antoine de Saint-Exupéry

We believe in the elegance of simplicity. Avoiding over-engineering for the sake of engineering, we strive to create solutions that are simple, maintainable, and fit for purpose. By adhering to the rule of least power, we resist the temptation to add unnecessary complexity. Our focus is on building efficient, scalable, and robust systems that solve real problems effectively.

Best Practices

  1. Similar to principle #2, assume your solution sucks and there's a more elegant solution, but do not run into the trap of creating a solution in seek of a problem by disregarding principle #3.
  2. "Duplication is cheaper than the wrong abstraction".

Principle 5: Iterate quickly

Better a diamond with a flaw than a pebble without.

Confucius

We embrace an iterative approach to development by recognizing that perfection can be the enemy of progress. We prioritize speed and agility, valuing the ability to adapt and iterate rapidly over excessive planning and premature optimization. We understand that delivering value to our customers requires setting achievable milestones, fostering a culture of experimentation, and embracing the philosophy of "better done than perfect." We iterate, learn, and refine our solutions based on feedback and real-world usage.

Best Practices

  1. "Premature optimization is the root of all evil", YAGNI

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published