Why Steve Jobs Said, “Everyone Should Learn to Program”

Steve Jobs once said “Everybody in this country should learn to program a computer, because it teaches you how to think” what is the meaning behind this notion? We will explore this thought out and find out What actually programming is and why everyone should learn how to do it…

Most people these days still think of programming and coding as a highly technical practice, limited to a particular domain of the population. They also don't see the need to understand how a computer works because they can simply turn on their laptops, point at a small visual object on the display, click a graphic button and the laptops do some work for them. In reality, apart from knowing how to interact with a computer to ‘get the job done’, there is a need to learn how the computer works because the concepts underlying this will give benefit to you; helping you learn the importance of clarity of expression.

We live in an ultra-competitive world, with people turning to all sorts of methods to make ends meet. People who know how to code and program will be able to communicate across countries and cultures, be innovative, and solve problems more efficiently, with no barriers to disrupt their success.Learning how to write computer programs could possibly transform you into  a leader.  

 

What is programming?

"I think that greatprogramming is not all that dissimilar to great art. Once you start thinking inconcepts of programming it makes you a better person...as does learning aForeign language, math, or how to read." --Jack Dorsey

Inorder to connect between the machine and human, programming languages werecreated. Like humans have many languages to communicate with each other,computers also have many languages that allow humans to communicate with them.Ultimately, computers 'speak' in binary - using only two symbols 0 and 1 (oryes and no).

For instance, a simple word'Hi' is expressed in binary as 01101000 01101001 (a.k.a. machine code).

The Programming languages useddepend on the task you want to complete; different languages are used. They have some similaritywith human languages like structures and syntaxes. To create an application, orto program an application, we need to use the relevant  programminglanguage.

Fun Fact: Java, a popular general-purpose programming language and computing platform, was originally developed by the father of Java, James Gosling who earned his Ph.D. in computer science at Carnegie Mellon University in 1983

In simple terms, computer programming involves developing lists of instructions and the source codes representative of software. Computer programming utilizes programming algorithms as a recipe that describes the exact steps needed for the computer to solve a problem or reach a goal. There are different types of items like words, numbers, images or even sounds that have been manipulated by these instructions.

Think about making a club sandwich for breakfast, you need to follow a set of instructions — a recipe, to make the sandwiches edible, right?Coding is pretty much the same, we give the computer a set of instructions (an algorithm) to make something.

Similarly, in order to reach the destination, you know how to move your left and right leg in a  loop until you arrive. Also, when you make decisions before you step outside the house. You use IF/ELSE statement, you have an IF statement that says IF it is sunny then take sunglasses with you, ELSE No need.

Coding is like having  a 'thought' and 'practice’ in order to  explore it,manipulate it and eventually,  understand it. To convert abstract elements into an act or object; to make it concrete and tangible. Creating a computer program can be like making a piece of art,composing music, and creating lots of things;computing could be a way of expressing  abstract ideas, allowing them to be more tangible in every form of content.  It has been argued that  it is an art, not engineering.

 

Why we should learn programming?

The art of programming requires us to ‘think outside of the box’ and solve problems with the most effective and achievable solutions. It is not about crushing the keyboard and typing as fast as possible, programming is definitely far from  equivalent to hacking.

Programming goes beyond memorizing the syntax and built-in functionalities of a programming language, it is about the thinking process. When you see a problem,you need to break it down into feasible chunks, later tackling the issues at hand. When you start learning to program, you develop the habit of working  in a very structured format.You constantly program your brain to deconstruct each problem, later equipped with the ability to  understand better. You start thinking logically, filled with a number of creative solutions you didn’t realist existed. . It is as if "programming" is a dignified way of saying "problem solving".

This way of thinking is known as ‘Computational thinking’, it is a perspective that is enabled by understanding something of the principles of coding and programming, thinking up and then solving problems in a methodical way. This type of thought process is usually broken down into steps.. It allows for the personal  transformation into a solution driven individual, retaining patience when trying to tackle issues several times. It allows us to avoid giving up when difficult situations arise, as we are equipped with the knowledge of there always being a solution eventually.  

