Live data from Hacker News

Learn to Code, It's Harder Than You Think

mikehadlow.blogspot.com

121–130 of 197 posts

Re: Learn to Code, It's Harder Than You Think

#121

" The majority of the population can not learn to code at all, no matter how much training they receive." What an arrogant, false, and self-aggrandizing fiction. Stop over-valuing yourself -- coding isn't some ultra-difficult natural selection process equivalent to winning an NBA Championship. Designing complex services, scaling and maintaining them on a server stack is hard. Developing, training, and shipping a usef…

First, I agree that the statement presumes a lot without offering any evidence. Second, I essentially agree with it; I believe most people cannot code and can't be taught it.

Coding requires a turn of mind that at least half of the population lacks: abstraction. You must be able to map a problem space into a form that is amenable to decomposition and solution using data and instructions. I think most technically inclined folks would be surprised how many smart people lack this ability (like doing basic high school math). Many others lack basic skills in logic, or the ability to define a reliable procedure. (I say this after 60 years of life, working in both white collar and blue collar settings). It's not that these people are stupid. Their minds just don't welcome abstract thought and the hierarchy of formal sequential models that is code.

In my experience, the set of skills peculiar to writing software well is surprisingly uncommon.

Re: Learn to Code, It's Harder Than You Think

#122
post #84

Earlier quoted context omitted.

The way it usually works is you get a job doing non-primarily coding stuff at a company that has also has programmers, and then get shifted to a development job when people figure out you can code.

Meh. I've never seen that work for actual software development, but I guess it depends on where you work/what sort of job you do. I've seen it work for sdets though so who knows.

Err, SDET _is_ a professional software developer. It's in the title!

Working in a non-development group doesn't somehow make you not a software developer.

Re: Learn to Code, It's Harder Than You Think

#123
I'm a bit torn on this one. Some languages and concepts are harder than others. Some people are more visual than others. Some people would excel in low level languages where others would excel doing front end web dev where things are a bit more visual and often a bit less abstract.

The biggest thing with coding is finding something you like... Passion is the key here. Some things will come easier than others but if you're passionate, even if you're not a bloody genius and it takes you many times before you get something, you'll spend enough time and eventually get it. And over time you'll get better and better.

In 12 years working in the field I can say I've worked with a fair amount of devs. I've worked in very small software companies, medium sized companies and fortune 500 companies. I've worked with self taught devs and people with degrees. The biggest difference between someone who's great at their job and not is not the education but the passion. Its not even the book smarts. Some people are smart as hell but just aren't passionate and don't enjoy what they do at all. Every year your job feels a bit different. Languages evolve, technologies evolve, libraries and frameworks evolve. You're constantly working with new things. Some don't feel 100% different, others do. Once you've learned a bunch, some new concepts are very easy to grasp. But at the end of the day, if you hate it, you probably won't keep up and will quickly be obsolete. Most new jobs will require a lot of learning. If not new languages then new processes, infrastructure, code bases, etc. If you're passionate enough to keep learning and patient enough to spend the time it personally takes you to grasp concepts, then you can learn.

Its not for everyone. True. But not everyone will be developing physics engines for games or deep learning algorithms.. Some coding skills are easier to grasp than others and most people can, given time, become decent at some of it.

Re: Learn to Code, It's Harder Than You Think

#124

" The majority of the population can not learn to code at all, no matter how much training they receive." What an arrogant, false, and self-aggrandizing fiction. Stop over-valuing yourself -- coding isn't some ultra-difficult natural selection process equivalent to winning an NBA Championship. Designing complex services, scaling and maintaining them on a server stack is hard. Developing, training, and shipping a usef…

Coding stuff that works 100% of the time in a budget constraint is not solely about being up to date in useless new technologies.

Using the world "stack" in your assertion is just showing a belief in the idea there is a silver bullet that can help you do 90% of the job in 10% of the time. And following that idea the 10% remaining I guess maybe shot dead with some agile process.

However, it is not the case when the specifications are clearly having ambiguous non resolvable issues.

Your stack sux big: the cloud, the OS the internet itself have design flaws. Each of this layers in the stack is adding coupling (requirements), costs, surface of vulnerabilities uncertainties (thus diminishing SLA).

Building a complicated architecture by taping a stack is easy. You just hire 23 yo coders saying they can solve any NP problems because o notation are old, thus boring, thus deprecated. And then you have your never ending shiping date coming until your "new feature of death that is based on an un solvable problems" will not ship.

Thus, a cost matrix for True,False/positive,negative like in signal processing used for assessing costs of software is still a freaking good idea. But it is hardly self taught.

Related to this is QA. Measuring non conformities and their costs. This part is the most overlooked. It is where business is done. Non conformities are non predictable by nature, but my experience is that during the lifecycle of an application that is where most of the money is spent. It is hardly self taught. Part of a boring curicurlum.

