About Programming - Part One
Publishing my thoughts on the internet is something that I am deeply afraid. They are more of opinion and are hard to quantify.
This blog/dev log is supposedly not for wider consumption. It is something I write just for myself. I think I can write anything here and will go widely unnoticed. Also, I am not much of anything in any programming or software community. So these are just ramblings of a random person at one random corner of the internet.
Software Development In 2021
One of the most influential talks in computer programing I ever watched is Preventing the Collapse of Civilization by Jonathan Blow.
The reason behind this is, the statements he makes there are very true. And it is something I can vouch. We are so lost in the cult of design patterns and new trendy software design paradigms that a lot of the software developers (including myself) don’t know how all this works. And that is very unsettling.
Now, don’t get me wrong, I don’t believe you need to know all of the deeper intricacies to be a decent or a good programmer. Or to be a successful software developer.
Then why is it important?
There are many reasons. One of which is, it can be powerful and help you be a better developer. It also might help you to learn and grasp newer concepts since this is something that you can consider to be ‘fundamental’ to computer programs or software. But another very important reason is ‘Reliability & Performance’
At my day job, I am a mobile developer. And as a mobile developer one should understand and carry with them earlier than later is. Your code runs on a device powered by a battery. And how it performs is significant to the user in terms of money and time. And at times the 1% of the battery your code overused might have real implications.
There is this thought once my friend shared with me. Consider the resources your code requires to run are lend to you by the user. And you owe it to the user to give reliable results at a good performance. And it is your responsibility to use the resources allocated to you in a just manner.
How can I learn about ‘these details’?
Computer Science from the Bottom Up is a good resource. It probably isn’t the most ‘well written’ book. But it felt like a good starter for me. From there you can move to more advanced books or explore writing an emulator. Emulators are a good opportunity to understand and gain hands-on experience on all these abstract details you have read about.
I like to continue writing about this later, probably sparsely. But there are lot of things you can navigate from after learning about ‘these details’.