Jeannette Wing, Consulting Professor of Computer Science at Carnegie Mellon University has raised an interesting aspect on computational thinking ,regarding it as  a fundamental skill used by everyone in the world. Computational thinking then is argued like a way that humans, not computers think. It is a way humans solve problems, a way of doing, a way of being, that can manifest at different levels. Perhaps, it occurred to every one who have been actively using Computational Thinking, but have actually been calling it ‘Logical Thinking’.  There is also an element of abstraction in computational thinking, which allows you to move from a specific solution to a specific problem and generalize it to other situations.  The result is a paradigm shift in thinking about how the real world works. The interconnection with life is obvious.

The common examples in Computational Thinking and daily life relation is like when gathering the things you need to buy before you leave the grocery shop,retracing your steps if you miss something, and choosing a check-out line at the supermarket. It is a way of thinking; why did we do X when we could do Y and it would be so much faster, easier and better.

At Carnegie Mellon University, they offer the students of  all degrees the opportunity to learn Fundamental Computer science and programming courses. This is due to a belief that it is not limited to only those who  major in Computer science or engineering. Students of a fine art major will learn computational principles and programming techniques as the objective is art and design, but the medium is student-written software.Also, they see the benefits of learning those concepts of computing that help them to become familiar with basic software algorithms and to understand the abstraction and deliver their interpretation through creative practices.

In conclusion, to elaborate from Jobs statement, Coding and Programming is nothing but instructing your computer to do something. It could be as simple as printing your name to something as complex as writing a program for machine to work by itself (AI). It is a skill that has limitless benefits, especially for entrepreneurs, that can be learned by anyone.

An understanding of computational thinking will give you a foundation for solving problems that have real-world relations, with a contribution to social impact.  Therefore, the ‘magic’ behind technology is the ‘magic’ behind human thinking.

สตีฟ จอบส์เคยพูดเอาไว้ว่า “ทุกคนในอเมริกาควรได้เรียนเขียนโปรแกรม เพราะการเขียนโปรแกรมจะช่วยสอนวิธีคิดได้” ทำไมจอบส์ถึงพูดแบบนั้น แล้วการเขียนโปรแกรมจะช่วยสอนวิธีคิดได้อย่างไร วันนี้เราจะมาหาคำตอบกัน

คนส่วนใหญ่ในปัจจุบันยังคิดว่าการเขียนโปรแกรมหรือการเขียนโค้ดนั้นเป็นเรื่องยาก และคนที่จะเขียนได้นั้นต้องเป็นโปรแกรมเมอร์อย่างเดียวเท่านั้น อีกทั้งเทคโนโลยีสมัยใหม่ที่มีความล้ำหน้ามาก เพียงกดคลิกแค่ไม่กี่ครั้งก็ทำงานสำเร็จแล้ว ทำให้หลายๆ คนไม่ได้ให้ความสำคัญกับการศึกษากระบวนการการทำงานของคอมพิวเตอร์เท่าไรนัก

แต่ใครจะไปรู้ว่าการเข้าใจหลักการทำงานของคอมพิวเตอร์ และวิธีการเขียนโปรแกรมจะช่วยฝึกให้เราเข้าใจกระบวนทัศน์ของสิ่งต่างๆ รอบตัวได้อย่างลึกซึ้ง และทำให้เราสามารถถ่ายทอดการทำงานของสิ่งต่างๆ เหล่านั้นได้อย่างเป็นขั้นเป็นตอน การเข้าถึงแก่นแท้ของสิ่งต่างๆ ยังช่วยทำให้เรามองเห็นภาพรวมของสิ่งนั้นๆ ได้อย่างชัดเจน และเมื่อมีปัญหาเกิดขึ้น ยังสามารถแก้ไขปัญหาได้อย่างมีประสิทธิภาพ นอกจากนี้ในยุคที่มีการแข่งขันสูง ความรู้ด้านการเขียนโปรแกรมยังช่วยสร้างความแตกต่างให้กับผู้เรียน พัฒนาผู้เรียนให้เป็นผู้นำด้านนวัตกรรมใหม่ๆ และช่วยผู้เรียนให้สามารถสื่อสารข้ามพรมแดนและวัฒนธรรมได้ ด้วยภาษาคอมพิวเตอร์เป็นภาษาสากลที่ทุกคนทั่วโลกเข้าใจตรงกัน

 

 

 