Petri diagram (State-transition diagram): I met no coders able to read or write them, especially in asynch programming. And they love to add states (for each new states there is n + 1 new transitions possibles added to the diagram). Part of the education in electronics.

Documentation: new developers don't know how to write or read. A craftsman provides words with definitions. Coders don't care to properly put down definitions: it is too waterfall/ISO/ITIL heavy processes. Believe I had to fix a code where a developer confused a shit of paper with a page increasing costs by 2 for customers. Reading and writing in french and english where mandatory in my university. And it was boring.

Legal: IP does not say copy pasting code from internet to put it in your code is OK. For instance code on stackoverflow is not open source. You cannot do free sofware on your work time and claim it belongs solely to you without any explicit agreement from employers. IP requires teaching.

Actual coders jumping from one technological sect to the others (RDMS, node, GO, nosql, async, OOP, functional, POSIX, unikernel, container) are nothing else than monkeys or mechanical turks.

I refer to Feynman what is science essay regarding the monkeys. Being able to make a 100$/month web server make a nice hello world in angular JS is not what makes economy better. Building is a thought process that must encompass the investment, the costs of operations, the time to market, the legal and financial risks, the control of defects and the measure of the conformity with the requirements.

IT has became a religion where consensus prevails on the technological tools being the solution. Forbidding an in depth analysis that would be conflictual about the adequation between what people wish (being coder to pay the bills because we are lacking of jobs and it is well paid) and what the economy needs (stuff that works better for less bucks).

Yes being a programmer is either being born by luck in an aristocracy that need no excuse or a fraud that needs to secure is paycheck by pretending to have an added value.

Remember people are having student loans. They have an incentive to perseverate in a way they constantly fail.

People are not altruistic by nature when it comes to their own beefsteak (or tofu). Education bubble is creating a toxic situation for which corporations are not the answer (who will watch the watchmen?).

We have over instructed (in technology) under educated (in humanity and science) masses of students that sux because their abilities to speak, write, reason and communicate is hindered by a deficient education that forget to make them think and argue like grown ups.

It is not an IT bubble we are facing, it is an education bubble that takes its roots in the 1980s and for which the future of yet 3 generations is engulfed both in debt (public in Europe, private in the USA) and in failures (high unemployment rates because organisational structures did not adapt to the qualification like toyota did).

Education is not a good. It is a necessity for a sane society. And modern education fails at delivering adequate citizens. However it delivers numerous cheap incompetent interchangeable obedient workers preventing a power struggle inside the structures.

Saying NO to bullshits is the first added value of a coder. And saying NO when everybody says yes is disruption, it can lead to innovation and progress.

At least hire me, it leads to less costs (KPEX and OPEX) :)

PS I do have too much time.

Re: Learn to Code, It's Harder Than You Think

#125
The article's main point is solid: Learning to code is hard mostly because coding is hard -- not just because there aren't enough learning opportunities and not just because we aren't welcoming enough. And learn-to-code merchants who say "Coding is easy!" are a bit untruthful in the infomercial kind of way. As those of us who do it professionally know, coding is often tear-your-hair-out difficult. Misery loves company! :-)

That said, I have two problems with the article.

#1 - I don't like the idea of qualifications. Sure, the lack of career-path guarantees sucks, but that anarchy also benefits us. If I can get my hands on a computer, I can learn to code on my own (with lots of hard work, yes), build what I dream of, change my life. I can sidestep red tape, bias, prejudice, and credentialism that might work against me elsewhere.

#2 - I dislike the vague word 'aptitude', which the author uses many times. The idea of 'aptitude' may help distinguish Mozart from Salieri, but not Salieri from his cousin Fred. What I mean is, at the level most of us operate at, mightn't factors like motivation, persistence, and health affect us more than 'aptitude'? If the article replaced the word 'aptitude' with 'motivation' I'd like it better.

Re: Learn to Code, It's Harder Than You Think

#126
post #25

Earlier quoted context omitted.

> I liken coding to playing a musical instrument. Except with a musical instrument, anybody can judge whether you are good at it. Not so with programming. Everybody who ever wrote one line of HTML can call themself a programmer, but only trained people can tell whether you are a good one. You might say at this point: so what? But I think the distinction is important, because it may be the reason the "driving force" i…

Counterpoint, I can knock out a first class "Stairway to Heaven" in the local electric guitar shop simply by remembering where my fingers should be but not having any clue about what chords and notes they are. Can I be judged to be an accomplished musician upon that sole rendition?

No, definitely not. But you could certainly get a few others together, start a band, play some gigs, maybe even make a little bit of money.

