Oleg's Thoughts & Software

Software Engineering

This section contains my thoughts on software engineering processes, structure, recruiting, engineering management 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 makes the top engineers different from the average ones. Interviewing for talented engineers then goes into my interview process which is optimized for identifying engineering talent within the time constraints of a one hour interview. Engineer progression examines the differences between engineers of different levels within a company and is meant to aid in engineers' career development.

Related is improving quality in software development. Spoiler alert: it is not easy, but definitely possible by focusing on the engineers' intrinsic motivation.

Practical test driven development brings the "agile" into test driven development. One might think that test driven development is already agile, but this is not always the case - it is definitely possible to be so dogmatic with TDD adherence as to forget that the purpose of all engineering work is to ship working software. Practical TDD is about using tests effectively to ship higher quality, more featureful software quicker.

Implementing complex changes effectively with tests and Git specifically looks at undertaking major feature development or reorganization while diverging as little as possible from the code base which may be undergoing parallel development by others.

How to introduce documentation is my 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 the company permitting, and ideally supporting, its engineers to contribute to Open Source projects.