Software Developer Range

In the world of acting, an actor or actress is said to have a wide acting “range” if they are able to play a variety of roles. Those who have a wide acting range are considered to be some of the best, and others are sometimes known for playing the same role in every movie. I’m sure you’ve noticed this before…

I believe that in the world of software development, there are two main “roles” that can be played. The people that I’ve worked with and have managed typically fall into one of these two buckets:

The Startup Developer

The first type of developer is one that works well at startups. This person works well under pressure and is not afraid of shipping quickly written and untested code. Often times, this person is motivated by the mission or end-goal of the software, and looks at code as merely a tool to solve problems.

Pros: The Startup Developer can ship tons of code quickly, which is great when you’re trying to get a new product off the ground. This person will build out an entire feature, tear it down and rebuild it multiple times until it solves every problem. This person is not afraid to get their hands dirty, make mistakes, and learn new things as they work.

Cons: The code that the Startup Developer writes will likely be code that solves short term problems, but does not consider longer term problems. At some point this code will likely need to be re-written.

The Enterprise Developer

The Enterprise Developer is an engineer who’s talents are better aligned with larger companies. This person looks at code as an art form, and is motivated by writing perfectly written code with full test coverage. They take pride in doing things the proper way.

Pros: The Enterprise Developer is capable of writing foolproof code that can last years or decades without being updated or fixed. This person often deeply understands the programming language and tools they are working with at an expert level.

Cons: It can be difficult to understand the Enterprise developer’s motivations, or get them excited about the business problem being solved. Without understanding their motivation, it can be difficult to get this person to have a sense of urgency in delivering a working solution.

A Third Role

All companies need a mixture of people that fall into both of these roles in order to be successful. The Startup Developer is likely more valuable to the organization in the beginning as you’re vetting ideas and business problems. However, once you know the problems you’re solving are worth solving, having an Enterprise Developer to build a foolproof solution is extremely valuable. For most companies that are innovative, there is a continuous cycle of need for both of these types of people.

However, I believe there is a third way for developers. Learning from the world of acting, I think that Developers should challenge themselves to have “range” when it comes to their work. When solving new problems with unknown markets, the Startup Developer role should be used. Solve problems quickly without writing the perfect solution. When there is a problem that is core to business and it is proven that customers need a reliable solution, bring out the Enterprise Developer and invest in making a solution that will last years.

This “dynamic” approach to problem solving should seem obvious, but from what I’ve seen this is extremely challenging for software developers to do. What I’ve seen that naturally happens is that new software developers fall into the Startup role because they do not have strong opinions about how software should be written. Thus, they aren’t afraid to make mistakes.

As they learn more, they develop strong opinions about the right way to build software. This is where things are counterintuitive. Once most developers reach this point, they lose the ability to act in the Startup Developer role. It’s not that they choose not to. It’s that they can’t.

I want to be extremely clear here because you may think that I prefer the Startup Developer over the Enterprise Developer. I think both of these personas have strengths and weaknesses. What I’m saying in this post is that truly great developers can evaluate their circumstance, and pick the correct approach for each individual problem. This is something that takes practice, and not every developer is capable of this.


If you’re anything like me, I got into software because I was excited about what could be created. I was motivated by all the possibilities, and at that time I was the Startup Developer. Then, at some point, the code became more important to me. I was obsessed about learning how to write immaculate code, but what problems I could solve with that code become unimportant. Now, I’m once again realizing that code is a tool used to solve problems and make things that bring people happiness. That is my new purpose, and I’ll have to use both the Startup and Enterprise Developer roles in order to achieve this purpose.

Many things can’t just be told to people. They have to learn it themselves, and this is likely one of those things.

Photo by Nicolas Hoizey on Unsplash


macOS Developer Tweaks

I’ve always been a believer in the proverb “a bad workman always blames his tools”. I’ve worked with many software developers who spend half their day tweaking their settings, fonts, editor, etc all in the name of getting more done. It’s endless…

For myself personally, I often don’t have time to constantly change my tools. At the end of the day, I feel good when I’ve made solid forward progress on whatever project I’m working on. Over the years, I’ve found reliable developer tools that I use day in day out and I don’t change them easily. For one example, I’ve been using Textmate every day for over ten years.

With that said, there are a couple of tweaks to macOS that I couldn’t live without. One of them, I just discovered a couple of days ago and I’m already sparking joy in a way I didn’t expect.

Blazing Fast Key Repeat Rate

It seems way too fast when you initially turn this setting on, but you have to let yourself get used to it for a bit. Then, when you pair with someone else, the agony of waiting for your cursor as you’re holding down the arrow keys will be unbearable.

System Preferences > Keyboard

Crank those settings up! There used to be a terminal command to go beyond what the interface would allow you to do, but I haven’t seen that in the past couple of years.

This is a setting I’ve been using almost my entire career. I’d be really curious how much time I’ve saved not waiting for my cursor to scroll? Maybe a month? It can really add up over time!

True Text Rendering

First of all, I’ve gotta give credit where credit is due. I found this tip from When I first discovered this blog post, I was skeptical that this was for me since I’m extremely hesitant to change up my tools. However, after a couple days of using these new settings, I am so much happier. Reading text on my computer has become a joy! That’s a weird thing to say, but when you’re looking at text for 10 hours a day, it’s a big deal how it’s rendered.

To see the difference, you need to change two settings:

  1. Turn off “Font smoothing”
System Preferences > General

2. Use 2x Resolution

System Preferences > Displays

