For the past few weeks I’ve been strangely on-spot with my development estimates. I used to think it was impossible to correctly estimate development time because in complex systems you never understand the full scope of the problem. Though most modern front-end codebases are complex systems (by virtue of including frameworks and libraries), blank.page is not, so except for the service workers, I know exactly how each piece operates.
This makes development exceedingly enjoyable, because when I encounter a bug, I have a pretty good idea of how and where to resolve it. On the other hand, when you install third-party libraries or frameworks you are often at a loss on how to resolve a bug, because the library has abstracted away complexity and you do not understand what is going on under the hood.
Most devs would say my idiosyncratic way of programming is madness. But I tell them: I no longer have the patience to go hunting for bugs in the tower of abstraction. I’ve given up resolving errors with npm (which are most unhelpful). The “pros” have sucked out all the fun out of programming because they are too concerned about not making mistakes. So you have to write your code in Typescript instead of Javascript, you have to write tests, you must use React and with that comes JSX. You must use a linter because, oh the horror, you might be inconsistent with your code.
I know, of course, that this way of writing code is necessary for collaborative codebases, where more than one person is developing the application, but for the solo developer it’s only overhead. It gets in the way of flow. Current practices dictate that a trailing whitespace on a line of code is more important than your focus, so the build will break if it finds one. What nonsense.
And so I’ve come to program the same way I write: somewhat haphazardly, first expressing intention and then refining, driven by the need rather than the method, focused on keeping things simple because I’m to dull to understand things that I have not written. It may not be the best code or the best writing, but damn I’m productive doing things when I do them this way.