Tuesday, July 12, 2022

Essay 02: Why do we code?

Essay 02: Why do we code?


Why do we code? I don't know. I mean, I know why I code, by why would anyone else want to learn to code? I think the best answer came from Steve Job: "I think everyone in this country should learn to code, because it teaches you how to think." And what a fine answer it is! 


Unfortunately, the Apple Macintosh, in fact, did not come with a built-in programming language. You had to buy an Apple Lisa system, at $10,000, to write a program for the Macintosh. Great user interface, but programming for it is rather a painful experience!


So, here are some ideas on why you should learn to code, and my reaction to them:


1. Logical Thinking. Also known as left-brain function. And yet, I have seen computer programmers use their right-brain side. Rather emotional. Artists tend to be that way. Steve Jobs, for example, did not do any heavy duty coding. Sure, he knew how to code, but he didn't do it professionally. He relegates himself as visionary, and that requires more than logical thinking. It requires imagination and intuition. As well, people can and do develop logical thinking without learning computer programming. The ability to reason isn't an exclusive domain to computer programmer. Chess players, for example, can do it, too.


2. Creativity. I doubt that. I think people are either creative or not. The creative ones can and do well in computer programming. However, I have seen too many people just use other people's code, without thinking whatsoever. Only in the bleeding edge of technology that creativity is rewarded. However, that area of research isn't too common. As far as art is concerned, there is Creative Coding and Generative Art, but those are rather rare.


3. Resilient and Perseverance. The ability to weather hard times, so to speak. I find that hard to believe. As soon as people see code, their mind go blank, and they never pick up coding. Those who sticks with it would be amply rewarded, sure, but so is sticking with Karate to develop discipline, so to speak. Just as creativity is a talent, so is perseverance.


4. Communication skill. This I agree completely. Many people say that in order to be able to program a computer, you need to be good at math. The truth is, you don't. However, you do need to have good communication skill. The ability to articulate your thought, put it down on paper, and code it into the computer is an indispensable skill, and you have to have it in order to be a successful coder. Math? Do you know that coding used to be thought of as "clerical" job?


5. Analytical Problem Solving. This is also true. The biggest roadblock people have in computer programming is the inability to properly recognize the problem! Defining a problem is a very necessary skill, and not too many people have it. Then, you need to be able to decide on how to solve the problem. So, yes, this is a skill and not a talent.


6. Coding is fun. Well, no. Creating a computer program from nothing is a worthy endeavor and should be encouraged. But it is not a fun activity. Too many people are having trouble debugging their program, and what if there is no help available? It can be maddening experience, indeed! Tearing your hair off in frustration is a rather common experience, I'm afraid.


7. Learn how to learn. Having done it, I can categorically say that learning how to learn and computer programming are not related to each other. That is, to say, if you learn how to learn and can pick up new programming language quickly, then you're well and good to progress as computer programmer. However, just because a lot of successful computer programmer can do so, it doesn't mean that the skill is guaranteed. Those are two different things.


8. Money. This is also not true. I see too many job offers as needing so many years of experience in a particular platform. Also, new platforms keep coming up every year. What was good, won't be. Programming languages come and go. About the only steady job that I see is Database System Administrator. You don't need computer programming for that. Just learn SQL, and some system administrator skills. That requires certification, not boot camp.


9. Prestige. All I can think of about this, is "EA Spouse", the deservedly lambasted activity for treating computer programmer shabbily. Only to be repeated at Rockstar Games, forcing their computer programmers to work a punishing 100 hours per week! Only to be let go after the game was done. All it does is burn out a lot of computer programmer. I don't see this being different anytime soon.


10. Be smarter. Not at all. There is this rather popular process of testing computer programmer with "LeetCode", that is asking the job applicant to code a programming problem. The problem with that practice is that the applicant cannot use a computer or look up stuff either on books or anywhere including the web! So, obviously, the most successful applicants are the ones where they successfully memorized as many of these as possible. I have seen the question compilation and most of them are totally worthless! Either they can solve it because they've seen it before, or they can't because they haven't seen it before. All it does is gatekeep the really smart programmer (never memorize what you can look up -Einstein, Feynman, and others), and value memorization rather than smarts. 

No comments:

Post a Comment