As a developer, I am very familiar with the idea of a 'retro'. Retros are an important step in the agile methodology, allowing a team to look back over a sprint, a project or some other unit of work to determine what this did well, what could be done better, and any lessons learned to take forwards.
However, we often don't take time to look back at our own individual journeys and reflect on our personal achievements. As developers, we're often great at concerning ourselves with those things we are still yet to understand, but not so good at giving ourselves credit for what we do.
So each year I like to look back and reflect on three things I have learned in the past 12 months.
This is the first time I've ever composed a more conversational blog post, so this is another achievement in itself, but if I'd had authored a similar post at the end of 2021 I'd have listed Kubernetes, Blazor and NoSQL databases as my three key learnings.
As primarily a .Net C# software engineer, many people presume that day-to-day life is all about writing code, as indeed I did when I started my first software engineer role 15 years ago, but as I progress along my career path, I'm finding less and less of the day job is coding, and more of my time is spent in application design and architecture.
This is why I love my career, no 2 days are the same, every day has new challenges to overcome, new skills to learn and new ideas to swap with my colleagues.
My 2022 Retro
So as I look back at 2022, what are three key new areas that I have been working in that I have put into practice?
You may think this is something you hit quite early on in the career path of a developer, and you'd be correct! But this year I've been digging deeper into configuration, JWT, cookies and even re-writing some core OIDC code to suit specific use cases where the out-of-the-box .NET Core OIDC libraries didn't provide the flexibility required to do what was required. Walking through other users' code and re-writing parts to suit your use cases is a great way to broaden your knowledge and understanding of how things are designed to work.
ETL Event Streaming
Extract, transform and load. Three words seem to have taken over my life towards the middle of 2022. How to get data from one or more back-end systems to a front-end system in a way that can be delivered to an end user quickly and is structured to suit the use cases. It's a pretty simple pattern really, and somewhat follows a similar design as the CQRS architectural design, but on an architectural rather than application level.
The basic premise is that you can 'stream' data from back-end data sources, often SQL but this could be any data source, and then filter and transform the elements of the data that are required into a more usable structure into, most commonly a NoSQL database such as MongoDB, that can then be delivered to front end systems in a faster, more structured format than getting the data directly from source may provide. Updates are then passed back to the source data stores and transformed and streamed back through to the front-end data sources, and the cycle continues.
API Gateways (Ocelot)
Towards the end of 2022, my focus shifted towards API Gateways using Ocelot. API gateways are not new. Most cloud developers will be using some form of API gateway, they are standard tools in AWS for example. However, for none cloud-based systems they are a tool that is often overlooked but can allow a development team to provide a much greater degree of security, flexibility and visibility of requests and data moving into and out of the platform.
What's in store for 2023?
As I look ahead to 2023, I figured I'd make a note of what 3 areas I believe will form a key part of my journey ahead. Indeed, it'll be interesting to see how much of this comes to fruition, and what changes, as, as any software engineer knows, priorities and focus can shift almost overnight from one project or process to another.
As of now, the three areas I am anticipating I will be focussing on are:
Application security - Focusing more on API security rather than front-end security as in 2022.
More cloud (CDK, AWS Lambda/Azure Functions)
Observability - Distributed tracing and open telemetry.
I would also like to complete my to-do series and spend more time working with IoT.
Did you find this article valuable?
Support Dave K by becoming a sponsor. Any amount is appreciated!