What are some great truths of computer programming?

in #science8 years ago (edited)

Three Major Axioms of Programming:

  • Everything in programming is built upon layers of abstraction.
    The modern programmer is completely kept abstracted away from the several layers of complexity underneath. The further below you go, you have a better understanding of the complete picture.

Allow me to elaborate -

We’ve always been taught that being a good programmer meant that you don’t re-invent solutions, but you use existing solutions to problems that have already been solved a million times before. When I create a new feature for my app, I pick a library that’s best suitable for the job. Most of programming these days is just about that — picking a good tool and learning how to use its APIs. When I do that, I’m not just a creator, I’m also a consumer who uses things to create other things.

We’re all consumers of technology.

The question is, on what level of consumption are we? When you try to visualize it, the image you get is that of an inverted pyramid.

For the purposes of understanding this, let’s take a simple use case — Using Facebook.


The first hierarchy (the top most) level forms most of Facebook users. All the people who have a Facebook account have been in level one. You know — the friend who liked your DP, the girl whom you stalk secretly … all of them. Basically anyone who knows how to use the internet, or netizens. This is the portion which forms most of the volume and area of the pyramid. And these guys form our Level One of consumers.

If we go one level below, the next level consists of those people that implement various features on Facebook for Level 1 users to use. You have UI-UX designers, Front-End developers, Back-End engineers, mobile developers. And why are these guys consumers, do you ask? It’s easy— a UI-UX guy needs tools like Adobe Photoshop/ Illustrator for his design mock-ups, a Front-end guy uses libraries and Frameworks like ReactJS or JQuery, Bootstrap to make the UI-UX, a Back-end guy uses server-side frameworks like DJango/Flask/Express/CakePHP and databases like MY-SQL or MongoDB…. you get the idea? The majority of web programmers in the world lie in this space.

Enter level three. Here is where the programmers who create the libraries/frameworks and other technologies come into picture. The guy who created ReactJS / Angular is on level three. So are the guys who created Photoshop, and ditto for the DJango/Express/MY-SQL guys as well. Moving from level two to level three is tough, but it’s doable.

Moving below, the pyramid gets even narrower. ReactJS uses JavaScript! DJango uses Python, and MongoDB uses C++. On this level are some of the best programmers on earth, the messiahs. The creators of languages. The W3C group. Linus Torvalds. Dennis Ritchie. You’d call them legends. These guys are in a league of their own, and you need to work really really hard to enter this club.

The pyramid keeps getting narrower and narrower, but it’s hard to tell where it stops. You get an intuitive feeling of what separates great programmers from good ones, and what separates the best programmers from the great ones. The further down the pyramid you go, you understand more of how the whole pyramid works!

  • Abstractions need interfaces to work with.

The underlying complexity is all hidden away from us, but they exist. We use APIs - which stands for Application Programming Interface. Bottom layers are always abstracted away from the top ones and the top layers use APIs or some sort of interface to interact with the lower layers.

  • Great systems are works of collaboration

At one time, it was possible for a person to have an understanding of the entirety of human knowledge. But modern systems have become so complex, that it’s impossible for you to know everything. You can’t understand the whole pyramid - you can understand only a few layers of it. The rabbit hole is way too deep!
And why is programming so relevant, so much intertwined with our everyday lives?

Because Abstractions are everywhere, not just within computer programs! They are all around us. For instance - in the case of food, we have people who pay and eat at restaurants, or people who order food using food apps. Everything else is abstracted away, by a simple menu card or a tap on the screen. You’d find plenty of abstractions at your home too - the underlying complexity of electrical wiring are hidden away and you use an interface to interact with electronic devices - a simple switch. When you use the shower, you use an interface - the tap! When you drive a car you don’t worry about how the car actually functions underneath, you use the interface provided - the steering, the brakes and the accelerator.

Abstractions are important because they help us navigate reality and go about our everyday lives without getting overwhelmed by the complexity underneath.

Programming is no exception, and that’s why it’s so relevant to us. It’s how humans intuitively have built things!


Please give your opinion on steemit here once!! on link it will take a minute but the people who are posting trash may be decrease.
https://steemit.com/steem/@tushargoel/agree-or-not-steemit-is-becoming-a-trash-box-on-the-name-of-making-money-by-blogging-give-your-opinion

Sort:  

Welcome to Steemit!

Firepower is one of our most awesome members!

Looking forward to your posts and hope you share more of your artwork! @tushargoel