Basel Farag is an iOS Engineer (he thinks). Besides GPU processors, robits and AI, Basel enjoys learning about computer science, astronomy and philosophy. He was once referred to as "the Daft Punk of people," a phrase whose meaning eludes him to this day, but which he's pretty sure is a compliment.
There’s an idea that’s been gaining ground in the tech community lately: Everyone should learn to code.But here’s the problem with that idea: Coding is not the new literacy.
If you regularly pay attention to the cultural shenanigans of Silicon Valley, you’ve no doubt heard of the “Learn to Code” movement. Politicians, nonprofit organizations like Code.org and even former Mayor Michael Bloomberg of New York City have evangelized what they view as a necessary skill for tomorrow’s workforce.
There may be some truth to that, especially since the United States’ need for engineers shows no sign of slowing down.
But the picture is more complicated.
We live in an ultra-competitive world, with people turning to all sorts of methods to make ends meet. Selling coding as a ticket to economic salvation for the masses is dishonest.
Take coding bootcamps. Since the mainstream learned of the success of Silicon Valley software engineers, everyone wants to own a startup or become an engineer. HBO’s Silicon Valley paints a picture of late twenty-somethings spending their nights coding and smoking weed, all whilst making millions of dollars. The American public is amazed by figures like Elon Musk and Mark Zuckerberg, who make millions seemingly overnight. Coding fever has even reached the steps of the White House, with President Obama pushing forlegislationto include computer science in every public-school curriculum.
Inexplicably, it is not just bootcamps and politicians encouraging people to learn to code.
Individuals are actively encouraged to do so from all sides of society, from Hollywood to current tech luminaries. Despite this growing buzz, I view bootcamps with intense skepticism. While our culture tends to make Silicon Valley sexy, andglossy bootcamp brochurespromise well-paying jobs, the truth is that many of these institutions are not accredited, do not post job statistics and do a poor job of ensuring their students’ post-bootcamp success.While many codingbootcamps are legitimateand care for their pupils, an even greater number are run by modern snake-oil salespeople tapping into the average American’s desperation.
I would no more urge everyone to learn to program than I would urge everyone to learn to plumb.
Don’t get me wrong; I do believe that engineering and programming are important skills. But only in the right context, and only for the type of person willing to put in the necessary blood, sweat and tears to succeed. The same could be said of many other skills. I would no more urge everyone to learn to program than I would urge everyone to learn to plumb.
Focusing on coding inflates the importance of finding the “right” method to solve a problem rather than the importance of understanding the problem.
Before we start working on a solution to a coding problem wemust decide what the problem is — and if it’s truly a problem. If we let ourselves become fixated on how to solve a problem via code, regardless of if it is a programming problem or not, and lose sight of why, we gain nothing.
I have a close friend who is a formerAssociation for Computing Machinery International Collegiate Programming Contestchampion from Stanford. The greatest thing he taught me about his ACM championship days was the importance of understanding what problem you’re trying to solve.
You must ask yourself, “Do you even have one?” and “Can you apply the Feynman principleand explain it in a way that others can understand you?”
This friend told me that even in the elite schools, students read the prompt to the coding problem only once then immediately code.
The year my friend won the championship he learned something: even those from elite schools dove headfirst into complicated problems, with code as their only weapon.
Meanwhile, my friend wrote his code only after thoroughly understanding the problem. He used almost allthe allotted time to think about the problem. He did not write code until minutes before the deadline.
He became a champion.
He knew that banging out code would not solve the problem, but cool, collected problem solving would.
An excessive focus on coding ignores the current plight of existing developers.
Technology changes at a rapid pace in this industry.
Just a few years ago I was using Objective-C; now I code almost entirely in Swift. There are iOS developers applying for jobs right now who have never written a line of Objective-C. Swift is easier to learn, safer, uses modern development paradigms and is elegant in a way that Objective-C never was. The fact that new developers will never deal with Objective-C’s deficiencies isgreat, but it ignores the reality of the profession.
Don’t lose sight of reality while being charmed by our culture’s Silicon Valley romance.
Developers are expected to learn fast, with little guidance and little more incentive than the faint rattling of the pink-slip guillotine. One could argue that this is simply one of the costs of the trade. But if current developers are frustrated or falling behind — and there is evidence that shows thisis the case —why encourage individuals to enter such an uncertain realm?
What happens to the person who spent night and day studying Objective-C only to be horrified by the Swift announcement at WWDC 2014? Do they keep coding in what is quickly becoming the language of lesser choice, or do they start again? If you’re a young twenty-something, this may pose little difficulty, but if you’re taking care of a family — with bills to pay and mouths to feed — the task becomes Herculean.
People in these situations confront all of this without a solid grasp of actual programming or engineering.
The line between learning to code and getting paid to program as a profession is not an easy line to cross.
It took me more thana year of self-taught study before I got a freelance gig. Even then, the pay was poor. There were countless times I was refused even an interview because I didn’t have a computer science degree.
There were times when I could not afford a place to stay and had to rely on the kindness of friends to keep me going. There were many nightswhen I wanted to give up. But I found the strength to keep going.
It was — and is — persistence that allows me to stay in this field.
The truth is, it simply isn’t easy to slide into a development gig, even if it’s an apprenticeship. You need connections, people to vouch for you, a GitHub accountmaintained over time and more. Despite advances in equal opportunity, if you’re an underrepresented minority, you’re going to have to be twice as good as everyone else. And that’s simply to demonstrate competence.
The gatekeepers are anywhere. They are Ivy League graduates who believe asking questions like, “How do you invert a binary tree?” is the best way to gauge someone’s technical ability. They are the whiteboard test-obsessed project managers (confession: I own multiple whiteboards) and the clueless HR managers who list requirements like, “5 years of Swift Programming Language Experience needed” in job postings (hint: Swift release = 2014). These people, for better or for worse, stand between you and a decent job.
As far as I know, there’s no other way to get past these people than to play their game, even if it is unfair.
If becoming an engineer is what you want, don’t let me — or anyone, for that matter — get in the way of your goal. And don’t let traditional confinements like the educational system slow you down. There are no correct or incorrect ways to go about achieving your goals.
But don’t lose sight of reality while being charmed by our culture’s Silicon Valley romance. This field is not a get-out-of-debt-free card. You have to take the time to build your understanding of the field. You have to become comfortable with the fact that you are a problem-solver and not simply a “fill-in-framework-here” developer. You also must get used to the idea that at any moment you might need to learn a new framework or language, and that you will have to fight for a job if you don’t have formalized credentials.
Software engineering is a lucrative field, but the transformation from “coder” to “engineer” is challenging.
If you stick to it, you can not only change your life, but change your entire way of thinking.
“Everybody should learn to program a computer, because it teaches you how to think.”Did Bill Gates learn how do you code? ›
Bill Gates said in his blog, that he used every free moment he had to learn how to code. He stated that the introduction to computer science has changed his life path and that it greatly influenced his way of thinking. “Questions that programming has taught you to ask- How do I solve a problem? Can I find a pattern?Did Elon Musk learn how do you code? ›
Elon Musk knows how to code. However, it is very obvious that he was never destined to become the best programmer in the world. If anything, Elon Musk was an above average self-taught coder that used his skills to propel his entrepreneurial career.How many people fail to learn code? ›
And that's why 99% of people have such a hard time learning to code. It's not because they're not smart enough or because programming is too hard. It's because they don't know how to use the most powerful tool at their disposal — the almighty search engine.What is a famous quote about coding and kids? ›
“Coding is the language of the future, and every girl should learn it. As I've learned from watching girls grow and learn in our classrooms, coding is fun, collaborative and creative.”What does the phrase learn to code mean? ›
The phrase “learn to code” was added to Know Your Meme four days ago, where it's described as “an expression used to mock journalists who were laid off from their jobs, encouraging them to learn software development as an alternate career path.” Part of the Know Your Meme entry explains that those posting the phrase “ ...Does Jeff Bezos know how do you code? ›
Yes, Jeff Bezos does know how to code and therefore can be called a 'programmer'. Like many CEOs of tech companies, Bezos was always what people would call a bit of a nerd. He was interested in computers and science from a young age. Even pursuing these interests throughout high school and university.How did Mark Zuckerberg learn to code? ›
Zuckerberg's passion for coding appeared at a young age. His father was a dentist though he undertook programming basics on Atari as a hobby; thanks to it, young Zuckerberg got involved into coding and received his first PC at as early as 9 years old. Since then, Mark had had private coding lessons.Who taught Mark Zuckerberg how do you code? ›
Mark Zuckerberg, Facebook Founder and CEO
Mark was in 6th grade when he started to code from the beginning it was clear he was talented. Mark's father hired a software developer called David Newman to tutor him privately. 'It was tough to stay ahead of him,' Newman told the New Yorker, describing Mark as a 'prodigy. '
How smart is Elon Musk compared to Albert Einstein? Elon's IQ is estimated to be around 155, while Albert Einstein's is 160.
At the age of 10, Elon Musk started learning to code on a Commodore VIC-20. Two years later, he sold the video game Blastar, which he had written in BASIC, for about $500. You can still play Blastar here!What coding language does Tesla use? ›
The Python programming language is well known for its flexibility and use in machine learning-based technology. Elon Musk's iconic company, Tesla, operates on an operating system built on the Python programming language.Is 25 too late to learn coding? ›
Whether you are making a career change or just want to learn something new, it is never too late to start coding! Discover the best ways to learn coding today.What is the hardest code to learn? ›
Malbolge is considered the hardest programming language to learn. It is so hard that it has to be set aside in its own paragraph. It took two whole two years to finish writing the code for Malbolge.Which code is the hardest? ›
- C++ As a subsection of C, C++ is a general-purpose programming language that big tech companies use, like Google Chromium and several other Microsoft functions. ...
- Prolog. ...
- LISP. ...
- Haskell. ...
“Everyone in this country should learn how to program because it teaches you how to think” – Steve Jobs.What is the quote about being programmed? ›
We've been programmed, from the time that we were very, very little, about what we can't do - about what is impossible. Perhaps catastrophe is the natural human environment, and even though we spend a good deal of energy trying to get away from it, we are programmed for survival amid catastrophe.Who said everyone should learn how to code it teaches you how to think? ›
because it teaches you how to think." —Steve Jobs.