Here are 10 posts I thought were worth sharing this week.
Who Is Driving the Great Resignation? – Link
It is hard to retain good talent in tech. I agree with the reasons on why employees are resigning in huge numbers. Shortage of good talent, better compensation, lack of purpose, burnout, career advancement are the reasons that I hear as well. One reason that I don’t see covered in the post is poor leadership skills. It might be implicit but I think it should be called out as well. Good leadership can provide a sense of belonging and purpose that can help retain good employees.
The Problems with “Cloud-Prem” – Link
I loved this post since I am seeing this deployment pattern being applied in one of the projects I am involved in. In Cloud-Prem deployment pattern vendors deploy software to their client’s cloud provider under an isolated account or a separate VPC. I am seeing this in the context of the BFSI sector. Modern Core banking systems like Mambu, IExceed, Backbase use this model.There is always an implementation and upgrade cost associated with this setup. There are concerns like multi-tenancy, operations of a large SaaS system, etc vendors don’t have to think about using the Cloud Prem model. “Cloud-Prem” deployment model is necessitated by the need to have a highly performant core system and compliance requirements of certain sectors.
It’s tough being an Azure fan – Link
This is a good post covering Azure security and availability issues. I have also experienced similar things with Azure. I have worked with a couple of customers in the last year who moved away from CosmosDB because of its instability and cost. I was not aware that Azure CLI is over a gigabyte in size. I have always found Azure too enterprisy that does not resonate with me. For all personal projects I prefer to use AWS. One thing that I found better in Azure compared to AWS is their solution architects and sales team in general. They work with you and support you through the journey. With AWS sales and SAs my experience is not that great. They are a pain to work with and push their services too much.
Talk: Rust and Other Interesting Things – Link
This is an amazing talk by Bryan Cantrill where he talks about values of programming languages. The values we are talking about here are compatibility, interoperability, simplicity, resiliency, performance, testability, etc. He talks about values languages like C, C++ Scala, Awk, K consider important. These values help their language designers make design decisions. He then goes on to list values expected from a system language and why C is not the best language for it. He concludes the presentation by making a case for Rust. I played with Rust early this year. I have never done system programming so I had a tough time learning Rust. Rust has a steep learning curve.
Why Erlang – Link
I have read multiple times that Erlang is closest to the OOPS Alan Kay envisioned. Erlang has message passing at its core, built in resiliency using supervisors, and many other features that enables you to write scalable, concurrent, distributed and fault tolerant systems with soft-realtime latency guarantees. I have not worked with Erlang but used the Akka framework using the Scala programming language. Akka brings Erlang goodness to the JVM.
Domain-Driven Design: Effective Domain Modeling and its Perks – Link
This post covers how you can convert a layered architecture to DDD. The example covered in the post is simple but you will get enough knowledge to see how you can apply that in your project. The one thing this article didn’t talk about much is how to communicate between two bounded contexts. AFAIK, we will have to publish domain events. DDD is useful both when you are building a modulith or Microservices based application. There are many concepts in DDD like anti-corruption layer, domain events, aggregates, value objects, and bounded context that have become part of my vocabulary when building enterprise applications. I think DDD is not an all or nothing approach. You can pick and choose practices/principles that make sense to your ecosystem.
Always do Extra – Link
I enjoyed reading this post. I loved how the author explained the difference between doing more and doing extra. Extra is about pushing the boundary, clearing the technical debt, or learning->researching->implementing something that will help the project in the short/long term. It is about caring for important stuff which gets lost when we only focus on delivering features. One thing that we do in our projects is to keep one day in a two week sprint for clearing technical debt. This helps but I would prefer it to be part of the daily schedule.
Composability is the only game in town – Link
I never thought about composability in this way. Composable design enables software to do things that creators don’t envision. The success of Linux, Roam Research, Lego, Software Containers can be attributed to their composable design. Microservices architecture, if done right, also enables organizations to build composable software where high level services or capabilities can be delivered using core composable primitives. I think composable software can only be designed by engineers/architects that have deep understanding of the problem and software design skills.
Talk: Facebook Whistleblower Frances Haugen – Link
Facebook sucks! I stopped using it in 2015. I became aware of the negative feelings it was inducing in me. This is a short 15 min video Frances Haugen talks about how Facebook is ignoring all the research and studies that talk about negative impacts of the platform. Facebook leadership has done little to limit negative and violent content on its platform.
Annotation-free Spring – Link
I have been doing Java Spring for 15 years. I never imagined we could be annotation free. I don’t think it has much practical implications but it is good to know that you can skip annotations if you want to.