Sunday 1 August 2021 12:55
Way back in 2013, I started mammoth.js,
a library that converts Word documents into HTML.
It’s not a large project – roughly 3,000 lines –
nor is it particularly exciting.
I have a strong suspicion, though, that that tiny side project has had more of a positive impact than
the entirety of the decade I’ve spent working as a software developer.
I wrote the original version on a Friday afternoon at work,
when I realised some of my colleagues were spending hours and hours each week
painstakingly copying text from a Word document into our CMS and formatting it.
I wrote a tool to automate the process,
taking advantage of our consistent in-house styling to map Word styles to the right CSS classes
rather than producing the soup of HTML that Word would produce.
It wasn’t perfect – my colleagues would normally still have to tweak a few things –
but I’d guess it saved them over 90% of the time they were spending before on a menial and repetitive task.
Since it seemed like this was likely a problem that other people had,
I made an open source implementation on my own time,
Since then, I’ve had messages from people telling me how much time it’s saved them:
perhaps the most heartwarming being from someone telling me that the hours they saved each week were being spent with their son instead.
I don’t know what the total amount of time saved is,
but I’m almost certain that it’s at least hundreds of times more than the time I’ve spent working on the tool.
Admittedly, I’ve not really done all that much development on the project in recent years.
The stability of the docx format means that the core functionality continues to work without changes,
and most people use the same, small subset of features,
so adding support for more cases and more features has rapidly diminishing returns.
The nature of the project means that I don’t actually need to support all that much of docx:
since it tries to preserve semantic information by converting Word styles to CSS classes,
rather than producing a high fidelity copy in HTML as Word does,
it can happily ignore most of the actual details of Word formatting.
By comparison, having worked as a software developer for over a decade,
the impact of the stuff I actually got paid to do seems underwhelming.
I’ve tried to pick companies working on domains that seem useful:
developer productivity, treating diseases, education.
While my success in those jobs has been variable –
in some cases, I’m proud of what I accomplished, in others I’m pretty sure my net effect was, at best, zero –
I’d have a tough time saying that the cumulative impact was greater than my little side project.
Sometimes I wonder whether it’d be possible to earn a living off mammoth.
Although there’s an option to donate –
I currently get a grand total of £1.15 a week from regular donations –
it’s not something I push very hard.
There are specific use cases that are more involved that I’ll probably never be able to support in my spare time –
for instance, support for equations –
so potentially there’s money to be made there.
I’m not sure it would make me any happier though.
If I were a solo developer,
I’d probably miss working with other people,
and I’m not sure I really have the temperament to do the work to get enough sales to live off.
Somehow, though, it feels like a missed opportunity.
Working on tools where the benefit is immediately visible is extremely satisfying,
and there’s probably plenty of domains where software could still help
without requiring machine learning or a high-growth startup backed by venture capital.
I’m just not sure what the best way is for someone like me to actually do so.
Topics: Software development