Bounding Unicorns

Software Engineering

This section contains my thoughts on software engineering processes, structure, recruiting and related areas.

Hiring, retaining and developing talented engineers is a nearly universal challenge for tech companies. What makes a talented engineer discusses qualitative differences between engineers and what I believe makes the top engineers different from the average ones. Job descriptions page has my thoughts on writing effective job descriptions. Interviewing for talented engineers has some of my thoughts on interviewing. Engineer progression is my take on a title matrix, examining the differences between engineers of different levels within a company.

On the day-to-day software engineering processes, improving quality in software development considers quality of software overall, practical test-driven development considers testing specifically and effective code review looks at code review processes in an organization.

Implementing complex changes effectively with tests and Git ties testing and a powerful version control system to enable rapidly making extensive changes to a code base.

How to introduce documentation offers one process for starting the culture of documentation in a company. First steps are often the most difficult ones, and documentation is no exception. Advocating for corporate Open Source contributions provides some arguments for why it makes sense for the company to support its engineers contributing to Open Source projects.

Values and best practices page collates links to well written essays on engineering values, culture and best practices that resonate with me.