The road to being a senior developer

“Senior developer” is a hotly debated term. In my opinion, in terms of modern tech philosophical debates, it’s right up there with “What is consciousness?”! Everyone agrees that it exists (there are job titles, after all), but any attempt to define its nitty-gritty seems to be an exercise in exasperation. So, I’ll steer clear of defining what a senior developer is. That said, it is obvious that once you’ve become comfortable with typing out code in a coherent manner (junior developer) and building features from specifications and generally being able to work alone (mid-level developer), there comes a time when you need to dive deeper into how things work, must train others, and must deliver software at very high quality (senior developer).

My Experience after Porting a JavaScript Project to TypeScript

After much resistance and many, many weeks, I finally embraced TypeScript in a JavaScript project recently. I did this kicking and screaming, foaming at my mouth. Why all the resistance? Well, I didn’t like the complexity TypeScript introduced; I didn’t like learning another oddly designed and OOP-first, complicated language, just to have it compiled down to JavaScript; the team I’m leading comprises junior developers who’d scream at the idea; I thought the issues I was running into could be solved by the IDE it I could configure it well enough; and so on .

It's All Boring in the End

I don’t know if it happens with you, but for me, once the core ideas of something are figured out, my interest is more or less lost. Now, dont’t take me wrong; I’m not saying that I’m not excited about software anymore – quite the opposite, in fact! But my point is, once I know how something is done, it ceases to be the shining star of mesmerization that it once was for me.

Using Postgres as a Message Queue

These days, I’ve been given a lot to think about message queues. While their utility is undeniable, the most important architectural question is: which messaging service/backend do you use? If we don’t get into the managed vs. self-hosted debate, the impulsive answer is “Redis!”. It’s simple, it’s ridiculously fast, it’s mature, and it’s more popular than energy drinks. Other answers are RabbitMQ, SQS, ZeroMQ, your favorite higher-level abstraction library (BullMQ, etc.

Declarative, Imperative, and all that

For the last few years, concepts from Functional Programming have been trickling into the mainstream. Whereas earlier these alien ideas were met with shrugs and raised eyebrows, now it’s cool to be seen as one who writes monads or dishes out wisdom on paradigms and whatnot. I was quite happy, therefore, to see that the latest edition of the React newsletter by ui.dev had an article on what it means for React to be declarative.