“A man doesn’t begin to attain wisdom until he recognizes he is no longer indispensable” - Richard E. Byrd

When I was first starting out as a professional software developer, code was all that mattered. I just wanted to perform, almost like a daredevil stunt performer. I wanted to be a hero in someone else’s story. I would often describe myself as,

  • The guy who wrote a complete app in 15 days.
  • The guy who walked to work at 10PM and sent emails to 700 people.
  • The guy who maintained all the configurations.
  • The guy who made sure things worked in Internet Explorer.

Like any other a cocky wannabe software jockey, I wanted to write the leanest meanest code possible. I wanted to understand every little nitty gritty trick and shove them in production code. I would drool over elegant pieces of solutions. I wanted to be a “rockstar” software.

I would feel good about being called late at night because something went wrong, or someone has a demonstration the next day. I would feel proud that I had become an indispensable part of the company, and I would feel incredibly devalued if something I did wasn’t working as expected. There was a certain sense of insecurity lurking around me at all times, disguised as a hero-complex.

In contrast, these days, unless something is horribly and definitively broken, I don’t bat an eye. I probably never work after 7PM. I take breaks, go for walks, get a coffee from the corner store, make lunch, eat lunch, take my time and maybe even read book while I am eating lunch, all during a fine workday. I don’t feel bad if something isn’t working by the end of the day. I don’t feel bad if someone blames me for my mistakes. And guess what, most of my time, I don’t even write as much code like I used to.

Nowadays, my life as a software developer is very different than it was years ago. Writing actual code involves very little of my cognitive bandwidth. I mostly revolve around ensuring everyone in the team is on the same page, making sure the proposed solutions will have the desired effects, holdings meetings, discussing things, talking with other teams, answering questions, asking questions, sometimes repeatedly when I don’t understand something, and I barely ever feel embarrassed about it.

Before I give out the vibe of a wisened old vet, I must admit that I am still learning a lot much in my day job, every day. But I don’t feel bad if I don’t follow up on the latest JavaScript bundler, neither do I contract F.O.M.O. if I don’t understand the newest effect wrapping Scala monads. I don’t really feel bad that I don’t write Smalltalk or Haskell in my free time. I don’t feel bad if I can’t write that very complicated online coding challenge within 15 minutes. Heck even if I can’t solve it, I am still okay with it! I still enjoy writing software!

I have been thinking about it a lot after I hit 30, looking back at my professional evolution. Granted, it’s been long since I started working professionally, not nearly as long as my father, or his father; I observe certain changes that have happened to my professional psyche over the years, and I wanted to summarise some of my learnings below. Maybe you are like me from 8 years ago, maybe you are more like me from the future, maybe you’ll be find something affirming, or something useful in this list below. But mostly it’s a list for myself to revisit,

  • For most of us, it’s a job. And you are supposed to do what you are asked to do, but sometimes it’s okay to take it easy. Our mental reservoirs can only hold so much. Everyone in your team knows it, all healthy folks in the industry knows it. No one does or should expect you churn our code like a maniac over Christmas. Enjoy the snow! Or the coconuts, depending on where you are.
  • Like really! Do not overwork, don’t over stress. Know how much you can do and do that. It’s not worth burning out.
  • Accept what you don’t know and don’t be embarrassed of asking for help. EVER! Drop the ego at the bike stand, or the train station, or in bed (if that’s your thing).
  • You got to be comfortable taking criticism. It takes some time, but I believe everyone can learn this trait. I did. It mostly revolves around accepting who you are now, but having an absolute conviction that you won’t be the same person 4 years from now.
  • If you are uncomfortable juggling complicated patterns in your mind, that’s totally fine. Invest in tools that helps you deal with it. But again, don’t stress it.
  • Believe that it’s a process. You will never be super effective overnight. That just doesn’t happen. Believe in the process, be open for change, and one day you will write a post like this yourself.
  • If you feel bad about your productivity, just work on not being lazy. And that’s almost half the problem solved. Don’t open Reddit.
  • It’s okay if you aren’t up to date with the latest advances in the industry. It’s mostly not groundbreaking anyway.
  • That being said, don’t be completely detached from the world out of your comfort zone. Change in this industry is inevitable, and you gotta be prepared.
  • Most of software development is serious mind game, but it’s barely about the raw code.
  • If you absolutely have to write procedural code, it’s fine. If you have the choice to write functional, then write functional. It’s just better!
  • Go to a LISP retreat twice a year.
  • Read “The Zen and Art of Motorcycle Maintenance” by Robert Pirsig.
  • Related to that, do spend time to think about how you think, or solve problems. Almost always patterns emerges. After all, all code is representation of computation. And computation is pretty much always standardised thoughts. (Maybe I’ll write something about it)
  • Tooling helps, a lot. Just don’t expect to Bullet Journal your way to the top in a week, but I can guarantee you that your mind will mould around your tools, and your tools will change around your mind over the time.
  • Your mind is more plastic than you think, but it also has it’s limitation. Augment it as much as you can. Develop habits, write things down. Optimise the way you write things down. Change your own protocols. See what sticks, don’t get stuck with something that doesn’t.
  • Most productivity hacks won’t work for you. Don’t bother.
  • You are only allowed to comment on UX if there’s Comic Sans involved. Otherwise, let the professionals do it.
  • Always make sure you are helping the other person grow. If you get stuck in doing what you are doing, you won’t get to do more than what you are doing. Your time is limited, quite literally.
  • The only goal worth having is reaching the point where you aren’t needed.
  • It’s totally okay to start the day without coffee.
  • Pop culture have glorified individualism a lot, but your team matters more than you.
  • If you are working alone, well, I don’t know. I never did.
  • Side projects also need documentation.
  • Always finish your side projects!
  • Side projects are a great way to learn new stuff! But you probably knew that already.
  • Hackathons are great but they are barely about the code.
  • Most of programming is putting words on abstract conceptual constructs.
  • Make sure are NOT a rockstar!
  • Just be the dependable team member.
  • The later you start your career in the industry, chances are the less effective you are going to be, just like any other craft. That being said, there is ABSOLUTELY NOTHING wrong in that.
  • Don’t get too hung up on career growth mumbo jumbo, the craft is a reward in itself! (Maybe I’ll write about this sometimes as well).
  • Growth does happen. Trust me.
  • Read.