การเขียนโปรแกรมคืออะไร

“ผมคิดว่าการเขียนโปรแกรมที่ดีไม่ต่างอะไรกับงานศิลปะชั้นเลิศ เพียงแค่คุณเริ่มมีแนวคิดในการเขียนโปรแกรม คุณก็กลายเป็นคนที่เก่งขึ้นได้แล้ว เพราะคุณจะต้องเรียนภาษาต่างประเทศ คณิตศาสตร์ และฝึกการอ่านไปโดยปริยาย” แจ็ค ดอร์ซี่ ผู้ก่อตั้งแอพพลิเคชั่นทวิตเตอร์

การเขียนโปรแกรม หรือ การเขียนโค้ด คือการกำหนดรูปแบบและลำดับขั้นตอนในการทำงานให้กับคอมพิวเตอร์ผ่านชุดคำสั่งที่เขียนขึ้นโดยมนุษย์ โดยอาศัยภาษาที่พัฒนาขึ้นเป็นตัวสื่อสารระหว่างมนุษย์กับคอมพิวเตอร์ เช่น ภาษา PHP, JAVA, C, ASP, VB,Python ซึ่งมีลักษณะคล้ายคลึงกับภาษาของมนุษย์ นั่นคือมีโครงสร้างและรูปแบบภาษาเป็นของตัวเอง โดยภาษาแต่ละชนิดจะมีการใช้งานที่แตกต่างกันออกไปตามจุดประสงค์ของการใช้งาน

ตัวอย่างภาษาคอมพิวเตอร์ที่ได้รับความนิยมในปัจจุบัน

เกร็ดน่ารู้ จาวา เป็นหนึ่งในภาษาคอมพิวเตอร์ที่ได้รับความนิยมมากในปัจจุบัน พัฒนาโดยเจมส์ กอสลิ่ง นักศึกษาปริญญาเอก คณะวิทยาศาสตร์คอมพิวเตอร์ มหาวิทยาลัยคาร์เนกี้ เมลล่อน ในปี 1983

ถ้าจะอธิบายให้ชัดเจนยิ่งขึ้น การเขียนโปรแกรมคือการพัฒนาชุดคำสั่ง พร้อมโค้ดโปรแกรมของซอฟต์แวร์นั้นๆ (Source Code) โดยมีอัลกอริทึมเป็นตัวกำหนดลำดับขั้นตอนในการทำงาน เหมือนกับการทำอาหารที่จะต้องมีวัตถุดิบและอุปกรณ์ พร้อมสูตรและวิธีในการทำ หรือการเดินออกไปนอกบ้านที่อาจจะมีคำสั่ง “ถ้า/แล้ว” ในหัว เช่น ถ้าแดดออก จะใส่แว่นตากันแดด หรือถ้าแดดไม่ออก จะไม่ใส่แว่นตากันแดด เป็นต้น

การเขียนโปรแกรมคอมพิวเตอร์ ทำให้ความคิดและการปฏิบัติกลายเป็นรูปเป็นร่างมากยิ่งขึ้น การทำให้ความคิดซึ่งเป็นนามธรรมกลายเป็นรูปธรรมนั้น ไม่ต่างกับการสร้างผลงานศิลปะ เหมือนเวลาที่ศิลปินถ่ายทอดเรื่องราวจากนามธรรมให้อยู่ในรูปบทเพลง หรือภาพวาด จึงไม่แปลกใจหากแจ็ค ดอร์ซี่จะกล่าวว่าการเขียนโปรแกรมคืองานศิลปะชั้นเลิศ

 

ทำไมเราควรเรียนเขียนโปรแกรม?

