Things I learned and will never do again
2021 edition.
These are some notes from a personal notebook of mine dated 2021.
I believe it is important to always be critical of oneself and truthful in one’s thinking—you must be a true fool to lie to yourself. Certainly, ideally you have this attitude to all those around you, but with no exception, one should absolutely always be true against oneself. I like keeping very uncensored thoughts in notebooks so I can return and mine past experiences.
Sometimes these notes may represent feelings and affections that were at some point very strong, but all of them come from a personal place of my own. All of the below notes are based in some (usually) negative experience. But that’s just how we learn—it’s never really from our success stories. Growing wiser tends to hurt.
Time-wise, these notes represent a period after significant work and turmoil at Polestar, while I was still a consultant. These were written only a short time after leaving and going to another assignment. I returned to Polestar as an employee about 6 months later, and I still empathize and agree with the majority of these and am already working (or intending to work) on many of them.
Notes are transcribed as written.
Things I learned and will never do again
- Think that people can write microservices without any practice.
- Use a CMS directly, without an intermediary API.
- Have horizontal accounts with more than one app per account.
- Create accounts manually.
- Do redirects on the network layer, without a lifecycle policy.
- Use a DEV-STAGING-PROD deployment model.
- Let teams (maybe) add monitoring/SRE capabilities -> Should be setup from start.
- Believe that people actually fill out necessary documentation.
- Believe that adequate testing is done.
- Believe that architects carry more weight than business stakeholders.
- (Don’t) stop fighting SAFE and old-hat thinking.
- Think that there is a one-size-fits-all WAF.
- Avoid competent observability by believing logs will be enough.
- Use JS over TS.
- Believe that an architect should not (be able to) code.
- Set up too many dashboards with SLS.
- Have a central repository of application-Terraform (?).
- Have an uncontrolled/non-standard eventing manner/”backbone” with no documentation.
- Create overly-complex data syncing abstractions.
- Forget about post-deploy steps.
- Believe that, in fact, manual is faster (it’s not).
- Trust any claims on anything in China.
- Believe in accountability and responsibility.
- Believe that [SAFE] teams can put in competent time for continual refactoring.