The author goes into a ton of detail about why this is the right options for viewing your Macbook Pro that I won’t get into. All I’ll say is that it’s incredible how much better text looks on my screen!

Photo by Juan Gomez on Unsplash


Scrappy Vs. Polished

I’ve been thinking a lot recently about the best way to launch a new software product. The majority of my career has been spent working on small “scrappy” products. Even my enterprise experience started as a small bootstrapped startup before taking a large investment. These are products that typically have small budgets, where the product market is unknown or largely unproven.

Because of my background, I have developed a sense of urgency around my decision making process to try to build as much as possible as quickly as possible. The justification in my mind has always been that you don’t want to invest too much time, effort, money, etc in something that you may or may not throw away. It’s better to do the bare minimum to get the job done, and then move on to the next problem. This is the agile way… Do the minimum possible, get feedback, and iterate.

This has worked for me for a long time. I’ve learned this because I’ve been burned by investing too much time in a product that wasn’t worth it. If you’re a football fan, you may remember “Deflategate” from a few years ago. The Brackets for Good team thought this was the perfect opportunity to do good in the world and do a fundraiser. Tens of hours of product development later, and the turnout wasn’t great… In retrospect, we should have done everything possible to prove this idea was worth development before actually writing any code.

I’m recently working on a new product where I am a bit out of my comfort zone. We are moving slower than I’m used to, but the level of polish of this application is lightyears beyond the products I typically launch. On one hand, it feels good to be building something that looks and feels really nice. On the other hand, it’s terrifying to not know for sure if it’s worth it. Are we going to realize that what we built was wrong and pivot? It’s always possible, but I suppose that’s part of being in the startup game.

I was really inspired today seeing the release of The good people at 37 Signals started building this two years ago. Rather than releasing a bare minimum MVP, they are releasing an extremely polished experience right out of the gate. It definitely shows, and I was more excited about the product because of the UI interactions shown in the demo video. Now, half the reason I want to try it out is just to experience the UI.

A few years ago, a good friend and former business partner of mine told me “You can always tell when a product is well designed because as a software engineer it seems like you could replicate it in a weekend”. Of course, if you actually tried, you would realize that it’s not possible. It takes a ton of time, effort, and money to get to the level of polish to make it look that simple.

The lesson learned for me is that in the world of enterprise software, productivity is king. Pushing feature after feature out pleases your customers. In the world of software users want to use, polish is king. It has to be extremely easy and intuitive or users will leave and never come back. As an entrepreneur, it’s your job to pick a problem worthy of that time and investment that people truly care about. Once you’ve identified that problem, don’t limp in.

Photo by Joshua Fuller on Unsplash


A Knife in the Gut

Starting Dropkiq has been one of my first real experiences in software sales. As a technical entrepreneur, I’ve made the mistake several times of having the “if you build it they will come” mentality. The thought that everyone will immediately understand the need for your product and line up to give you their time and money without you needing to do anything to make it happen! The reality is that even if you build something incredible, it will take a lot of time, effort, and money to get the word out. It’s not easy.

In fact, it’s hard to imagine today, but at one time even airplanes were a new concept that faced its own challenges to sell. Many people might know that the Wright Brother’s first flight took place on December 17, 1903. However, many people do not know that the first time they made money from their invention was February 8, 1908. In other words, it took a little more than 4 years to make their first sale.

I was chatting about this problem with a friend, Matt McIntyre, and he used an interesting analogy that really helped me to understand sales better. He told me, you need to imagine that every one of your potential customers has an imaginary knife in their gut. For some people, that knife is pushed in deep, and it’s really painful for them. Those people will buy your product to alleviate their pain. For others, the knife has little-to-no pressure at all. For those people, your product may be a nice-to-have.

I’ve thought about this a lot since we’ve had that discussion, and I think there is a lot of truth to this. Also, it’s important to realize that the pressure on the imaginary knife can change over time. If you think about recent events with COVID-19, there are some obvious examples. In November of last year, many companies had little actual need for Zoom App. Maybe they never had virtual meetings, or used free alternatives that were good enough. However, COVID-19 changed things for many companies. They now have a new pain that needs to be solved. The knife had been pushed deeper. Zoom was able to solve that pain and acquire thousands of new customers.

I’m still new to the world of software sales, and I certainly don’t have all the answers. All I know is that for many of us, the “hustle” is a long, difficult, and sometimes emotionally draining process. Just remember, it’s nothing new and it’s all part of the journey.

Photo by wu yi on Unsplash.


Hello, World!

Welcome to my new blog!

I’m starting a blog today because I’d like to get in the habit of writing more often and sharing my thoughts and ideas with the world. (Also, our cat Mani woke us up at 4:30 AM and I couldn’t stop thinking about starting this blog. So, here we are 4 hours later with a fresh new WordPress website.)

I’ve tried to start blogs before… when I was in high school I thought blogging could be my career. I saw what professional bloggers had created at that time and I would spend hours setting up and tweaking the perfectly designed blog. After a few months (or years) of inactivity, the project would inevitably fail and maybe I would try again after a year or two. In hindsight, I realize now that I didn’t have much to say or share with the world at that time…

Things are different now though. I’m a quarter of the way through my career and I have a lot of life-experience. I’ve been truly lucky in the opportunities that have come my way, and now I’m trying to pave a new path forward for myself (and hopefully create some opportunities for others in the process). This blog is incredibly important for me now. In the past year, I’ve realized I can’t do this journey alone.

My goal for this blog, as with many things that I do, is to learn as much as possible. Maybe, if I’m lucky, someone else will stumble upon my writings and learn something as well.