summaryrefslogtreecommitdiff
path: root/src/blog/quality-quantity.kuht
blob: e3ddf995ac393373807134f3df522bf82d225442 (plain)
<import "base.kuht" as "base" />

<head>
	<title>More Features Don't Make Software Better</title>
	<meta name="description" content="Something I should get off my chest" />
</head>

<body>
<article>

<h1>More Features Don't Make Software Better</h1>

<p>
	Forgive the clickbaity title. It's not entirely true, but it is accurate to
	the spirit of what I'm describing. I have frustration when explaining this to
	people, and I've struggled to articulate it well until now.
</p>

<p>
	If your software has 100 features, but all of them suck, then I have no reason
	to use your product. But if your software has even one feature that feels very
	well considered, thought-out, and cared for, I now have a reason to use your
	product.
</p>

<p>
	A similar principle applies when applying for jobs. If you send out 100 job
	applications that all suck, then every single one of them is going to be
	rejected. You can't scam someone into giving you a job. I spent two weeks
	refining my resume, and only sent it to two companies. Both companies also got
	cover letters from me. I got an offer from the second job I applied
	for<a id="af-1" href="#footnote-1"><sup>1</sup></a>.
</p>

<p>
	My code editor of choice is helix. It doesn't have a lot of features. In fact,
	it doesn't even support extensions yet<a id="af-2" href="#footnote-2"><sup>2</sup></a>.
	But I keep coming back to it because the mental model it asks me to adopt is
	very simple compared to something like Vim, and much more efficient than VS
	Code. I select text, and then perform an action. The other things I need out
	of a code editor are just good enough to get by. There is a built-in file
	explorer and ripgrep tool. I've tried LazyVim in the past, and even though it
	had more features, I couldn't shake the feeling that none of them were
	designed to work nicely with each other. So despite how much functionality
	there was, I didn't feel good about using any of it.
</p>

<p>
	Sonic Frontiers, after releasing, had three updates to the game that were
	released for free. There were a lot of interesting ideas in those updates.
	They did try to address some of the issues players had with the game, such as
	the lack of momentum when jumping. But there were other ideas that I found
	questionable. Action chain challenges are cool, but would it really improve
	how players perceive the game if it were there at launch? None of the updates
	improved the art direction, or addressed the gratuitous pop-in, or made the
	existing Cyberspace stages feel less like copies of older levels. The final
	update came with a new campaign at the end of the game with multiple playable
	characters. The lack of multiple playable characters is a long-standing
	complaint in the Sonic community, but the gameplay for these characters was so
	difficult to control (with the exception of Amy) that I would rather have not
	played as them at all.
</p>

<p>
	I don't think it should be acceptable to excuse having lots of bugs because
	you also have a lot of features. It would make sense that more features would
	induce more bugs, but that's still worse for the end-user. I'd rather have
	software that doesn't do much, but also doesn't annoy me with problems while
	it does very little. Those annoyances will cause some users to find other
	options, even if those other options may not do everything your software does.
</p>

<p>
	All of this is my opinion. I won't claim that everyone else feels the same
	way, or that following this approach will make you more money in the long run.
	But personally, I prefer a piece of software that has one feature I really
	like, to a piece of software that has 100 features that I only tolerate.
</p>

</article>
<hr />

<footer>
	<ol>
		<li id="footnote-1">
			I decided not to do the interview for the first job, because it asked me to
			record an interview where all of the questions would be asked by AI. I also
			already had been preparing for interviews with the second company, so I
			decided to focus on that. So, in effect, I only really applied for one job.
			<a class="return" href="#af-1">return</a>
		</li>
		<li id="footnote-2">
			Helix is supposed to get plugin support soon, but it's been a long time.
			<a class="return" href="#af-2">return</a>
		</li>
	</ol>
</footer>
</body>