The problem I have with the "just learn to code" crowd is that there's a huge gap between being able to write "for" loops and programming.
Take data representation as an example. In school one of my professors used to harp all the time that data representation is, in his view, the most important aspect of programming. He'd say something like: "Pick the wrong data representation representation and you can make a simple project into a nightmare to write, maintain and extend".
Programming is about having an arsenal of non-language-specific concepts come to your fingers as you think about the problems you are trying to solve. Data structures, algorithms, data representation, design patterns, optimization, tool selection, workflow, etc.
This is particularly true today when a programmer might have to be comfortable with half a dozen languages in order to create "a simple website" or a mobile app.
Yes, anyone can learn to code. Programming and building non -trivial products takes time, experience and lots of hours making lots of mistakes while you continue learning.
By all means, go and learn. Anyone can do it given time and dedication. I just don't agree with articles that seem to imply that an art student can go out and buy one of those "learn in 21 days" books and become a programmer. Not how it works.
The intent of the "learn to code" sentiment is not actually to turn business people into 95th-percentile engineers, but rather to acquaint them with the particular challenges of the discipline. This helps them understand the engineers they are trying to manage, and better command their respect.
As for "how much is enough", I would suggest that you should be able to hack together a prototype of whatever product you're trying to build. It doesn't have to be pretty, just show the interaction.
I think with the tools available today, most people should be able to go from zero to something workable in six months or so.
I disagree with the notion that there is a huge gap.
I originally learned to program via QBasic in 21 days. DOS in 21 days. VB 6 in 21 days. ASP in 21 days. Borland C++ in 21 days. HTML 5 in 21 days. PHP+MySQL in 21 days.
Because that's what we had! The books came with CDs of code examples and compilers you could try that worked on windows. And by the end of the book, you had a working chat program.
Was it great code? Secure? Scalable? Efficient? We'll never know because that code is long gone. But I wrote quite a few chat servers, hit counters, and dentists' websites back in my day.
And that is basically what "Learn Python the Hard Way" is. Teaches you the basics, builds up to some neat little projects, and since most of the software problems in the world are variants on "how do I loop through a list of blog entries and display it in a table" then I am not convinced that this is a complex enough problem that 21-dayers can't come up with a good data representation.
For the vast majority of us who will never ever face scaling problems, not understanding the cost of a hash table lookup is perfectly okay for an MVP.
The stuff you learn in school is completely valuable. But sometimes I feel like the things I learned (caching algorithms, design patterns, etc) put me in a mode of "spend a lot of time trying to architect" rather than "building something that works and upload to github."
"Just learn to code" emphasizes the latter, and I think that is a good thing.
I have hired programmers who "learned in 21 days" just to be open minded. Never again. I am NOT elitist. I am not saying that a CS degree from a top-level university is necessary. Not at all. I've worked with college dropouts that can run circles around PhD's. No question about it.
No, what I am saying is that becoming a good programmer requires a lot more than what is covered in these 21 day books. To be clear, I don't want to pick on those books, I've used them myself and they are excellent. However, I come at it with twenty years of having worked on everything from assembler to, well, all kinds of languages.
It's one thing to be able to to hack at a language. It's quite another to be a good programmer, regardless of what language you happen to have to use.
It's the difference between Luke flying the Starfighter with instruments and using the Force. One focuses on the mechanics, the other just flows through you.
But an MVP doesn't need to be a flashy, polished product; nor does it need to scale or perform well or automate everything for the user or do any of the things we would expect out of an alpha- or beta-quality product. It just needs to solve a problem that people have and work.
You don't need to be a seasoned hacker to throw together some desktop/mobile frontends in a free trial of Dreamweaver, put that on EC2, design a barely functional data model in phpMyAdmin, and glue the whole thing together with hacked up PHP. Hell, you could even get most of the way there without touching code at all before hiring a freelancer to take you the last mile (if you can't make a Dreamweaver mockup and a relational data model – even if they both suck – then you have no business being in charge of any product, much less an entire company).
After you've earned some traction from people who are willing to use your product, in spite of its inefficiencies, because it succeeds at solving a legitimate problem for them – that's when you'll have a shot at convincing me to quit my day job in exchange for 30% of the company.
MVPs can be rewritten from scratch after it's been demonstrated that the product is worth creating in the first place.
I used to think I wanted to be technical. To an extent I still want to, but that approach didn't work out for me.
Whenever I hear "just learn to code," the rationale is totally wrong. As you said, anyone can code, but to expect a non technical guy to learn and maintain a product can be unreasonable in some cases (the blog posts section on MVP and simplifying your product can only go so far in some cases). The true value in learning to code is gaining an understanding of whats involved in the process. No matter how minute the experience is, anything at all can help
Ugh, "learn to code." That's lame advice. Seriously, its like saying "you don't need someone to write your first round financing document, just learn to be a lawyer."
I'd still be figuring out the hello world tutorial if I'd listened to this guy. I can understand code just fine, but making code actually work is beyond me, and I'm not going to wait around on my start-up when I can befriend someone and get it up and running in 1/10 of the time.
Take data representation as an example. In school one of my professors used to harp all the time that data representation is, in his view, the most important aspect of programming. He'd say something like: "Pick the wrong data representation representation and you can make a simple project into a nightmare to write, maintain and extend".
Programming is about having an arsenal of non-language-specific concepts come to your fingers as you think about the problems you are trying to solve. Data structures, algorithms, data representation, design patterns, optimization, tool selection, workflow, etc.
This is particularly true today when a programmer might have to be comfortable with half a dozen languages in order to create "a simple website" or a mobile app.
Yes, anyone can learn to code. Programming and building non -trivial products takes time, experience and lots of hours making lots of mistakes while you continue learning.
By all means, go and learn. Anyone can do it given time and dedication. I just don't agree with articles that seem to imply that an art student can go out and buy one of those "learn in 21 days" books and become a programmer. Not how it works.