This talk tries to provide insights into why any project during its lifecycle slows down in terms of the team's productivity and ability to deliver. Doing so lays out three core areas where we could incorporate "better" engineering practices within the team. These are as follows:
- Programming Languages, Features & Patterns
- Dependency Management
- Cloud and Microservices
Programming Languages, Features & Patterns
It tries to evaluate Programming languages from the first principle and question our existing so-called "standards and patterns" and if we really need those constructs in the first place. It argues that programs are just input, transformation function, and output with optional side effects. It also goes argues that the Design Patterns are Paradoxical Remedy to the problem that was created due to "standard constructs" that was put in place by languages such as Inheritance, Abstract Base Classes, Try/Catch, Singleton & Factory Patterns, etc.
This talk tries to provide concrete examples of how we could rethink those patterns by sharing few design constructs of Golang such as
- Errors as a primary value instead of treating it as a second class citizen and wrapping inside try/catch
- Interface as an orthogonal construct instead of Inheritance, Abstract classes, Generics, Templates, Macros, etc
- Struct as a way to encapsulate data and Functions with the method pointer instead of intermixing data and behavior inside a class
This talk also goes over aspects of dynamic and static languages and how type-safe language could help boost a team's productivity over time with examples.
It focuses to highlight the importance of isolating Operational dependency alongside Application dependency and how we could potentially achieve both with sample examples. It talks about how we could utilize Docker as a "CLI" and achieve that Operational Isolation which in turn provides a consistent and predictable Operational environment across different stages of development including CI/CD pipelines. All in all, it explores a unique side of Docker where we could utilize it as a development tool to manage our local environment alongside its primary role i.e Containerized application.
Cloud & Microservices
It tries to explore the implications of Cloud Native architecture and how we could rethink building your next biggest Microservice. I was not able to go through the slide and discuss the topic due to time constraints. Hope to cover this in the next talk.
P.S: I will soon be patching this blog with a link to a youtube video whenever it's out.
Follow me here
Reach out to me at email@example.com
Thanks a ton!!