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.
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.