From low level to high level programming, software developers need to select a good technological area to focus on, since nobody would ever know well everything:
Of course, the diagram above is not exhaustive, and it can be seen as just a sample technology sheet. But it allows us to observe some things and draw some (hopefully good) advice regarding the selection of the development focus point that one should embrace, especially if it’s a newcomer to the IT world:
- Freedom vs. productivity:
- If you select lower level technologies, you will have more freedom in development, but it will be more difficult to get your app developed and maintained.
- If you select higher level technologies, you will have to use the framework within its use case boundaries, but it will be easier to get the app released, and maintenance will be easier.
- Cross-platform limitations vs. multi-platform difficulty:
- Sometimes a higher level framework will make more lower level technologies compatible at a logical point of view, allowing you to learn less and develop faster, and with more ease; e.g. Xamarin uses only C# and allows you to develop apps for UWP, Android, and iOS without having to learn Swift and Kotlin;
- However, cross-platform frameworks typically come with many limitations that you won’t have otherwise, especially when you reach to corner cases or want specific features that lower level technologies offer; but if you want to learn multiple platform technologies separately and avoid such limitations, prepare for other type of difficulties: less time left for actual development due to the always learning need, and sequential release chains or longer time between different platform releases.
- Extended focus – whichever primary focus point you choose, however, you should learn a bit both at lower and at higher levels (whenever and as much as possible):
- Learning lower level technologies will allow you to understand better how your (otherwise black box) framework works, especially regarding performance, but also addressing user experience or other common app development concerns.
- Learning higher level technologies will allow you to prepare your code so that it’s usable also from those upper frameworks with more ease, just in case that would be eventually needed, such as to expose components from your area to other projects or even to the general public in the development niche.