การเขียนโปรแกรมช่วยทำให้เราคิดนอกกรอบ และทำให้เราเห็นมุมมองที่แตกต่างหลากหลายในการแก้ไขปัญหาได้ ความรู้ในการเขียนโปรแกรมนำมาซึ่งแนวทางในการแก้ไขปัญหาที่สร้างสรรค์และมีประสิทธิผล การเขียนโปรแกรมยังช่วยพัฒนาระบบความคิด ทำให้เราสามารถคิดอย่างเป็นระบบระเบียบ เป็นขั้นเป็นตอน และมีหลักการและเหตุผล ผู้เรียนเขียนโปรแกรมจะมองปัญหาออกเป็นหน่วยย่อย ทำให้เข้าใจปัญหาได้ทั้งองค์รวมและในรายละเอียดปลีกย่อยได้อย่างลึกซึ้ง

ระบบความคิดที่เป็นขั้นเป็นตอนและมีเหตุผลนี้ เรียกอีกอย่างว่าการคิดเชิงคำนวณ หรือในภาษาอังกฤษเรียกว่า  “Computational Thinking (CT)” แม้จะมีคำว่าคอมพิวเตอร์อยู่ด้วย แต่ระบบความคิดดังกล่าวไม่ใช่วิธีการคิดของคอมพิวเตอร์ตามชื่อเรียก แต่เป็นกระบวนการคิดในการแก้ไขปัญหาต่างๆ ของมนุษย์ ที่สามารถนำไปประยุกต์ใช้ในการแก้ปัญหาในสาขาวิชาอื่นๆ ได้ ไม่ว่าจะเป็น คณิตศาสตร์ มนุษยศาสตร์ ฯลฯ หรือแม้แต่การแก้ปัญหาในชีวิตประจำวัน ระบบความคิดนี้ยังช่วยสร้างแนวทางในการแก้ไขปัญหาด้วยตนเอง ช่วยให้เข้าใจปัญหาอย่างถ่องแท้ และช่วยฝึกความอดทนผ่านการลองผิดลองถูก จนกระทั่งหาทางออกได้สำเร็จ

เจเน็ต วิง อดีตอาจารย์จากภาควิชาวิทยาศาสตร์คอมพิวเตอร์ มหาลัยคาร์เนกี้ เมลล่อน ได้กล่าวถึงระบบการคิดเชิงคำนวณ หรือ Computational Thinking เอาไว้ว่าเป็นทักษะพื้นฐานสำคัญที่ทุกคนบนโลกต้องได้ใช้ โดยการคิดเชิงคำนวณเป็นกระบวนการคิดที่มนุษย์ใช้ในการแก้ไขปัญหา และการตัดสินใจในหลากหลายรูปแบบ ซึ่งบางคนอาจจะเรียกว่าแนวคิดนี้ว่าแนวคิดเชิงตรรกะ  หากผู้เรียนสามารถนำแนวคิดนี้ไปบูรณาการเข้ากับรายวิชาอื่นๆ ได้แล้ว จะช่วยให้ผู้เรียนสามารถเห็นความสัมพันธ์ของแต่ละวิชาที่เชื่อมโยงกันได้ วิธีการคิดนี้ยังสามารถนำไปใช้กับชีวิตประจำวัน โดยการเชื่อมโยงเรื่องราวและเหตุการณ์ต่างๆ ที่เกิดขึ้นบนโลก ทำให้เกิดมุมมองที่หลากหลาย และช่วยแก้ไขปัญหาต่างๆ ได้อย่างมีประสิทธิภาพ