Re: Learn to Code, It's Harder Than You Think

#127
Does anybody else think that Software Engineers might benefit from a master/apprentice learning style?

Experienced devs could take on an apprentice for a year, kind of like an internship, and the apprentice moves does 3-5 of these before moving into a dev role themselves.

Re: Learn to Code, It's Harder Than You Think

#128

>All the evidence shows that programming requires a high level of aptitude that only a small percentage of the population possess. >The current fad for short learn-to-code courses is selling people a lie and will do nothing to help the skills shortage for professional programmers. Outside the obvious lack of definition as to what a "programmer" actually is, this is a non sequitur (the conclusion doe not follow). Ther…

The lie they are selling is that anyone can learn to code in 10 weeks. While this maybe true if you are targeting the correct subset of the population (those who do have a natural aptitude), it's not true of a random sample of the entire population. Since these schools sample from the entire population, their chances of producing large numbers of skilled software developers are low, and therefore they will do little to help with the shortages of those developers.

Sounds like a reasonable argument to me.

Re: Learn to Code, It's Harder Than You Think

#129

Hard programming is harder than you think. Coding schools are mostly teaching CRUD web development and a watered-down version of data science aimed at business analysts, which isn't that hard. You're not going to get folks lining up to take an embedded systems, graphics, or compiler bootcamp.

Web development (it's more than just CRUD) is hard. Even with the best web development framework, the state of the art in tooling, you're looking at at least a year of focused study before really being able to take a job. It doesn't require hard math, but it's still hard in that the sheer number of languages, tools, best practices, technologies is daunting. And they keep changing. My father is an electrician, after l…

> I've seen devs who were perfectly comfortable with all the math and "real dev" practically break down when presented with a web project. More than one of them admitted to me after beating their heads against it for a few weeks that it was harder than it looked.

Because they haven't done it before.

Hard because you have to learn the framework of the week, deal with shitty tooling, and leverage design skills you haven't ever really had to develop is a very different thing than hard because you have to design and build a complex system with strict requirements and intractable problems.

Re: Learn to Code, It's Harder Than You Think

#130
A lot of the observations in this article are very interesting, but personally, I drew different conclusions.

The first one is the main thesis of the post which is that some people have an innate ability to program that others do not possess, and that this is a thing that cannot be learnt. As a result, telling people that it is "easy to code" is a lie.

Firstly, it is actually not clear to me that this ability to pick up programming principles cannot be taught. All we know is that our current methods of teaching yield a double hump distribution for programming ability.

Secondly, if people were actually saying "you will find coding easy" to anyone and everyone then I agree that they are probably concealing the truth. But actually, if you read the tagline on the example given (The Year of Code initiative) it says:

> Start coding this year, it's easier than you think.

"It's easier than you think" (emphasis mine). This is quite a different statement to a flat out "it's easy", and it's one I agree with. To most people, coding appears difficult because they simply don't know the answers to a few key questions (E.g. Where do I write the code? What do I do to run my code? How does the computer understand what I've written?). The (basic) answers to these questions are comprehensible to most people, and furnish them with the ability to write code (maybe not well, but that's a whole other story).

Next observation:

> Folks, which industries/professions give up their own free time to provide free/open training to people wishing to enter the sector? Curious

The fact that only the software development industry seems to do this is painted as a negative thing in the article. Why is that? I ask because this is a fact I think we should be proud of. I personally enjoy what I do so much, that I happily spend time out of my week, teaching it to others for free. I don't do this because I think all the people I teach will go on to become successful software engineers, but rather because I want to widen the net, and expose more people to what we do, because for some of them (maybe even just one of them) this might be their "true calling".

I got into programming originally from watching a cousin of mine editing the themes of his Wordpress blog. He went on to study English Literature and Psychology; To him, coding was just this tool that allowed him to publish his views, but to my 9 year old self, watching him, it really struck a chord and I was hooked. Now, there is not a thing in the world I could imagine myself doing rather than writing code and loving every minute of it (And no amount of "social status" is going to turn me to a life of law, medicine or architecture). What an opportunity I would have lost if I had not seen my cousin working on his blog... Every week-long learn to code course, and every "hour of code" initiative works towards bringing such opportunities to the wider public.

Finally, on the role of Computer Science degrees: I am currently in my final year of a Masters in CS, which I have also enjoyed studying immensely. I would not say that it has contributed directly to my skills as a software engineer, but the things I have learnt have changed the ways in which I approach problems. Very few people write structural induction proofs, loop invariants or abstract specifications to prove the correctness of their programs, but I have found them to be great ways to think about how to write better code. These skills, however, are complementary to those that make a good software engineer, not a substitute. There's no way to prove yourself out of a rat's nest of class hierarchies and control structures.

Post reply on HN