Today was a pretty okay day. It could have been better but no complaints. I got all the things I needed to get done done and by the end of the day I felt stress free. Feeling stress free is the bestest feeling in the world.
I’m still massively excited about GetGoodAt. I’m getting in a couple hours hacking on its codebase here and there. Eventually it will come together. Then Sqircle will come together. I’m determined to start launching some more projects.
I have realized how crucial little things like social and work life balance are for work. I was killing myself hours wise for work before I left for Valiocon. Bizarrely I have cut down my hours and found myself way more productive. Hours are the least important thing for success. Work smarter not more.
I have heard and read that advice a million times but have started to see the results myself and it is starting to click. Maybe I will figure out this life thing yet.
This daily writing has been a very good force break. Once I have GetGoodAt out I’m going to start some daily coding and daily UI stuff. I need to force myself to self-care and take breaks for side-projects. It sounds counterintuitive but the less I work the more work I get done. I need to force more time for side projects and making into my life, then work will follow suit.
I spent so many years killing myself hours wise because I have had this false idea that if I wasn’t obsessively moving towards some goal I was less productive. My obsession over productively living just made me less productive. The lessons are finally sticking I think, I’m finally getting a handle on my life.
It feels kind of silly but these journal entries make me feel accomplished. They are little things that few people (literally I think there about 3 of you reading them all) are following but every time I finish an entry I feel good about myself. Little wins are so important I’m realizing. I need to unleash the same thing in all my projects and all my approaches.
I like this concept of striving for clarity in coding. I forget where I first read it, it might have something Avdi Grimm wrote or maybe it was Rich Hickey, who knows; it is one of those ideas multiple thinkers tend to hit on. The basic concept is that we shouldn’t strive for greater abstractions in code, we should strive for greater clarity. Sometimes less lines are not better, if more lines will increase the clarity of your code. Abstractions shouldn’t be the goal they should be the result of seeking greater clarity.
The reason we end up with such proliferation of frameworks is because no one understands how to do the thing. And figure out how to do the thing, they write a framework.
The frameworks that truly stick are those that give you clarity, showing you how to do the thing while simultaneously doing the thing for you. If you understand how your tool works you will use it.
A good recent example is Redux. There were lots of Flux libraries for Redux but few really stuck. They lacked clarity. Everyone that seriously wanted to learn Flux would dive in and build their own implementation. Before long, you had dozens of options.
Then Redux came along and strove for clarity. Many other libraries took less lines to configure and came with far more bells and whistles, but Redux destroyed them all. For one simple reason, it was easier to grok.
It doesn’t matter how short your library is in lines, how powerful the abstractions, how clever the mental model is. If it isn’t clear how to use it, if people cant see how it fits into what they do they wont "get it".
Too many coders push further and further and strive more and more for better abstractions, clever solutions, fewer lines. We feel these are natural indicators of quality, they aren’t, they are by products of clarity. Strive for clarity and the rest will follow.
I think it was Richard Feynman that was once asked why his physics lectures were so "simple". He replied "because no one understands physics".
One of my favorite books is The Art of Learning by Josh Waitzkin. One of the main concepts of the book is that you should master simple things. Josh through some annoyingly flowery language points out that the biggest problem anyone has learning anything is that we vastly underestimate the importance of the basics. We look at someone good at something and we think he must have some esoteric, top secret knowledge or great talent. Truth is, everyone good at anything ever, is just way way better at the things you thought it wasn’t worth your time practicing.
As a kid I was often asked by chess parents how their kids could get good like me ( I was a strong junior player). I’d always recommend things and they would respond "oh my son has read that book!". I’d tell them to read it again. But they were always convinced that I somehow had read more books, or the right books. There was no secret to my skill. I just actually learned the material. I practiced simple things endlessly until they became just part of me and it was muscle memory.
Humans have a strong tendency to avoid clarity in everything. We clever up all our projects and then pat ourselves on the back for building something amazing. We should have strived to focus on the little things, and made them super clear.
Don’t be clever.
Why is Apple so great? (maybe I should say was) An absolutely fanatical obsession with the details. They strive for clarity. They make products that just work. They might have less features than competitors, but what they do have users understand, they just work.
Like most humans I have struggled at times with procrastination. It was only when I realized that procrastination was my brain unable to understand a problem that I learned to combat. Procrastination at it’s core is often a problem of "where do I start?". We have no idea so we do nothing and wait for it to come to us.
I learned to break tasks into smaller and smaller chunks until what to do became so clear to my brain what I needed to do. Then the procrastination just went away.
Make things clear.
I need to go to bed.