To be clear: I know how tough it is to teach yourself how to code. When I was teaching myself as a kid there was no StackOverflow, no Code Academy, and no W3Schools. It was just me and my programming book, and either I figured out the problem for myself or I had to give up. It was really hard.
The point I was trying to make wasn't that you could become a master engineer in 6 months. That's absolutely untrue. The point I was trying to make is that you can teach yourself enough code in 6 months to build SOMETHING, to move yourself along far enough to get to the next level.
I know this is possible because I've seen people do it. One of my best friends from school went from not knowing a how to write a single line of code to being the lead technical founder on a YC company in less than a year.
The real point here is that it's very easy to tell yourself something is too hard, and that you don't have enough time to learn it when that's really just a personal constraint. The point is that it's easy to get distracted doing things with short term rewards (going to events) rather than doing things with rewards that are played out over the long term (building skill). It's more written as a way to shift perspective than anything else. Again thanks for the response, hopefully that cleared it up a little bit.
EDIT: Original post is here if you missed it: http://danshipper.com/the-now-syndrome
More importantly, not everyone should learn to code. Some people who teach themselves do so very poorly, then cause more trouble than if they had just left it up to someone who is better at it in the first place.
* - This is always true at any point in history, so it's a pretty meaningless point.
While I know that many programmers have this attitude, I have not seen any evidence for it. Nor have I heard of any attempts to verify it. Certainly many people don't care enough to learn to code. But that's a different point that one of aptitude, which implies that programmers are a special breed. That's an attitude that I reject.
For those who haven't (and won't) seen the movie, one of the themes (as I see it) is based around two different interpretations of the phrase "Anyone can cook"
1) The looser interpretation that upsets the "ultimate food critic" would be better phrased as "everyone can cook"
2) The interpretation that the movie guides us to (not quite as heavy handed as I'm phrasing it!) is that a cook can come from any background, we shouldn't think that the best cooks can only be found in the trappings of a well respected multi-Michelin-star restaurant kitchen.
The parallel for coding seems obvious to me, we often have very preconceived notions of what it takes to be a "coder", what background, personality type, etc. and we should reject that. The "suits vs. nerds" concept is a form of deception, because it leads us to think that "coders" must be "nerds" and "suits" can never be "coders", neither of which are true.
We should judge people by their ability and capability, not by the fashionable trappings with which they drape themselves; often suits, or nerdy/geekish behavior is merely a social camouflage with no deep correspondence to skill set.
Just my 5c
But if you're talking about really learn how to program, for example to learn the skills necessary to create a basic blog with a database, login, posting, commenting, etc. Then, no, not everybody can do that. If you get some experience in the real world and try talking to people who aren't technical, it will become readily obvious that not everybody can do it.
It's not that programmers are "a special breed", stop being so coder-centric. There's plenty of things you're not good at and can't do as well. Or do you believe what we were told as children; you can do anything! Sorry, but you can't.
You'll never be a Formula 1 driver. You'll never be a fighter pilot. You'll never play in an international level orchestra. You'll never be an architect or civil engineer. Et cetera.
And billions of people will never be programmers.
It's not that programming is so intrinsically special, it's that it's one thing among many things people have varied proficiency for (the origins of that proficiency I have no idea and won't get into), and some have no proficiency for whatsoever.
This is all really obvious if you've spent much time with people who aren't programmers.
What is "the next level" in this case, though? Is the idea that if you can slap together a proof of concept it will be easier to find more experienced coders, and then you can stop learning to code and go back to being a non-technical partner? Or is the idea to continue coding after the six months? Because the latter seems like a bad idea to me - if someone doesn't want to code, and they have other skills which coders may not have, it makes more sense for them to focus on these other skills; if learning to code helps them get to a place where they can use their non-coding skills, fine.
BizBrah: Well, I'd like to be several inches taller, and have four arms.
Doctor: I don't really, uh, do that sort of thing, if it were even possible.
BizBrah: Listen, this is a one in a million idea, I just need someone to implement it. I'm the idea guy, you're the doctor.
Doctor: It's not impossible per se, but none of my colleagues would actually attempt such things on a human subject. Perhaps you should read up a bit about the current state of medical science, and maybe become a doctor if body modification research is your calling.
BizBrah: I looked at what's available at the pharmacy, but it's all too hard to understand. I love tall people. I love the dynamic nature of juggling many things at once. Am I forever cursed to be uninvolved in the medical community because doctors keep shooting down my ideas?
Doctor: ...
BizBrah glares demandingly.
Doctor: Actually, I can help you out! The kind of doctor you're looking for is called a psychiatrist. I know a good one, here's his card.
BizBrah: Bingo! I'm a people person, persuasion is my strength.
Often, I can see that the idea will be large-impact, but the job itself is boring. Sometimes, it's even a simple CRUD app you could Build in a Weekend* but hmm... what I'm doing now is quite exciting so.. "I'll pass. Btw, if you learn Rails, you could build it in a week or two yourself".I can see why this gets people angry. But it's the way demand-driven markets work.
The other side to the coin is that if you knew a little about programming, you could make your project (at least sound) a lot more interesting. (It's a CRUD app, but it needs to be always consistent, and we're trying to offer a zero-downtime service with queues for when the data store goes down, yada yada).
By the way, there are surgical options to grow taller by lengthening the limbs [1]. I'm not a doctor.
[1] http://abcnews.go.com/Health/york-man-grows-inches-surgery/s...
The medically educated patient knows just enough to challenge the patient rather than blindly asking for the imposisble
The thing is, I don't think people appreciate how much of a deep skill thinking logically is. It's not something you can pick up in a weekend: there is a monstrous gap between the basic common sense appreciation of cause and effect that nearly everyone attains in their lifetime, and the rigorous analytic mind that can look at a series of instructions and deduce all possible outcomes. This is a skill that doesn't require formal training, yes, but it is a skill that must be mastered, with all its requisite 10,000 hours of training beforehand. The best programmers have all been doing this for years, deconstructing the world and its workings whenever they can, and learning the mechanical structure behind their every experience. This training has given them a unique mastery, and while it's not for me to say whether this skill is fundamentally innate or purely a result of practice, it certainly takes years to develop the right modes of thinking. All I can say is that mastery the ability to think logically is a prerequisite for programming in any deep sense, and not everyone has this skill. This is why when I ask my mathematician and physicist friends to look at a program, they can decipher it in minutes even if they don't consider it particularly gripping, while if I ask my writer and even medically trained friends they blankly stare at a wall of gibberish.
Sorry if this answer is more anecdotal than you are asking for, but in my experience there is a fundamental skill in programming that must be mastered that many programmers take for granted, and you can't expect people without it to pick up deep programming in a reasonable amount of time. That's not to say there's no useful place in a place with colleagues for someone who can't really synthesize new bulletproof code, especially in this age of Google and StackOverflow, but the kind of skill people need to whip up a prototype of a novel application on their own without outside assistance takes years. I think Zed Shaw is right in his response to this blog post, if you really are a "people person" than perhaps coming to a programmer with a completely thought-through user experience designed out matches your skillset better, and it's every bit as valuable to the final product as programming knowledge.
I wonder how you could define a study to determine corellation versus causation here. Maybe I think this way because I've spent so much time fighting computers. Or maybe I've been willing to spend so much time fighting computers because I think this way. It's a fascinating question to me.
You need x amount of time coding, debugging, refactoring before you can call yourself a programming 'expert'. This is time that could have been spent learning some other skill like how to cook, how to fly a jet, how to bungee jump while flying a jet, etc.
The real question is, how much time is the person willing or able to invest in learning how to program?
I'm drawn to the idea of being a technical co-founder and even have the financial resources to take a calculated risk on equity over initial income for a good amount of time. I don't live in CA, don't particularly want to move, and really struggle with these online "find a co-founder" sites when it's so hit and miss.
I feel like I have decent business sense but would prefer to spend my time building rather than dealing with VCs and fund raising and board meetings and paperwork so I just focus on small sites making "pocket money" and let the bigger opportunities pass by.
I guess my point in all this is that it isn't just "none technical co-founders" struggling here. This whole area of "partner discovery" is still wide open for someone to come along and find a better way to do things. Do any of the VC companies themselves do any kind of "partnering up"? If finding a technical co-founder is a challenge for so many people then perhaps there's a way for would-be leaders on the technical side to make themselves known to VCs up front, complete whatever interviews were necessary and let the VCs (or another 3rd party) do the matchmaking at a deeper level than just filling in forms on a site? Definitely open to suggestions in the meantime...
Solving that problem would certainly open many doors, and not just in the startup world.
One question I have is that each partnership in my experience has a different mode of operation. For some, it's a lot like a marriage. For others it's a "I can work with him. I could never stand him in a social setting."
Then there are the well-known partnerships of the past: Jobs and Woz, Larry and Sergey, ...
I had never touched programming before. I read the whole book, and did the lessons, but C++ was just too hard for a beginner.
Then I found QBASIC sitting on my computer. QBASIC was easy, it was idiot proof. I learned all the basics (pun) of programming in 1 day. The problem is not that programming is hard, it is that these days there is no easy starting point. To an experienced developer, Javascript might seem easy, but after trying to teach it to my brother for the past few months, you can see how complex it really is for beginners. He took every course at Code Academy and is still struggling.
is way easier than running GORILLAS.BAS
In regards to startups, technical people are so much more valuable than non-technical people. Non-technical people keep on perpetuating this: http://whartoniteseekscodemonkey.tumblr.com/ -esque mentality by saying things like this:
>"I am the nontechnical founder of several great startup ideas (I didn’t say startups) sometimes very poorly executed."
The founder of an idea? That doesn't mean much in my mind (then again, I don't know much about the author at all, nor could I did up much). Execution is key to a startup - and technical people are largely the ones that get the important shit done.
Non-technical people can add value for sure - but I think only a small margin of them have valuable skills that rival technical talent in a startup setting.
But real "business people* provide a TON of value. Someone who understands marketing, distribution, sales, fundraising and all of those things? Tremendously valuable to startups (at least some classes of startups). Find me somebody who can construct and execute a solid marketing strategy, craft a good "core story", do market research, develop solid positioning, and who understands PR and how to get stories placed, someone with an extensive personal contacts list which includes the kind of customers you're looking for, someone who understands the fundraising process and has connections with investors, someone who can cold call a customer, get a meeting, make a presentation and close a sale.... find me that person and I'll offer them a significant equity stake in my startup, to join up as a non-technical co-founder, even if they've never written a line of code in their life, and have no interest in doing so.
After my experience with a very-non-technical co-founder before, I dont think I would ever again agree to work with someone who couldn't at the very least know how to read the source code and manually tweak database entries. Working with someone who has read the basic rails tutorials makes it infinitely easier to communicate and mutually understand technical and temporal restrictions on a product in development.
I'm a programmer, but I sure as hell read Inbound.org, dribbble, forrst, and other sites besides just technically oriented ones so I at the very least can use the same vocabulary to describe and understand what a a partner is doing and why they're choosing to do it that way. I expect anyone I work with to be similarly versed.
If you consider yourself a technology company, you need an understanding of your technology and what goes into making it. You may not be a master at each part, but you need _something_. It doesn't mean you are not marketing, but like marketing a technology implementation has several nuances that can't be overlooked. Tension always arises when these aren't well understood. Times this problem by 10 if you want "magic" / algorithms which little concept of how they will work (note: you don't need computing studies to figure this out, generally).
Note that I said 'consider yourself a technology company'. There are many companies based on technology that are not, themselves, technology companies (you can argue either way whether this is the right model, but it works). From my experience, these are the companies hunting less for technical co-founders (and who have less excuse for no traction pre product).
I think Dan's point is that if you believe strongly enough in your idea, then it ought to be worth the time investment required to personally execute it. At the very least, take it to a level advanced enough to be able to sell the concept (and yourself) to prospective partners/employees and get them excited.
If you don't think you have the aptitude to learn the nuts and bolts of the particular execution, then you should probably refocus on another idea for which you are qualified. Alternatively, you could try and convince someone else to execute your idea and hope that he or she takes you along for the ride.
PHP might be easier to learn on now than it was for me 8 years ago, I don't really know.
Start with Scheme as your language and SICP and/or The Little Schemer as your instruction books.
A smart person can become a competent coder if there is as little friction as possible between him and "holy shit, this actually works, aren't I awesome?"
When you're ready to try more practical stuff, then it's time to dip your toes into Python.