Some folks use the word “craftsperson” to describe what they do as programmer. Up until recently, I thought it was a dubious way to describe what we do.
However, recent reflections have led me to realize that, of all the silly titles programmers use to describe themselves, “craftsperson” is actually one of the more instructive1, for a simple reason:
A craftsperson cares deeply about their work.
Everyone should have a craft, and aspire to greatness in it. And that greatness comes from caring.
Do you find yourself mostly trying to hack together something that works, or do you really care whether you’ve found the best solution for the problem, one that will stand the test of time, other programmers, and – most of all – change?
If so, then congratulations, you can (correctly) call yourself a craftsperson. If not, you may have some work to do.
Caring leads to better systems.
It leads to deeper knowledge, better skills, and richer experience.
When we care, we become concerned with how things work, not just the high level interfaces we need to accomplish a task. We are mindful about how we go about our work, and we constantly look for better ways to accomplish our goals. Each step of our journey is meaningful for the improvement it brings to our craft.
So how do you “care” more? Fortunately, in this case, I think caring has much more to do with how we act rather than how we feel. The idea is to generate a positive feedback loop where improving our work habits leads to heightened care, which in turn leads to further improvement in our habits, and so on.
Which actions to take depend on where you typically least demonstrate care in your work. Here are some things I remind myself to do:
- Read the full documentation, and not just the section that relates to your current problem.
- Plan before your code. Write pseudo-code. Sketch out diagrams. When you think you’re ready, try to come up with one more alternative solution.2
- Read science and technology papers. This can do wonders for filling important knowledge gaps.3
- Get more disciplined about code quality (testing, code reviews, pair programming)
- Continuously improve your tools (editors, automation, hardware)
I’m still not going to call myself a craftsman, even of software, but I try every day to care as much as one.
The agenda for most ambitious startups is to “change the world”, which usually means creating products or services that will improve people’s lives and make them happier.
Capitalism never sounded so altruistic.
In reality, the impact of true change is never simple. It is a complex butterfly effect.
The automobile helped us reach our destinations faster, but now road injury is one of the leading causes of death worldwide.1
On one hand, social media has fostered greater communication and awareness between peoples, and democratized the dissemination of news and information. On the other hand, it has enabled (and continues to enable) systemic, anonymous, and unregulated bullying and harrassment.2
Smartphones have brought humanity’s collective knowledge to our literal fingertips, but we are quickly becoming addicted to our devices, and conditioning ourselves to expect instant gratification. 3
If you really want to change the world, keep in mind that you will not only change it in ways you intend, but in ways you won’t intend. Some of those ways you may not even like.
So ask yourself why you want to change the world, and be careful what you wish for.
Last week I read an article on Medium by Jake Knapp about his experience removing all but the essential apps from his iPhone. I won’t repeat his story here. You should just go read it. I was inspired, so I did the same.
I switched off all push notifications (even email, as it is by far the worst) and removed all apps except for ones I use for some constructive purpose (read: browsing Facebook is not a constructive purpose). The others I classified as noise and deleted.
Here’s my home screen now:
(The second screen is just folders of Apple apps I can’t delete)
No Tweetbot (that was a hard one), Instagram, Facebook, games, news apps (I allowed myself to pick one and one only - I went with Prismatic), location apps (don’t use them any more), and a host of other apps that, while they may be ‘cool’, resulted in a net loss for my productivity and mental health. My newly trimmed screen is not as extreme as Jake’s (his criteria were far stricter), but it still took some courage hit ‘X’ on some of those shaking app icons. I actually started by removing Chrome and disabling Safari, but I reinstalled Chrome as I was finding there were legitimate, non-time-wasting times I needed a mobile browser (but it means I need to be disciplined in how I use it).
I am no longer distracted by an email notification whilst concentrating or socializing. (If you honestly ask yourself, there are very few emails that are that important to notice right now). I check my email on my phone when I decide. It’s empowering.
I spend my “down-time” waiting in line at a cafe or on the train thinking, talking with people, reading (a book), enjoying a podcast, or just appreciating my surroundings.
I don’t spend hours per week sifting through photos of other people’s lives that don’t mean much to me.
I engage with social networks when I choose to, not when I receive a notification, or am bored.
I have a newfound respect for my time and energy.
I have a newfound respect for my phone, and try to ensure that I’m not filling it up with stuff I don’t use.
Are there any downsides?
I haven’t encountered any yet. At least, they haven’t been significant enough to warrant me going back.
If you use a social network in earnest I’d wager that there is someone you follow whom you can’t stand. Everything they say online 1 comes across as condescension, ignorance, or downright stupidity. They may be someone well-known in society, they may be someone familiar. I find this behaviour exceedingly common amongst programmers and geeks, for reasons probably best left undiscussed here.
Now, I’m as guilty of this as the next opinionated programmer, but there came a point when I felt enough was enough. I was tired of it. Whilst the emotion in the moment is strong, over time it damages the value you get through those social networks, and maybe even damages relationships. Plus, it’s exhausting.
Internet rage is unbecoming, not very Zen (if that matters to you), and, like real-life hatred, hurts you more than it does the recipient. This applies even if you never actually post anything but let yourself quietly simmer in the emotion without trying to get past it.
If you are struggling with getting angry or upset at people online, you have two options 2 1) you can “unfollow” or “unfriend” that person, which is the dignified thing to do (don’t like, don’t listen), or 2) you could try to resolve it, an option, in my opinion, much better for everyone, especially you. So, I have a simple lifehack that worked for me, and may help to resolve your feelings towards the object of your ire:
Give the person a compliment.
It may not work all the time, and it certainly won’t work if the compliment is insincere. But it is much better for you (and them) than wishing a pox on their house, silently or not. If that person responds to you with thanks or a kind word, I can guarantee even if you previously hated their guts, your anger will fizzle out almost instantly. You may even find a new, valuable relationship.
It is much easier to get angry at someone on the Internet as there is no face-to-face contact. If that person said the same infuriating comment in person, your reaction may well be different. ↩
The implicit third option is to follow your emotions and “engage the rage”, but since these suggestions imply you are trying to overcome rage, I left it out. ↩
We commonly think of temptation having the upper hand when people are down, weak, and fragile. In this state our emotions seem more powerful than the muscle of our conscience and willpower thus making us more vulnerable to the temptation of making regrettable mistakes, or giving up whatever work we are doing.
A mentor of mine once told me that there is another state of mind in which temptation can easily usurp us: when we’re strong. This may sound like a paradox, but you’ve heard it before. It’s the classic hare and tortoise fable. Get too far ahead and you become lazy.
I’ve been going to the gym recently, in an attempt to complement my relatively inactive lifestyle. One week I went to the gym several times, each for a substnatial workout. Felt pretty good about myself too. Can you guess what happened the next week? I didn’t go at all. I succumbed to laziness because I felt like I had achieved a lot the previous week.
Another example. I was working last year on an app for myself. Since this was a side project, the time I spent working on it were irregular and squeezed between the rest of my daily schedule. Some weeks I worked on it consistenly, others not at all. The same scenario was at play as the gym example: after a week of solid investment in the app, the subsequent week (or two, or more) was lazy at best.
It’s also not just in human lives we can see this dynamic. In business strategy, there’s this concept of leapfrogging, in which a new entrant to a market overtakes the incumbent leader in market share. One of the main reasons the incumbent fails to maintain their position is essentially arrogance. They becoming too comfortable with their success and ignorantly dismiss the new entrant as a threat based on their current position. Rather than give an example of a company who fell to this sword, I’ll do the opposite. IBM is a company who dominated hardware in the 1980s, largely thorugh an (initially) exclusive agreement with Microsoft. They were able to carry this success forward in the 90s as well, even after they lost exclusivity with Redmond. Toward the end of the 90s, however, they realised that the future of the hardware industry would not remain the cash cow it had been for two decades. So they sold off their consumer hardware business to Lenovo to become primarily a software and consultingbusiness.
What’s the solution? “Don’t hold on to your achievements” comes to mind. “Slow and steady wins the race” is another. But as all wisdom it’s easier said than done and most of the time we know the right thing to do already. We just choose to do otherwise in the moment.
So choose differently.