The whole human existence makes you think in the small detail and modules and it doesn’t matter how big perspective and you have on Architectures of the society. It is somehow similar to the endless philosophical and spiritual battles between.
- Infinite and limited
- Philosophy/theory and practice
This way of thinking inescapably is valid for Software Development. To be able to do the things now you must think them in small detail. For example – you will not be able to create a Social Media Platform if you think it as a whole. Instead – you could separate the logic in small modules:
- User Management – Roles, Security, etc.
- Content Creation and Moderation
- Performance & Scalability Solutions
- Modularization & the support for bigger teams
- Marketing, Sales & Business
- Accounting and Legal framework
To be actually useful in the big picture you must think how the small tile fits into the big. Try to code the small module that is moving the big goal. Mute on other areas and Innovations.
This applies also to technology. There are infinite number of technologies right now. For every single task – you have the role to pick from more than 10 tools. The problem is you must know good enough one of them and not all 10 or more.
Endless Technological Learning Curve
In every technology the software engineers constantly push forward the possibilities the APIs and the features. At one point you will be unable to catch up with the new things in just only one area. And if you are interested in multiple good luck catching up. Mission Impossible.
- Android – Every Year – new API, Design patterns and Best Practices. I’ve described my Evolution in My Blog.
- Java – Endless number of libraries & every year new version(s) of the Programming Language
- Web – God cannot help you to pick up the endless variations of CSS Frameworks, Component Libraries, PWA & also – Web Assembly.
- Angular – Merge of the Backend Design Patterns with the Front-End
- React/React Native – Component based Front End – Library + Mobile Application Framework
- Flutter – Mobile Application Framework – with endless ways to architect it – thanks to the merge of Android, Web & Java Designs
- Dependency Injection
- Component Based Widgets
- Reactive Programming
- .NET – I am not an expert in it. I’ve seen frameworks with similar ideas to everything from Java, Web and the Mobile.
Code small Modules
At the end – it is impossible to learn it all. General knowledge of architectures will help you grasp the concepts. At the end – you will be forced to dive into the details and program in small Modules. This is actually another “Best Practice” – think in Micro Services.