Writing on human-centric software development and having a successful tech career.

This is the best place to find my long-form thoughts on programming, software development, management, and growing your career. Everything I've written on the internet is here in chronological order.

Most software engineers start by thinking about the code. Instead, start with the why so you solve the right problem the first time.

Every software engineer has that moment. You are assigned a feature requirement. It could be a Jira ticket or a sticky note. You first start brainstorming if this is possible, how you would achieve it, and how much time it might take. But before you start thinking through the technical implementation, you need to step back and ask "why"?

How does this continuous learning thing work?

So here’s the thing, no matter how you learned software development, either in a degree program, through self-reaching, or by using a bootcamp-style program; one big risk is that what you learned yesterday isn’t necessarily going to help you tomorrow.

Creating auto-complete types without restricting values in TypeScript

Our library is in TypeScript and we wanted to provide IDE suggestions for the values of a parameter, but we couldn't actually restrict the value of that parameter. This is because 90% of the time, the value would be a couple of obvious values, however the other 10% of the time, we had no way to predict what the value would be!

How to make a plan for your career

You can let your career be blown around by the winds of happenstance or you can set a course toward the island of your dreams. I wish I had planned out my career earlier.