Brutkey

Robert Roskam
@raiderrobert@mastodon.social
Robert Roskam
@raiderrobert@mastodon.social

More software engineering leaders have poorly formed mental models for their work.

Mental models are metaphors for how something works, a simplification of the thing to make it easier to understand it. A few examples from physics would be things like:
- electricity is the flow of positive charge
- gravity is like a spring in reverse
- a black hole sucks everything in

These mental models aren't strictly accurate. So you must be careful when building upon them.

1/

Robert Roskam
@raiderrobert@mastodon.social

I submit there are likely many major mental models that people actually useβ€” consciously or unconsciously for how they're doing the work:
- Academia - getting to the answer
- Artisan - making a high quality parts
- Assembly Line - making the whole sequentially
- Construction - making the whole in layers with different crews
- Restaurant - different stations to assemble something

2/

Robert Roskam
@raiderrobert@mastodon.social

More software engineering leaders have poorly formed mental models for their work.

Mental models are metaphors for how something works, a simplification of the thing to make it easier to understand it. A few examples from physics would be things like:
- electricity is the flow of positive charge
- gravity is like a spring in reverse
- a black hole sucks everything in

These mental models aren't strictly accurate. So you must be careful when building upon them.

1/

Robert Roskam
@raiderrobert@mastodon.social

Assumptions software engineers make about production networks that are often wrong:

- Network requests always succeed
- Networks are reliable
- Bandwidth is infinite
- Latency is zero
- The network is secure
- Topology doesn't change
- Nothing is shared
- The administrator is trustworthy
- Transport cost is zero
- The network is homogeneous
- Clocks are synchronized

These assumptions, known as the "Fallacies of Distributed Computing," lead to fragile systems that break in production.

Robert Roskam
@raiderrobert@mastodon.social

Lies programmers believe about scaling:

- if 1 process can handle X requests, then 2 processes can handle 2x requests
- well, 2x requests with 2 processes is possible if there's more than 1 CPU core
- 2x reqs with 2 procs is possible with more than 1 CPU core and plenty of RAM
- uh...and there's plenty of disk space?
- oh, oh, right, and if there's no shared services
- something, something Kubernetes
- ...this can't be this hard
- I'll have time to figure it out later

Robert Roskam
@raiderrobert@mastodon.social

Maslow's Hammer: If all you have is a hammer, everything looks like a nail.

In software engineering:
- If you only know SQL, every data problem looks like a database problem
- If you only know REST, every API looks like a CRUD interface
- If you only know React, every UI problem looks like a component problem
- If you only know microservices, every system looks like it needs to be distributed

The solution is expanding your toolkit and learning when different tools are appropriate.

Robert Roskam
@raiderrobert@mastodon.social

Aaaaand a few hours later I have 100s across the index page.

Robert Roskam
@raiderrobert@mastodon.social

Moved my blog from Substack to self managed:

https://robertroskam.com/blog/

I flipped the switch in the past hour or so.

I expect it’s still going to be bare bones for a bit.

Enjoy!

Robert Roskam
@raiderrobert@mastodon.social

For software engineers, how much of your week to you spend writing documentation?

Robert Roskam
@raiderrobert@mastodon.social

Things no one will mention at your funeral:

- participated in standups
- increased to shareholder value
- got in expense report on time all the time
- had 90% code coverage on all PRs
- clocked your time on time all the time

This is not an exhaustive list by any means.

Robert Roskam
@raiderrobert@mastodon.social

Imma having nachos