One thing that surprised me when I switched plans from "earn lots of $ and donate" to "build important things," is how much more productive I became.
I thought if I was earning the $ by doing intellectually interesting work I'd stay motivated. Turned out that wasn't true!
Actually, it was even worse—I *thought* I was motivated while I was doing plan A, and only when I switched did I even realize *how motivated it was possible to be.*
Several friends had this experience as well. Makes me wonder how many people are stuck in that state.
(For example, I never thought I'd be pumped enough about work to live for 1+ yr in a country where I didn't speak the language! Or to have the stamina to spend 20+hr/wk on the phone with an accounting firm. Or etc.)
I went into this a bit in my interview with Alexey:
To be clear, the motivation wasn't about working longer hours. It was about being *laser focused* on figuring out how to do things that would move the needle for users, because I didn't have competing motivations.
When earning-to-give, it was a lot easier for me to get distracted by things that were more interesting/fun, but ultimately unimportant. Like doing a bunch of fancy machine learning when our real bottleneck was sales.
By contrast, when I started working on something where I was really aligned with the end goal, it became interesting/fun to spend ~all my brain cycles optimizing for that end goal. And that made me way more effective.
The scary part, of course, is that I lucked into realizing this—if Wave hadn't recruited my then-partner at the right time I might never have joined + thus never learned what it was like to be actually excited about what I was working on.
Is there anything I should have done differently? My guesses:
• Pay more attention to what you get obsessed by
• Try hard to stay close to the end product (talking to / being a user)
• Have a higher bar for what you consider to be an awesome job
Strongly agree with Divia’s point here. 16y of school was a major reason I had no idea what being actually motivated felt like. (No offense to the many teachers who gave it their best shot—it’s just a terrible structure.)
This is another great takeaway from last thread, which I *should* have learned from changing jobs, but actually took ~20 more cycles on the motivation roller coaster to realize.
For me, bad focus was ~always a response to circumstances, even when I wasn't consciously aware!
My first years at Wave, I repeated variants of the following ~monthly:
- notice I'm stressed/unfocused
- "huh, having an off day"
- go climbing, read books, etc.
- still stressed
- gripe to boss eg "accounting sucks"
- boss helps fix accounting problem
- ✨happiness returns✨
Eventually I started interpreting stress/unfocus as a sign, not that I was having a bad day, but that I was working ineffectively or on the wrong thing. Eg, I'd know I needed to be hiring faster, but kept getting distracted by other, less important, more urgent projects.
People ask me for a lot of advice on what to do about technical debt. Here some things I’ve learned about how and when to prioritize fixing bad code:
1. Distinguish global vs local problems.
Local problems are things like a poorly-implemented module—it slows you down if working on that module, but is fine otherwise. Global problems are things like “we use database transactions wrong” that infect everything.
2. Fix local problems the next time they get in your way.
(i.e. trust that they’ll get solved eventually by a “make the change easy, then make the easy change” process.) Leave TODOs in the code, deprecate methods, etc. as breadcrumbs for anyone else who might want to fix.
I just finished *Creative Selection* by Ken Kocienda, which is largely the story of how he came to build the iPhone keyboard.
It’s a great example of how many twists and turns it can take to come up with something that seems so incredibly normal!
v1 started out looking like...
some wacko phone-keypad variant, because the developers were super worried about touch targets being small. The input method for this was: tap to get the top letter, swipe left/right to get the bottom letters.
Except instead of the letters being organized like a phone keyboard, they’re jumbled up. (Presumably to make sure that common letters were taps, not swipes? But that plus the gestures seems impossible to learn.)
People sometimes ask me whether Wave has any plans involving crypto, presumably because of the narrative that crypto is supposed to help with financial inclusion.
Unfortunately, in reality it doesn’t and we don’t. Crypto does not solve any hard financial inclusion problems.
Wave needs to solve, roughly, 3 problems in order to financially include someone: 1. track their balance 2. comply with regulations 3. convert balance to/from cash
Crypto is a very exciting solution to 1, but Postgres is a boring solution to 1 that is much faster.
People sometimes think crypto helps with 2, because it’s *technically* not currency. This is... not a great assumption about how governments/regulators work. It turns out that if you follow the letter but not the spirit of the rules, people eventually notice and tell you to stop.
It feels like every couple days, I learn a new Git trick. (Sigh.)
I'm going to start a running thread indexing them, because (Git's defaults are so bad that) some of them are pretty big quality of life improvements!
A fun one I noticed recently is that they added `git switch <branch>` as a more intuitive replacement for checkout. Extra fun: `switch -m` moves your uncommitted changes (no more `stash/pop` dance!). Hoping this is a sign of more UI improvements to come!
Maybe my favorite: `git log --first-parent` shows history but *only merge commits*. Even if your repo doesn't squash-merge, this still gives a clean view of your history. A former coworker liked (our use of) this so much he wrote an explainer: …om.s3-website-us-east-1.amazonaws.com
Happy @threadapalooza! 100 (tweet-sized chunks of) stories from trying to build mobile money in Ethiopia, Ghana, Nigeria, Senegal and Cote d’Ivoire.
(Minus the ones I’m not supposed to talk about :P)
It all starts in ~Sep 2015 with me pretending to be an accountant.
“Huh?” It turns out doing the accounting for an international money transfer business is hard. There is a normal way of doing this, but instead of trying to find out what that was, we were like, “this seems like it should be 100% automated! We’ll just do that.”
LOL
(This was part of our general take that hiring was for chumps, instead we’d scale ourselves by building internal tools)
So that’s how I ended up closing Wave’s 2015 books by spelunking through a homegrown database for 3mo with handwritten SQL and a half-baked Flask-Admin UI.