Functional programming, fluent API, immutability, complex data structures, configuration over convention, library packages, reflection, reducing cognitive complexity
Over many years, I have been improving my software development capabilities and choosing paradigms which produce the best outcome. Code conventions, that I usually use, rely mostly on the functional programming style.
Additionally, while creating new libraries and frameworks, I tend to prepare fluent APIs with expressive configuration. I consider reflection (with expression trees) as a powerful tool to build highly generic and reusable software. I think that many developers do not use proper data structures (even ones offered by the standard library) even though choosing wisely is a key to the best performance.
JetBrains developer tools (Rider, ReSharper, WebStorm, DataGrip, etc.), Azure DevOps, GIT version control
I am a person who enjoys learning and using new tools to simplify daily tasks. It can be as easy as choosing a fast enough programming environment that does not distract me, shows me useful information about the code or reduces the pain to traverse the codebase. Over the last 3 years, I found JetBrains products as tools worth every penny.
Backend development stack
Azure, C#, .NET 5, ASP Core, LINQ, Entity Framework, Dependency Injection, NUnit, NLog, Moq, FluentAssertions, AutoMapper, Microsoft SQL Server, ElasticSearch
Creating new software is great, but preparing tools to increase the efficiency of other developers is even better. Thinking about code quality, API stability, version distribution, sharing knowledge, gathering feedback, achieving genericness and analysing internal mechanisms inside the most popular libraries - all those activities are greatly improving my skills.
Frontend development stack
Currently, I am working on several projects that are distributed as reusable libraries within the company. I not only like such tasks from a programming perspective - learning, experimenting and applying new UI / UX patterns is something that I enjoy the most. I consider the frontend part of an application as a way to promote and emphasize the professionalism behind the product.
Python, Django, Django REST Framework, Unity3D, MongoDB, SQLite, embedded systems (e.g. Raspberry Pi, STM32, Beaglebone)
While working on several bigger projects, I tend to limit the size of the technology stack and choose the most reliable solutions. This allows me to achieve a higher level of expertise and become fluent. I am aware that my knowledge can be sometimes outdated, however, it does not take too much time to familiarize myself with all changes that happened over time.