It's the principle of the thing
I was rummaging through some old files sitting on my laptop recently, and stumbled across a list of principles we had as a team a few jobs back.
Writing down these principles, and agreeing to them as a team, helped contain and clarify the engineering work we were doing at this and helped codify the culture we built.
Steal as many of these principles as you’d like - because I still believe in almost all of them - but especially steal the idea of being explicit about what your engineering team or squad or department is for and against.
Because, as much as I’m writing about meetings for the book right now, engineers tend to hate them - and these give you something to point to when a decision needs to be made instead of relitigating it every time.
Those principles:
Prefer boring over novel or clever.
Assume code is broken until proven otherwise.
Assume all input is malicious.
Premature optimization is the root of all evil.
When choosing a technology, pick the one you're most comfortable with to deliver business value in a timely fashion. When in doubt, or when needing to break a tie, pick ones that more than one person on the team knows.
Don't write your own logger. Concentrate on building things that deliver core business value and rely on libraries and third parties for commodity items as much as possible.
Everything should be able to be rolled back - whether through API versions, or more regularly, through feature flagging.
Once code has been reviewed, it is every team member's job to get that code deployed into production as fast as possible.
Smaller is better - in tickets, in pull requests, in deployments, in services.
Smaller, more frequent deploys are encouraged.
One way or another, you're going to be testing your code - either manually locally, in staging and in production, or through automated tests. It's better for everybody involved - you, your coworkers, the business, our customers - if that testing is automated.
That said, automated tests do not replace actual confirmation that our work is correct.
Related to the above, when fixing a bug, write a failing test case first.
What we hand off to QA or UAT or customers is - to the best of our knowledge and efforts to confirm - correct and ready to be in production.
If a PR has no tests, a reviewer has every right to reject said PR at their discretion.
Work with empathy - for your coworkers, for your future self and for our customers.
First you make it work, then you make it fast, then you make it pretty.
More on these in the coming weeks and months I suspect.
====
An update on how this part of my business is going:
There are 15 subscribers to this newsletter. So, if you’re one of those, thank you! I recently heard from one subscriber who was apologizing for not reading that week’s edition yet (Hi, Craig!), and as I told him, it’s no big deal. I’m writing this for you, and you can get to it when you get to it or decide not to get to it at all. You can also reach out to me directly if you want me to think about something or have a question or problem you’d like to explore. I am almost literally refreshing my inbox waiting for your specific email.
The book is up past 10,000 words now, and I spent the weekend finishing up a bunch of partially finished chapters. I don’t think I’ll have it completely done by Memorial Day as I’d originally aimed for - and certainly not an edited version I feel comfortable with.
Still no coaching clients yet. This is still really where I’d like this business to grow into - being able to individually help engineering managers as they transition into and get comfortable with the role. It’s a long and lonely transition, and I really want to help folks out. I talked with one engineering leader recently who talked about the 10-year journey to get to a point where they felt like they were doing a good job in the role. I think I can help accelerate that 10 years for a lot of people, and I want to do that.
Related to the above, I’m also considering if a cohort-based course or program might make more sense than the 1:1 coaching I’m currently offering. Most “leadership” programs I’ve attended while a manager were pretty vapid and useless, but I think there is probably a better path there - especially one a niched down to software engineering as I intend for. Interested? Let me know. Still noodling on things.
====
We’re nearing the end of May, which among other things, is Mental Health Awareness Month.
I spent a large chunk of my adult life actively ignoring my mental health - in retrospect, protecting myself from too many negative thoughts by distracting myself with technology, food and drink. I coped with my mental health by largely and actively ignoring it.
I started paying more attention to it in early 2021, starting therapy at a particular low point. I was stressed from the events of January 6 and burned out at a job environment that didn’t align with my values.
Since then, I’ve developed a lot of healthy habits but the healthiest habit is taking the time to check in with myself, ask how I’m feeling and figuring out what I’m trying to tell myself or save myself from.
Still getting there - learning to listen to and trust myself.
If you’re in a rough spot right now, don’t be afraid to reach out for help, or even just to talk things out with somebody.
Realizing you need help, and that it’s OK to ask for that help is sometimes the first big step to a happier, healthier you.
I know it was for me.
====
As a final note, May is also a BFD here in Central Indiana - with the Pacers still alive in the NBA Playoffs, the Fever and Caitlin Clark starting their season, and the Indy 500 happening this upcoming weekend.
For me, May also means the end of the school year for my kids, and I’m looking forward to our celebratory dinner on Thursday and then hitting Kings Island on Friday.
As the weather heats up, the days grow long and the corn grows sweet. Try to take an afternoon or a morning off every once in a while and hang out by a pool, or go to a baseball game, or go to an amusement park.
If nobody else will give you permission, I just did.
Go do it! Check out, work will be there tomorrow.
Until next time, stay cool and hang in there.