The Coming AI Revolution in Software Engineering

2025-02-15

Large language models (LLMs) are rapidly improving their ability to write code, leading to the exploration of pure-AI software engineers. In the short term, software engineers should learn AI, improve their status, and leverage AI tools. Mid-term, expertise in maintaining and improving large legacy codebases will become increasingly valuable, as LLMs still struggle with complex, hard-to-verify projects involving massive amounts of code. Long-term, the core competency of software engineers will shift towards accountability and trustworthiness—qualities LLMs find difficult to replicate. Ultimately, those engineers who can oversee AI systems and ensure the reliability of their outputs will be the last to go.

Read more
Development

How I Use LLMs to Supercharge My Engineering Workflow

2025-02-04

A senior software engineer shares his practical applications of large language models (LLMs) in his daily workflow. He leverages LLMs for code completion, writing throwaway code, learning new domains, last-resort debugging, and proofreading documents. He stresses LLMs are not a replacement for core logic or formal writing but a powerful aid, particularly effective for tackling unfamiliar codebases or learning new technologies. The key is using them strategically, not expecting miracles.

Read more
Development

Stop Being a JIRA Zombie: Prioritize Impact Over Tickets

2025-01-25

This insightful post shares a valuable lesson learned by an engineer: Don't get bogged down in completing JIRA tickets; focus on strategically important projects. True productivity isn't about closing more tickets, but prioritizing what management deems crucial. The author outlines methods for identifying high-impact tasks, such as focusing on high-visibility incidents, unanswered questions, and project deadlines. A personal anecdote illustrates the frustration of focusing on less important tasks, advocating for ruthless prioritization and concentrating on projects that contribute real value. The result? Greater impact in less time.

Read more
Development

Aussie Engineer's Take on Working for US Tech Firms: Time Zones, Culture, and Stability

2025-01-12

An Australian engineer shares his decade-long experience working for American tech companies. He details the challenges of cross-timezone collaboration: mornings are spent catching up on overnight work, but afternoons offer invaluable focused time. While loneliness can be an issue, strong teamwork and documentation culture mitigate this. He also notes the inherent instability of working for a US company from abroad, but highlights the larger scale, better compensation, and higher brand recognition as key motivators. Finally, he discusses cultural differences between Australia and the US, where Americans are more enthusiastic and Australians more understated, requiring adaptation to the American work culture.

Read more
Development cross-cultural work

The Ratchet Effect: How Engineers Build Reputation at Big Tech

2025-01-08

Engineer reputation at large tech companies isn't solely about technical skill; it's a gradual process. Starting with low-level tasks, engineers build trust and gain access to higher-profile projects through consistent success. This "ratchet effect" makes reputation slow to change. Even mistakes can be overcome with continued delivery. However, repeated failures lead to a downward spiral. The author advises new hires to focus on smaller projects to build a solid reputation, avoiding risky attempts to jump to high-profile work immediately.

Read more

The Biggest Mistakes Engineers Make in Massive Codebases

2025-01-07

Working with large, established codebases is notoriously difficult. This article shares a decade's worth of experience, highlighting the most common and deadly mistake: ignoring existing codebase patterns and focusing solely on clean code for a new feature. Maintaining consistency is paramount; it prevents unexpected issues, slows the codebase's descent into chaos, and enables future improvements. The author also stresses understanding the code's production footprint, being cautious about introducing new dependencies, removing redundant code, working in small PRs, and leveraging team expertise to catch errors. While challenging, mastering large codebases is crucial because they are usually the foundation of a company's most valuable products.

Read more
Development codebase

Glue Work Considered Harmful: A Survival Guide for Effective Engineers

2025-01-02

This article explores the concept of "glue work" in software engineering. While crucial for team efficiency (e.g., updating documentation, addressing technical debt), this unglamorous work often goes unrewarded, disadvantaging engineers who prioritize it. The author argues that companies don't reward glue work because they want engineers focused on feature delivery, not overall efficiency improvements. The efficient strategy is to apply glue work tactically to projects you're accountable for, ensuring their success, rather than spreading efforts thinly. This isn't cynical office politics; it's based on the reality of low efficiency in large companies and the prioritization of growth over short-term efficiency gains.

Read more

Twice Promoted to Staff Engineer: Lessons Learned

2025-01-01

The author shares their experience of being promoted to Staff Software Engineer twice in two years. The key to promotion wasn't technical prowess, but delivering value to the company by successfully completing high-priority projects aligned with company goals. The author emphasizes the importance of understanding company priorities, working on impactful projects, and building strong relationships with management and team members. A supportive manager is crucial. Key takeaways include focusing on high-impact projects the company prioritizes, not overemphasizing mentoring, and having a manager willing and able to champion the promotion process.

Read more

The Gap Between Strong and Weak Engineers

2024-12-27

This article explores the capabilities that differentiate strong engineers from average ones. Strong engineers can accomplish tasks that weaker engineers cannot, such as resolving complex bugs, improving legacy code, and undertaking significant architectural overhauls. Weaker engineers struggle with these tasks even with ample time. The article highlights that strong engineers are not simply more efficient but possess the ability to solve complex problems, while weaker engineers are virtually incapable of completing most engineering tasks. The article also offers advice on collaborating with weaker senior engineers, emphasizing the need to be kind but protective of one's time, avoiding excessive demands.

Read more
Development engineer capabilities