2024 Reflections

2024 in Review: thoughts on aspirational goals They say goals should be SMART: Specific, Measurable, Achievable, Relevant, and Time-bound. When I talk to students and early-career software engineers, I always tell them to also set aspirational goals. Aspirational goals are just a bit beyond achievable, and they are not time-bound. Set one aspirational goal and … Continue reading 2024 Reflections

The day I became an architect

What triggered my professional growth spurt and promotion was an epiphany that I am more effective if I help engineers grow rather than do things myself. Historically, I would build things and then pass them off to engineers. Instead, I realized that empowering the team to make a collaborative architecture decision and grow together is a hell of a lot more rewarding than the way I used to do things.

Leadership is About “We,” Not “I”

Every now and then I hear a leader boast, "I created a multi-million revenue generating product for my company." Such a statement makes me wonder if this person worked alone on the project. Authentic leadership isn't about self-promotion but recognizing the collective effort. Behind every successful software product lies a dedicated team. Engineers, analysts, testers, designers, sales, … Continue reading Leadership is About “We,” Not “I”

Form follows fiasco

Why software architects should stick with their projects Last weekend, I took my daughter to an antique bookstore/coffee house where we came upon a book called "Form Follows Fiasco: Why Modern Architecture Hasn't Worked." This book is not about software architecture. It's about actual architecture, which involves buildings that might collapse if not built right. … Continue reading Form follows fiasco

Software Engineering is here to stay

I counter the dramatic assertion that developer jobs are on the brink of obsolescence. I distinguish the roles of coders, who may face obsolescence due to their narrow focus on translating specifications into code, and software engineers, whose broad skill set in solving complex problems and innovating ensures their continued relevance. I argue that artificial intelligence and large language models augment rather than replace the human intellect, emphasizing that while app development and deployment methods may evolve, the necessity for software system maintenance and the efficiency of programming languages as a form of shorthand will keep developer roles indispensable. I argue that, despite technological advancements changing the landscape of app development, the core importance of the software engineer's role remains unchanged.