C and Guitars

I have been learning how to play guitar since last year. On my birthday, my friend gave her guitar to me. I really like it so much but haven’t used it for a long time. My days and nights are spent learning new things about software development and working as one.

There are many more things on my list that I try to discern for their long-term benefits. C programming is on top of the list along with iOS development and Objective-C. My projects are turning out to be more sensible than when they were written in Lua. For practicality and business reasons, I couldn’t dismiss using Corona SDK as an insensible approach. If you look at the number of apps that made it on top of the charts, some are using Corona SDK.

Learning guitar has its similarities to learning C programming or programming in general.

False Reality of Abstraction

Why use C then if it’s so dangerous? Because C gives you power over the false reality of abstraction and liberates you from stupidity.

Zed Shaw is probably one of the most sensible mentors in software development. He is right that we should learn C and not just abstractions like Ruby and Python.

Perhaps it’s the analogy of a non-modernist: learning Ruby without knowing any C programming is like learning guitar tablature instead of the established notation or “staff notation.”

I am fairly happy with Ruby even if it is, in fact, an abstraction. There was a time when I thought it was close to perfect, for my needs at least.

There are abstractions popular in the Ruby community which I have used for a long time. I would dismiss some of them to be a waste of time or just not as just not as great as I expected them to be.

Practice

Practice allows us to get rid of the feeling of insufficiency and more than that, we actually create value in the process.

How many applications do you need to create to feel sufficient?

I haven’t written a hundred applications in Ruby, C or any other language. It’s unlikely that I will. I think a hundred may signify both mastery and indecision without clear and good goals. If you have good goals, it’s a good design decision most of the time. It makes a lot of sense now that many influential programmers propose the idea of having multiple applications over one big application. It’s better to extract features that make the app bloated into a separate application or product.