2022-07-14

https://news.ycombinator.com/item?id=32054181

Orange Site discussion about how software development used to be. All I can think is that it's really tricky to examine our instincts and experiences -- I've developed software for money since around 1998 at different scales.

My "first" thoughts:

I used to develop features much, much faster.

Back when I worked on MyMemory.co.uk I shipped several features per week pretty consistently. This was PHP4, which is not a good language, in a code base I inherited. Importantly: after I took over this code base it was effectively mine. I didn't have to document changes, my code was never reviewed (features were QAed though) and because we didn't have version control I was effectively a solo developer. As long as the software "fit" in my head, it was fine.

I definitely shipped bugs to the customer but in very few cases were they serious. Usually they were stupid things which having Sentry or Bugsnag would have let me find almost immediately (in production). Very rarely they had financial impact but the agency I worked for would credit the customer development hours and in the end I think it was a good deal for everyone.

That code base lived for around 12 years, and I was the main author for about 4 of those. When new developers joined (especially once we got Subversion, and more than one developer could work on it at a time) there was a steep learning curve -- really they were basically reverse engineering the site based on intuition and generally being able to ask previous developers what they were thinking.

I take credit for bringing in version control at that agency. While it would have been impossible for some of their bigger projects to have been written the old way without everyone clobbering each other's work, the company immediately saw an overhead that went to version control. It was Subversion so we spent non-trivial amounts of time merging -- merges were scary then! -- but even when Git "fixed" that for us, we spent a lot of time on the busywork of maintaining version control.

At the time, one director wanted to abandon version control and go back to folders of unmanaged files. That seemed crazy to me then (and mostly still does) but I can see his point: we were spending hours per week on version control which was a new cost with no billable benefit to customers.

My "second" thoughts:

I spent a lot of time writing code that other people had written before me. All the way back to fact that I've had to write several linked list and hash table implementations in my life because C didn't have them in the standard library. In the early 2000's I wrote a lot of form validation logic. Like: a lot! I wrote several form validation frameworks because if something is worth solving it's worth solving with a generic tool, multiple times.

Many of those MyMemory features that I mentioned cost tens of thousands of pounds of developer time. When I was 22, a week of my billable time cost around GBP 2,220.

Even though I've admitted that the code base was an untested and undocumented artifact, the actual product was great: a fully bespoke commerce application, back office, stock management and a warehouse picking and packing system (barcode scanners, the works). But they probably spent the bones of a million pounds on it over the years.

Almost every feature that system had, at enormous expense, is either a core feature or a plugin for Shopify/Magento/Spree/etc. You could probably build that million-pound site for a few thousand dollars of developer time, now.

Is a tailored suit a better fit than an off the shelf suit? Sure hope so! I've only ever gotten as far as a tailored shirt, personally 😊. Is a tailored website a better fit than an off the shelf one? Emphatic "Yes".

Integrating a mess of third party stuff into your business usually means bending your business to how the system works and not the other way around. If you're not willing to bend, you are going to be paying quite a lot out of pocket for customizations. This is probably the lesson that large enterprises who buy ERPs learn, at great expense.

But a million pounds is a lot of money! That's 20-30 (non-programmer) office-worker-years worth of money in the UK.

My "third" thoughts:

Doing things right sure is a lot of work compared to just doing things.

I work at a biggish company so there's a lot at stake. At my old job things servers got hacked and the outcome was the millions of spam emails were sent out -- at my current job multi-million dollar intellectual property could be stolen. It makes sense to not move fast and break things when the stakes are higher.

In conclusion: 🤷‍♂️

Alone a youth runs fast, with an elder slow, but together they go far.

https://andrewwhitby.com/2020/12/25/if-you-want-to-go-fast/