ตัวอย่างของ   Computational Thinking ในชีวิตประจำวัน เช่น ถ้าเราต้องการทำแกงเขียวหวาน เราจะคิดแก้ปัญหาเป็นส่วนๆ (Decomposition) เราต้องซื้ออะไรบ้าง? เราต้องใช้วัตถุดิบอะไร? และเมื่อเราเดินเข้าไปในร้านค้าแล้ว หากไม่มีวัตถุดิบที่เราต้องการ เราสามารถใช้วัตถุดิบอื่นแทนได้หรือไม่? ถ้าหากสามารถหาแทนได้ แกงเขียวหวานของเรายังจะอร่อยเหมือนเดิมหรือเปล่า? และก่อนที่เราจะเดินไปที่แคชเชียร์ (Pattern Recognition)  เราจะต้องหยุดคิดก่อนว่าเราลืมหยิบอะไรหรือไม่? ถ้าลืม เราจะต้องเดินกลับไปหยิบให้ครบเสียก่อน วิธิการคิดอย่างมีระบบและถี่ถ้วนเช่นนี้ จะช่วยทำให้งานสำเร็จ และเมื่องานสำเร็จลุล่วงไปได้ด้วยดีแล้ว จะทำให้เราสามารถมองหาแนวทางการแก้ไขปัญหาใหม่ๆ (Algorithm Design) ที่ทำให้เราสามารถทำงานได้รวดเร็วมากขึ้น ง่ายมากขึ้น และประหยัดต้นทุนมากขึ้นในครั้งหน้าได้

 

สรุป Computational Thinking

1. เป็นทักษะที่ทุกคนควรเรียนไม่ใช่เฉพาะนักวิทยาศาสตร์คอมพิวเตอร์เท่านั้น

2. เป็นกระบวนการในการแก้ไขปัญหาโดยการสั่งให้คอมพิวเตอร์ทำงานและแก้ไขปัญหาตามที่ต้องการได้อย่างมีประสิทธิภาพ

3. เป็นวิธีการคิดที่ทำให้ปัญหาที่ซับซ้อนกลายเป็นเรื่องง่ายขึ้นและเป็นทักษะที่เป็นประโยชน์ต่อทุกสาขาวิชา ไม่เว้นแม้แต่ในชีวิตประจำวัน

ณ มหาวิทยลัยคาร์เนกี้ เมลล่อน นักศึกษาทุกคนจะได้รับการสนับสนุนให้เรียนวิชาการเขียนโปรแกรมเบื้องต้น เพราะมหาวิทยาลัยเชื่อว่า ศาสตร์ในการเขียนโปรแกรมไม่ควรถูกจำกัดเฉพาะในนักศึกษากลุ่มใดกลุ่มหนึ่งเท่านั้น เช่น นักศึกษาคณะศิลปกรรมศาสตร์ก็ควรได้เรียนเขียนโปรแกรมเช่นเดียวกัน เพราะความรู้ด้านการเขียนโปรแกรมจะช่วยส่งเสริมให้นักศึกษาคุ้นชินกับโปรแกรมคอมพิวเตอร์ อีกทั้งยังช่วยให้นักศึกษาสามารถถ่ายทอดแนวคิดและไอเดียให้เป็นรูปธรรมได้ ที่สำคัญไปกว่านั้นยังช่วยให้นักศึกษาสามารถนำความรู้ไปประยุกต์และสร้างสรรค์ผลงานศิลปะได้อย่างเป็นขั้นเป็นตอน และลึกซึ้งมากยิ่งขึ้น

การเขียนโปรแกรมหรือการเขียนโค้ด มีได้ตั้งแต่ระดับง่ายๆ เช่น การสั่งให้คอมพิวเตอร์พิมพ์ชื่อของเรา ไปจนถึงระดับแอดวานซ์อย่างเช่น การทำ AI หรือปัญญาประดิษฐ์ แต่ไม่ว่าจะระดับไหน ความรู้เบื้องต้นด้านการเขียนโปรแกรมและการเขียนโค้ดเป็นทักษะที่เป็นประโยชน์ต่อทุกคน จึงไม่แปลกใจว่าทำไมสตีฟ จอบส์ถึงได้กล่าวว่าทุกคนควรเรียนเขียนโปรแกรม

References
  • https://www.codetoday.co.uk/single-post/2018/07/25/Steve-Jobs-1995-%E2%80%9CEverybody-should-learn-to-program-a-computer-because-it-teaches-you-how-to-think%E2%80%9D
  • https://www.cs.cmu.edu/~15110-s13/Wing06-ct.pdf
  • https://medium.freecodecamp.org/a-gentler-introduction-to-programming-1f57383a1b2c

Written By: