Making code more expressive with  conventions

Making code more expressive with conventions

This blog post is all about: what are the potential benefits of a good convention & what are the conditions to make it so :), what is the most fundamental requirement for the convention to succeed & why conventions are double-edged swords ...Programming languages are very flexible, yet low-level solution shaping tools. Their real expressive, abstraction-building power can be unleashed by building upon bare language with language-specific idioms, libraries/frameworks, meta-programming, comments & ... conventions.What's a "convention"?Traditionally code conventions are associated with naming, but the proper definition should be more comprehensive. "Conventions" are rules & agreements regarding particular combinations of…

Read More

Untrained (programming) muscles are prone to atrophy

Untrained (programming) muscles are prone to atrophy

This blog post is all about: why I gave up on Grammarly, what's the difference between ReSharper-aided Visual Studio and Sublime Text or Vim, did VS cripple generations of software developers and why I'm skeptical of modern IDEs (hint: they are not solving the problems they should be solving ...)I do write a lot. Mainly in English.I've got a lot of practice, so in my case, the process of writing is quite fluent, but it still takes some time - structuring thoughts, adding content, proof-reading, polishing, etc. That's why all the ideas or tools that could help me save…

Read More

Strategic VS Tactical Perspective (in Software Delivery)

Strategic VS Tactical Perspective (in Software Delivery)

This blog post is all about: why engineering leadership is both - engineering and leadership, why both strategic & tactical perspectives HAVE to be mixed (and what happens when they are not).This is one of THESE posts. No solutions, no conclusions, pure rant ...WAIT, wrong attitude. Not "rant", but "an unfavorable observation".Yeah ... That's better ;)I work in a mode I've nicknamed "continuous recruiting" - basically, if there's an person with relevant skills/experience and a correct attitude who could truly benefit a team, it's my duty (& pleasure) to build up a position/role for such a person…

Read More

How can Stoicism help with building better software?

How can Stoicism help with building better software?

By learning this blog post you'll find out that neither Stoic != stoic nor Cynical != cynical, how Stoicism helped me to get out of depression, why celebrating small victories is important, what's "negative visualisation" & how Stoics' virtues do apply to modern engineering.If you've read any of my past blog posts before, you may have already realised that I tend to mix engineering with various non-obvious disciplines - starting with behavioural psychology, ending with Japanese movies, Zen meditation or Leonardo da Vinci ... Today I'd like to share some thoughts regarding the topic I find very appealing personally - how can…

Read More

Best typefaces for reading code (but not only)

Best typefaces for reading code (but not only)

TL;DR Right tool for the right job - this applies to such tiny details as fonts as well. If you spend a lot of time with written text, you should optimize this aspect as well, most likely even considering varying scenarios separately - I've set up a list of my favourite typefaces (font families) I find most useful on the daily basis. Keep in mind that this list is optimized for MY own use cases, so it may not be 100% fit for yours. I believe in small details that altogether, if adjusted with high awareness, make (in total)…

Read More

1. Sell the dream; 2. Manage the disappointment

1. Sell the dream; 2. Manage the disappointment

TL;DR It's 2018 & for majority of developers speaking to a business person (/stakeholder /user /sponsor) is still a grand rarity. We explicitly ask for "layers" of intermediaries who can translate business to tech & back. And once it gets to crafting the actual solution we either reduce ourselves to purely subservient automatons ("I do what I'm asked to, so where does this button go?") or follow the other extreme ("Provide written requrements until 10th, then we'll make something out of it & let you know"). We feel too comfortable in "secluded…

Read More

DX stands for Developer Experience

DX stands for Developer Experience

Disclaimer: Developer Experience is NOT about work experience, seniority or proficiency level. It's about how Developers perceive the sum of their work conditions (tools, processes, constraints, etc.) & how it impacts their efficiency & productivity. Analogy to UX/CX is definitely in place. TL;DR - Software developers have some (very specific & varying) work hygiene conditions expectations - these are hard to understand by non-dev outsider, but ignoring them leads to limited productivity, degeneration of engineering culture & nose-diving engagement. Providing conditions for stable, gradual DX improvement is critical for any company that considers software engineers (& their work…

Read More

Can Open Source model prevail in its current shape?

Can Open Source model prevail in its current shape?

TL;DR OSS has conquered the world, forcing even the biggest players of commercial software market to adjust their strategy to this fact. But the original idea of OSS has got somehow twisted in the meantime: everyone uses it, without feeling obliged to contribute. What is more, consumers expect flawless quality, but rewards for providing this quality are very ephemeral (so very few take a challenge). Is such a model stable long-term? Will it prevail or maybe evolve towards something less idealistic, but more pragmatic? Open Source Software (OSS) has both won & lost in the same time. It has…

Read More