Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save vanDonselaar/77d7ae45d48d7ac2caa0bbb4315d4705 to your computer and use it in GitHub Desktop.
Save vanDonselaar/77d7ae45d48d7ac2caa0bbb4315d4705 to your computer and use it in GitHub Desktop.
Half tongue-in-cheek half serious take on over-engineering in startup life

Architecture

Extremely important when designing a Google datacenter. Or if you're an Oracle consultant. But you're not. Stop drawing, start coding.

Bounded context

What does this word even mean? Please get back to work. And no, I don't even want to know what a bounded context is.

Contract testing

You're testing WHAT? Let your code generator do the work and focus on testing something useful.

Domain driven design

What the hell were you doing before then? Anecdotal Driven Design?

Event Driven / Event Storming

This is not Twitter/X. I bet you can update that database record synchronous in less than 100ms.

Feature flag

Stop deliberately complicating your life and seek support. Just put a config file on S3. In YAML for that matter.

Git Flow

This flow would have made sense for Subversion, but you're too young to have worked with that. If you understand the inner working of git, you'll be using trunk-based development from now on.

Hexagonal architecture

Did you say "Architecture" again?

Ingress

No. All you need is an AWS Application Load Balancer with TLS termination. Are you using Kubernetes by any chance?

JIRA

The IBM of project management tooling. Nobody got ever fired for choosing Atlassian. Nor promoted. You're better off with self-hosted Youtrack.

Kubernetes

Stop using things you don't understand. AWS Elastic Container Service is the thing you're looking for. Or a magical think that's called plain EC2. Note that Kafka also starts with a 'K'.

Lambda Serverless

The fact that it exists doesn't mean it's a good idea, nor you should be using it.

Microservices

Point me to one successful startup that went microservices from day one and didn't regret their decision.

"New [whatever thing]"

Stop creating, start maintaining. Iterate over the things you have rather than producing yet another 'new' thing. Evolution over revolution. Cure that second system syndrome.

Ownership

If someone has to ask "who owns this?," then your organization is broken. Preach collective code ownership. Ownership problem solved.

Performance testing

Don't even think about it before hitting at least thousands of requests per second on production. My RaspberryPi can handle that load. Hardware is cheap. Performance tests are not.

QA Release Approval

Shift-left your QA. Don't take your continuous deployment hostage with waterfall project management practices.

Refactoring

It's like changing underwear every day. Highly recommended, but stop talking about it with your colleagues and just do it without whining.

Sprint planning

Stop humiliating yourself with sprint goals you didn't meet. Set priorities rather than timelines and do kanban. Show me you can-ban (haha) before you even consider SCRUM/Agile/Safe/whatever.

Team structure

Your current organizational structure is fine. Like democracy it has its shortcomings, but the alternative certainly isn't better. Stop debating and start delivering value to your customers.

Understaffed

No you're not. WhatsApp had around 55 employees when they got acquired for $19 billion. Work smarter. Work faster. And decide what not to build.

Version Control conflict

Invest an afternoon of your life reading the git book. Once you master the git CLI and you can do an interactive rebase using --onto with the use of rerere you'll never spend more than a minute on any future conflict.

Web scale

Yes this is a MongoDB reference. Don't worry, your Ruby on Rails on PostgreSQL will be fine. By the time you're indeed web scale you'll also have funding to hire smarter engineers than you who can fix your performance problem.

X-Functional team

Ah, the good old Spotify model that even Spotify didn't implement. Don't bother with cross-functional teams and just have one frontend team and one backend team. This solves your "Ownership" problem too.

YAML

Just say Norway to YAML. By the way, I sense that you're still using Kubernetes, aren't you?

Zero cost abstraction

There's no such thing. Don't bother and don't abstract. No need to pick a vendor agnostic technology because you won't switch vendor anyway, unless you're on Azure. Trust me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment