Programming is not for everyone
Recently in the community of techies, the idea that everyone should learn programming is gaining momentum . But there is one problem: programming is not new literacy.
If you periodically pay attention to the culturological frauds of Silicon Valley, you have undoubtedly heard about the “Learn to Code” movement. Politicians, non-profit organizations like Code.org , and even the former mayor of New York, Michael Bloomberg, are promoting what they see as a skill that will soon be needed by the entire working population.
Perhaps this is partly true.
But the real picture is somewhat more complicated.
We live in a supercompetitive world in which people resort to any means, just to make ends meet. And it is completely dishonest to sell programming as a ticket for economic salvation for the masses.
Take bootcamps for programmers. The success of software engineers from Silicon Valley has become an example to follow, into the mainstream, and today many people dream of creating a startup or becoming an engineer. HBO channel shows us programmers who are under thirty, who fill the code at night, while earning millions of dollars. The American public is fascinated by such characters as Elon Musk and Mark Zuckerberg, who seemingly make fortunes overnight. The programming fever has even penetrated the White House, and President Obama is being pushedto include computer science in the general education program.
And for an inexplicable reason, not only bootcamps and politicians encourage people to learn how to program.
A powerful chorus of voices echoes this idea from all walks of life, from Hollywood to the stars of science and technology. But despite this growing euphoria, I have great skepticism about all these bootcamps. Although a very attractive image of Silicon Valley has emerged in our culture, and the glossy bootcamp brochures promise a well-paid job, many of these organizations are not accredited, they do not publish job statistics and do not care about the employment of their graduates. Yes, there are quite a few bootcamps that enter into agreements with employing companies, but much more than those that are managed by marvelous panacea vendors who profit from the despair of average Americans.
Don't get me wrong: I'm sure that programming and development skills are really important. But only in the appropriate context, and only for those people who are ready to succeed in this matter with their blood and blood. The same can be said about many other skills. So I urge everyone to learn not to program, but to dive deep into the subject.
If all the attention is focused on the code, then the task of choosing the “right” method for solving a problem overshadows the importance of understanding the problem itself.
Before we start working on a software solution to any problem, we must decide what it is, and whether it is a problem at all. If we allow ourselves to dwell on its solution with the help of code, regardless of whether this problem is related to programming or not, we will lose sight ofreason , then we won nothing. I have a close friend from Stanford, who once became the winner of the international programming championship of the Association of Computing Machinery. And he says that the most important thing that he learned during the championship is the need for a deep understanding of the problem that you are trying to solve.
You must ask yourself "Is there a problem?" And "Can the Feynman-Taft principle be applied to explain this problem so that others can understand you?"
My friend told me that even in elite schools, students only read a task describing a problem once, and then they immediately start writing code. That year, when my friend won the championship, he learned that even these elite students rush to solve complex problems using a single tool - programming. And he wrote the code only after he carefully considered the task. Almost all the time allotted to solve the problem, he spent on thinking. And he began to write code only a few minutes before the end.
He became a champion.
He knew that the task was not solved by a hurried set of code, it was necessary to approach the solution in cold blood and collected.
Excessive attention paid to the code set does not take into account the difficult situation in which modern developers find themselves.
In this industry, technology changes rapidly.
Just a few years ago, I used Objective-C, and now I write exclusively on Swift. Today, developers are looking for work that have not written a single line in Objective-C. Swift is easier to learn, safer, it uses modern development paradigms, and it is much more elegant than Objective-C. It's great that new developers haven't had to deal with the flaws of Objective-C, but here the harsh realities of the profession are not taken into account.
Developers should learn quickly, with minimal control and with a little more motivation than the roar of the firing guillotine. Someone will say that this is only one of the costs of the profession. But if modern developers get frustrated and start falling behind - and there are enough signs that this is the case - then why inspire people to get involved in all this uncertainty? What happens to a man who studied Objective-C day and night only to be horrified at the announcement of Swift at WWDC 2014? Will they continue to program on what is quickly becoming a low-demand language, or will they start all over again? If you are under thirty, you are unlikely to run into big difficulties. But if you need to feed your family and pay bills, then this turns into a titanic task.
In such situations, people face all of these difficulties without having a deep knowledge of programming or design.
If you study programming, it will not be easy for you to start making money with it.
I spent more than a year on self-study before I could become a freelancer. And the earnings were low. I failed countless interviews because I didn’t have a degree in programming.
There were times when I had nowhere to live, and had to rely on the kindness of friends. There were many nights when I wanted to quit it all. But I found the strength to continue.
It was - and there is - perseverance, it was she who allowed me to stay in this area.
The truth is that you can not just take it and do the development, even as an intern. You will need connections, people who will vouch for you, you will need to maintain an account on GitHub, and much more. Despite the improvement in the situation of equality of opportunity, if you belong to an underrepresented minority, then you need to initially be twice as good as everyone else. And this is just to withstand the competition.
Guardians and gatekeepers are everywhere. This is “ Ivy League Alumni"Who believe that with questions like" How do you invert a binary tree "can someone appreciate the technical knowledge of someone. These are project managers who love to arrange tests using a marker board (I confess: I have several boards), and endless HR managers who make up job requirements like “5 years of Swift programming experience” (hint: Swift appeared in 2014). All of these people one way or another will stand in your way to decent work.
As far as I know, they will not be able to circumvent them, they will have to play by their rules, even if these rules are dishonest.
If you really want to become a software engineer, then don't let me - or anyone else - get in the way of your goal. And do not let you interfere with all sorts of traditional restrictions, such as the education system. There are no right and wrong ways to achieve your goals.
But at the same time do not lose touch with reality and do not fall under the charm of the romance of Silicon Valley. This is not a wonderful tool that will save you from debt. You will have to get used to the idea that you are the one who solves problems, and not just the developer of “fill-in-from-to-to-these”. You must also accept the fact that at any time you may need to learn a new framework or programming language, and if you do not have formal diplomas, then you will have to fight to get a job.
Software development is a profitable business, but it will be very difficult to transform from the “coder” to the “engineer”.
If you show perseverance, you can change not only your life, and the whole way of thinking.