Program Or Be Programmed
On Thursday night I gave a talk at NYU Poly and in the Q&A a young man asked me for advice for "those who aren't technical". I said he should try to get technical. The next morning I met with a bunch of Sloan Business School students doing a trek through NYC. A young woman asked me the same question. I gave her the same answer.
I don't mean that everyone should become a software engineer. I do mean that everyone should understand software engineering (or whatever technical subject/industry you want to work in). I don't speak French fluently. But when I go to France, I know enough French to speak it badly until the person on the receiving end changes the language to English.
Dennis Crowley claims to be a terrible programmer. And yet he and Naveen built the first version of Foursquare together. Their third team member was Harry and Harry's first job was to rewrite all of Dennis' code. Dennis is the kind of technical I'm talking about. Learn how to hack something together so that you can get people interested in your idea, your project, your startup. If you can do that, then you have a better chance of success.
Another great reason to "get technical" is so that you can work better with technical people. If you understand at least some of what they are doing, if you can look at their work product (the code) and understand what it is doing, if you can pick up a ticket and contribute when time is tight, then you will be seen as part of the team. And that is critical.
All of this is a big reason for our most recent investment, in Codecademy. Codecademy wants to be the online resource for people who want to learn to code. What you see there now is basically a prototype. And yet somewhere between 500,000 and 1mm people have started learning javascript using the prototype. They are clearly on to something.
I haven't written code professionally in twenty-five years. The last application I built was a custom app for my mother in law's company. She ran her business on it for twenty years. I wrote simulation software for a company building ships for the US Navy. And I wrote software that ran data acquisition for a lab at MIT. I was never a great programmer. I was a hacker. But I do understand the basic concepts, I can build something. I think most everyone can get to the place I got to and I'd encourage everyone to try.
Our partner Andy wrote a great post on the USV blog announcing our investment in Codecademy. He wrapped up his post with a quote from Douglas Rushkoff. It's where I got the title of this post from and it says it well.
When human beings acquired language, we learned not just how to listen but how to speak. When we gained literacy, we learned not just how to read but how to write. And as we move into an increasingly digital reality, we must learn not just how to use programs but how to make them. In the emerging, highly programmed landscape ahead, you will either create the software or you will be the software. It's really that simple: Program, or be programmed.
Comments (Archived):
I think this is a great resource for ctos to get a better understanding of code. (if not originally coders). Fantastic.
exactly
Huh? Why would a CTO NOT have a good understanding of code? They aren’t a CTO if they don’t.
Scratching my head a bit on that comment too, I was.
IMHO a CTO is more of a technical visionary, not necessarily a skilled coder….at least that is how i like to sometimes justify calling myself a CTO while being a terrible coder 🙂
I think what you described applies to a CTO of a large company where they can be removed from actual software development. But in a startup, a CTO that hasn’t gotten their hands dirty in programming will not be able to manage and coach developers properly.
yes don’t think they need to code on a daily basis but need to have done it understand it and help direct their team for solving larger complex problems. Otherwise they’d be called the CEO 🙂
CTO NO CAN DO HANDS ON WORK IS CTO THAT NOT GET WORK.
I would like to see code-academy grow into a huge network of “subject”-Academy services…For example…Fund-academy: Learn how to fund start-upsLanguage-academy: Learn any new languageDesign-academy: learn how to designClothes-academy: learn how to make/sell clothesFood-academy: learn how to cookUSV-academy: Learn how to become a portfolio company of USVFredwilson-academy: learn how to look, act and talk like Fred Wilson…Ya coding is awesome, but I want to see the “academy” name grow into more than just a coding-learning network. I want it to be integrated with all the portfolio companies, I want it to encompass all learning categories. I wanna see it grow….
great vision. but one step at a time
Codeacademy has the framework and resources to expand. If you push them to create more academies, their network as a whole will expand substantially and their brand will be deemed a “keeper” in the industry. Its a win-win for everyone: Codeacademy, Users, and the VC.
Can’t know what competitors will hop in whether in the same or other verticals for learning. Exciting? Yup. Smart to not expand into everything right away? Yup.
There are similar (offline) products for learning how to program a router, or other command-line intensive tasks. Heck, Vim has a pretty good little command-line tutorial program. Codecademy is awesome at this, I love the site. The instant reward from seeing something you typed DO something is what makes it great for me.I wouldn’t want to learn marketing or finance from a command line though.
The last 2 will have more ppl paying.
Lol I would make a freemium business model, allowing users to pay for additional information, videos, tutorials…etc Heres my personal-academy on USV and FredWilson:USV-Academy: How to get noticed? 1: TRACTION! TRACTION! TRACTION!2: Must eat, sleep, and shit ‘SOCIAL’ 3: Must be technical4: Must have an amazing new vision/productFredWilson Academy: What is he made up of? 1: Blog2: Start-ups3: Internet4: Apps5: Technology6: Droid7: Gotham Gal
Umm, the smart money would move #7 to the top. 😉
Well, I was saving the best for last..
Good answer. 😀
Smart man
That is an awesome idea, sadly you have to start small. Like Fred said, give it time. The current start they have is awesome and if they keep this momentum it will be sooner rather than later.
The way I see it, the sooner they establish their presence as a MULTI-ACADEMY NETWORK, the sooner they will receive their award for creating an innovative and new idea/framework for learning online. Code-Academy created a certain way to learn online.Why limit this great way of learning to just coding? They can apply the same framework to just about anything! Cmon!!
I believe you can never loose in educating people. I live in a continent, Africa, that drastically needs education. I am not talking about a small percentage of our 700 / 800 million people, but a huge majority of our continent need education, just saying.I truly believe a screen/monitor/tablet and the web can be such a major step forward for villages, towns, cities, in Africa that dont have teachers.Its that second best option.I am bullish as one can be on educating Africa. sorry a little off the topic, but have to push where I can on this.
Exactly. Ties in with my comment on learning globally, especially Africa comes to mind.
@wmoug:disqus great comment, and totally agree
Perhaps Africa can implement the same strategy as India, offering the worlds cheapest tablet to bolster growth in education.
@conradschulman:disqus Its been close to a decade where I dream of Screen + Web helping out villages, places, town and so forth in Africa. Never as aposed to a teacher but where no teacher. Screen + Web would be that dream, and the tablet is that one device that has both. Please know that in terms of connectivity Africa still needs help, but I recently looked at how quickly Nigeria is becoming connected and it gives me hope.
where in africa are you? i am extremely bullish on africa…..the opportunity that china was 15 years ago, africa is today.
Cape Town, thanks for your great comment @kidmercury:disqus
That is what global economics have wanted. Bring cheap production to Africa.I hope it goes differently though. Safety and health need to be taken care of much better. Countries have to be accountable for the conditions of who they’re buying from. Though I think this added cost will bring back a lot of local production. It will be interesting to see what our 1st world country leaders decide is acceptable …And we need to be off of fossil fuels too within the next 100 years or we’re fucked – the good news being it’s possible.P.S. We still need fossil fuels for product production, just not to burn for energy; Even China realizes this as they’re putting in $300+ billion (to start) into renewable energy development.
yes that is what i’m working on, i think stackoverflow is positioned to do this as well. someone is going to figure out how it works — we’ll get there soon enough i think.
What I’m starting to think about myself is how society will look and leverage the skills these tools will cultivate. There’s a bit of a half-life for the amount of programmers that we’ll need. We will need ‘creatives’, with technical skills (being a plus), and having an option for third-party tools to select from for learning will allow people with different learning styles to learn what they can.We’re very much lacking on trades. I want the world to be covered in beautiful sculptures, stone buildings with amazing carvings, artwork everywhere. Nature intertwined with human structures. No pollution – physical or otherwise. AHHHHH – breathe in that fresh air, let your body relax without that car noise, and giggle as you savour some freshly picked rasberries that were growing along the walkway!
My first startup was based on an idea I had. My previous programming experience was limited to some Fortran in undergrad. I didn’t write code, and despite my endless enthusiasm, the project sputtered and died.After that I started teaching myself to code.I am now the owner and coder of my second startup. I love coding. You are creating something out of nothing. I’ll never be great, but I can now hack together a mvp for most anything I can envision. If you aren’t doing something hard, you’re probably not doing something worth much.
word
YES.
OK!
Yes! Programming is where the rubber meets the road. Engineering, architecture etc is at a higher level of abstraction and does not result in anything that is of demonstrable end user value no matter how smart your thinking is or how well architected your diagrams are. They need to make it to the browser and are useless on paper. You can build all the wireframes, dataflow diagrams, schemas and plans you like but if you cant code you cant make something that is usable. At the MVP level it doesn’t matter how well architected it is. The great thing about the web is that you can build something that looks like a Porsche on the outside but has the engine of a Go-Kart on the inside and when there are enough drivers to justify a new engine, you can just drop that in (i.e. Hire coders to make your sloppy code scale).I think UI/UX is also important and is the next layer up from coding. Coding + Photoshop UI/UX skills are a great combination. Coding + Photoshop UI/UX skills + Business/Marketing/Vision is lethal!
there’s also communication: doing with words what visual designers do with color and shape and images
CODE FOR RIGHT BRAIN. UX FOR LEFT BRAIN. AWESOME IS FOR ALL BRAIN. #NOLIMITSELF
First, congrats on this latest investment- another growing network of engaged users!I think the nail on the head in this post for me is “you can work better with technical people.” That is so true, and so important. If you are a non-technical founder or CEO, your thinking must be very aligned with your CTO’s or head of software development. You must understand a lot about the “what” and some of the “how” without actually doing it. If you don’t, you won’t know how to manage them properly to maximize their productivity. If you don’t, you’ll be asking them to do the wrong things because you don’t understand how software engineering works.But I see a service like Codecademy as also being useful to users in remote areas and in less developed countries. Anyone can learn programming on their own and develop a skill that can help them build a product or service that can improve their lives. That’s a greater promise that I think should be realized.
If I had to choose one single fight for Africa, education would be it.
And not just Africa. Education would improve conditions in many places around the world. Look at what the Asian University for Women is doing. Many of the students there are muslim and otherwise without access to a full education (not all, by any means), but educating women (everyone really) from troubled regions has potential for heroic benefit.
I am doing the same during my study. I knew nothing about ITIL, so I picked up an entry level degree.I new nothing about Prince2, so I bought the thinnest book explaining it. I knew nothing about ISO standards, I asked my school to purchase them and now have access to 5 of them and I understand the basics. How ever, when it comes to coding, I do know how it works and what is possible, yet I do not have the mindset to learn it. I tried it 10 years ago, keep that up for the longest time, but stopped due to it being boring in my honest opinion. And now for my startup I tried picking it up again, but cannot focus long enough to build and increase the skill. Keep in mind that I’m based in my own home on a personal laptop, which also brings a lot of different temptations .
40 years ago Robert Persig wrote Zen and the Art of Motorcycle Maintenance.
Damn good book. Especially the part about “motivation killer”
i’m bullish on this style of learning (amongst others).for ruby there’s rubykoans.com — which also installs Test Driven Development in the learner.on the web ruby and python are strong. they’re outstanding at text-processing, and have some great frameworks (rails and django for example).as good as koans is it’s not a platform and has limited capacity to grow.it’ll be interesting to see how this grows (and how big).
Started playing with Codeacademy last night and loved the gamification aspect. Dreamt of becoming more technical and hope that codeacademy is that way. Got so frustrated last night not being able to move forward, but that challenge is the hook. Think I could be a codeacademy user for sometime.
When I started OtherInbox I hadn’t programmed anything in many years, but I taught myself Ruby on Rails and built a working prototype. Then my co-founder came in and rewrote it all. But I was able to get a prototype working and start exploring the product on my own and that made a huge difference. It also makes it easier for me to stay in a designer / architect role even though I’m not actually coding anymore.
wonderful case in point Joshua. that’s the way to do it
Love the overall idea…hope it does find the connection with people to stick with it and grow their skills (we can always use more developers and hackers in the world).Combine this platform with the kickestarter platform and you’ve got the basis for changing the world.
There are so many great resources for teaching yourself or getting help from others on the net : codeacademy, skillshare, rails for zombies, Kahn academy, and tapping peeps at github, stackexchange, and quora. Amazing what’s out there!
Or as someone smarter than me said: Coding is the new literacy.
A society able to visualize and code in the primary language of nature “ORANIC POCESS LITERACY” is a society than can begin to program their own collective reality outside the puppeteering forces of top down power and wealth control.The emerging neural net of interconnected open APIs is simple a key enabling subset of a much larger social trend towards global networkable programming literacy.
my 15 yr old daughter just jumped for joy and clapped her hands (no really) and asked if she could join.She’s wanted to learn how to code ever since she read the girl with the dragon tattoo
That’s the best news I’ve heard all day. This stuff is powerful.
She’s already playing around with it — it will be interesting if it works for teenagers (although truth be told her ability set a goal and just learn it far exceeds my own)
I think it will work very if they get the game mechanics right. Khan Academy has kids who have advanced years above their level because of they’ve done this well.
Considering the popularity of that book, do you think it will become in to hack?
well truth be told she originally said she wanted to learn how to hack and we evolved it into coding 🙂
the dragon tattoo is the antidote to the social network!!!!
That’s pretty friggin awesome.
I am learning PHP now because I am most familiar with WordPress as a CMS. Just by messing with my blog constantly, I became familiar, and slowly, I wanted to know more. I’m now going through a Headfirst book and I’m surprised how much I understand and get. I want to learn Java next and have done some of the intro Codeacademy exercises. I’m excited because it seems like if you understand one language, it’s easy to hop into another. Then, of course, Ruby. For me, I am learning not just so I can hack some of my own ideas together, but also because I manage PR & Marketing at the start-up I work for. And I would never get any development resources allocated to the splash pages, and blog redesigns, and microsite campaigns I wanted to do. It was very frustrating. So over the past year, I taught myself enough where I could do all of that on my own. Which, I think, just might be invaluable for a start-up marketing department.
Smart approach Rebecca.Smart because even when you contract out work, knowing what you are buying at a detailed level makes the process your own. And you as the creative force.And smart because most marketers just don’t understand that the market is the network and that marketing is tied into distribution. Think about the power of APIs as connectors and brand builders. The more this thinking becomes part of your marketing DNA, the better.
This is how I originally learned how to code when I was 11. I used to play MUDs (multi-user dungeon games; think text-based World of Warcraft).I thought they could be better, so I found free source code (CircleMUD) and started tinkering with it. In the end there were over 10,000 custom rooms with long descriptions all written and connected to by volunteers.Fallen Shadows was its name.There was lots being contributed to it, even an awesome ASCII login screen with Fallen Shadows beautifully and elaborately drawn with text characters.This is how I ended up learning HTML/graphic design as well – I wanted a website for my game! I had learned a lot at that age, though I didn’t have any local support to help me continue, no one around to suggest how I could get help to further my ideas.Sadly it was hosted on a server someone offered me to use for free, and one day they just disappeared. I had no backups off server and they didn’t return my call. It sucked.. but after trying a few weeks to get in contact there wasn’t much more I could do.That experience has obviously been valuable and molded what I am trying to do today, and I agree that that skill you’re developing is invaluable especially to a start-up marketing department.
Sadly it was hosted on a server someone offered me to use for free, and one day they just disappeared. I had no backups off server and they didn’t return my call. It sucked.. but after trying a few weeks to get in contact there wasn’t much more I could do.That experience has obviously been valuable…what i learned from that is be skeptical of free
He was a guy who had a small hosting company helping out an 11/12 year old. There’s no good reason he ignored me and didn’t let me get a backup though.You can get burned whether something is free or if you’ve paid money.. and even with contracts involved it doesn’t really matter most of the time due to monetary cost to pursue, and time costs to pursue.Later on in life I spent a good ~$8,000 seeing if I could pursue someone for an internet company they fucked me out of owning. I spent 1 1/2 years helping the owner of the company out, not a lot but enough, with the understanding that I would be taking it over with a date set, providing them with a downpayment, $y paid back monthly out of profits until $x reached, etc.; Verbal contracts in Canada are binding so long as you can prove there were contract terms, and it was agreed upon, and some action has occurred).After spending that money, the conclusion was I had a very good chance of winning, but was it worth the minimum ~$160k it probably would take, up to 8 years – and the emotional toll, etc.. And I didn’t have $160k. It was suggested by one lawyer to use the money and time to build something bigger, better. What I learned from this? Good lawyers are good counselors, who charge a lot, and won’t really give you a firm answer as to not be liable later on.
php is awesome! you can do so much in tht lang + runtime.
Totally personal thought:I can (sort of)hack in ruby. The hacking at is the easier part. Algorithmic thinking and I/O is the hard part.And I keep seeing more stuff aimed at the (sort of) hacking rather than what makes the hacking work. It is very frustrating.
You’re one in a million, Shana.I learned to code by copying BASIC code listings out magazines with my Dad: type in a 1000 lines of code -> eventually get it to compile -> maybe have something resembling space invaders -> change a few things and see what happens. We built stuff. Building stuff is fun.Years later I got a formal CS education in university: formal methods -> discrete mathematics -> data structures -> operating systems.It took 2 years before we built any stuff. Not fun (though incredibly valuable).The attrition rate was something like half in the first year and a third again in the second year. You can still take this kind of course, and some people absolutely should, but I am so glad that most introductions now start with a few basics and then get down to the fun of building stuff. Everyone should read the Iliad, but it’s better we don’t make ’em learn ionic greek first. ;)Edit: If you really, really want to learn that stuff you can do much worse than working through SICP: http://mitpress.mit.edu/sicp/ . Finish that and you’ll be in some pretty esteemed company.
Abelson and Sussman’s Structure and Interpretation in Computer Programs is a definitively on of the best book written on subject of computer programming.It deals with LISP, that is definitively not a programing language for novice programmers, but anyone who wants to become a good programmer must learn it or at least try to understand it.By learning various computer languages one will acquire routines necessary to write decent programs (algorithms).Sometime product of your work could be opposite to the methods of the programming language you are using for your project, but it will be operational and suitable for further optimization by expert programmer.When I started programming at university (time of good old VAX minicomputers) majority of our work has been done by using “pseudo languages”. What was important was to learn how to solve the problem, design algorithms and other useful stuff.I see many young programmers that are familiar with various libraries that help them in rapid development, but are unable to write rather simple algorithms or procedures. What even worst, they have habit to change those libraries according to latest hypes, what definitively makes them average programmers with good potential but incapable of doing more complex work .
I actually quite like Scheme for teaching. It’s clean and simple, and has very few special cases. MIT switched to Python which would probably be my first choice, but idiomatic Python is a little harder to impart.
When I am a tad less busy, I probably will get through it.It was more an observational point. Another observational point is that we teach towards attrition. We could teach towards more understanding. (which I would actually prefer)It would be like teaching the Illiad so that people understand the idea of apoina without teaching them greek. Understanding its moral center is a great discussion for the rest of your life, and yes, it is hard, but it also approachable.(Oh, college, how I miss thee)
here’s some good ruby books if you get a chance to read them:http://www.informit.com/art…and rubyrogues.com is a boon.
Shana – thats because a lot of the lower level stuff is mostly ‘done’ in pc and web space ( not really, but sort of ).A great way to get practce these days in the down to the metal stuff is in embedded. Dont let any one convince you its “hard” – just go dive into arduino ( or similar ) ..and maybe C and your hacking will feel totally different 🙂
^2 for arduino. robots are cool http://letsmakerobots.com/ and lilypad is awesome http://web.media.mit.edu/~l…
Ha, that is why I did ruby to begin with. My mom is an extremely good programmer, and it makes for an interesting form of intimidation. She doesn’t know ruby 🙂
thats really cool that your mom is a programmer. ..must make for geat conversations and humor 🙂 My dad and step-dad are both programmers too ( plc’s in industrial control systems , robotics etc) …much different than what i do so we often fall back on wood working, cars and other diy when we shoot the breezeI’m going to try to get my daughters into programming – both are maker/fixers
THINK IN CODE RIGHT HARD. REQUIRE RIGHT SHAPED BRAIN.HACK CODE TOGETHER EASY, CAN DO WITH ANY SHAPED BRAIN.
these are great as well:http://openclassroom.stanfo…thanks stanford!
As a marketing guy who does software marketing, among other things, I can’t write code. But I understand how code works, the underlying logic. More important, I, by necessity, became a user interface expert. Why? Because I represent the user. Even if you don’t program, you need to know UI design. That’s where prototyping comes in. The prototype is there to test the premise of the software by giving actual users something to try out. Once proven it can be rewritten (and almost always is) to support a business model. Doing things like making it scalable is the second stage of development. Getting usability right has to come first.Startups that are entirely engineering-driven often miss this critical step.
Any other advice for biz students? Thanks!
hang out with makers not bankers
haha
Good call!
read make magazine ..start building toys
I think this is potentially great and as someone who has spent time trying to teach programming to non-programmers I am completely behind the overall mission. We’re increasingly talking about coding in the context of literacy where I teach.My hope is that the organization will get some teachers involved. I recently went through the first Javascript module and it frankly felt like “teaching to the choir”. Very little context was provided about what was being presented and why. The steps were very abstract.There are many learning styles out there. I think if they can start to learn about their users – are they visual learners, project based learners, what are their fears and insecurities? – and then provide a customized experience, then they will really be onto something.
We’ve reached that point in human existence where every person will touch code at some point in their lives.We don’t all have to be good at it (we can’t..), we just have to understand it.
The nitty gritty of coding is anathema to many. Specialists in the medical field, most of the specialist in the humanities find coding a drudgery. I did my coding in Fortran, using punch cards on an IBM 1130. It was the era before the PCs and minis.As an Algo Trader, I have defined my problems in programmable terms, quitte successfully. Understanding the coding arena is more important than coding itself….like they say..to know whether an egg is good or bad you really do not need to know how to lay one !!
True that.
Codecademy is really cool- I’ve tried several times to “get technical”, by trying out online programming tutorials and various other things, but nothing ever really stuck. I’m going to give this a try and learn some more basics. It is definitely a cool format too and one that could easily extend into other domains.
I graduated from NYU-Poly with a mechanical engineering degree. At the time taking a course in C++ was mandatory but later became optional. I remember a lot of students hating that class and being unable to program well. Looking back at it now I think it was one of the best classes I’ve taken, just being able to talk a little shop with programmers goes a long way. I find myself wishing I opted to take more CS classes but there’s always CodeAcademy now. People need more early exposure in order to gravitate toward it, high schools should start adding programming to math classes and computer classes.
I’m all aboard the online education train! I’ve been taking the online Stanford Artificial Intelligence class, I’m in a masters program right now and constantly watching videos at Khan academy or youtube trying to relearn math concepts that have escaped me. Keep pushing online education!
this ai mit course is spot on (marvin minsky): http://ocw.mit.edu/courses/…i’m a massive fan of education online. it’s a great way to learn, and even a better way to relax.
^2 Khan Academy
Great synergy and lineage:I can learn on Codecademy, teach on Skillshare and help others on StackExchange.
I asked @fredwilson:disqus on #SloanNYCTrek: “As bschoolers, how can we add the most value?” I coded for 4 yrs, MIT B.S. Sharing notes from Fred’s thoughtful 2nd part of answer:- Be a product-oriented person. Scope, specs, go-to-market.- Have the expertise or talent to give us a high degree of confidence from the founding CEO.- Leadership skills. Get investors, recruit. Some may call it salesmanship, but it’s more than that. It’s having a vision, communicating it, and getting people excited about that vision.- Be likable. Be a person whom people want to see succeed.- Have tenacity. Take a punch. No matter what, to not quit.So true. Played both tech (wireframing through building) and wears-all-hats biz roles (biz dev, ops, recruiting, sales). Thanks to Fred for graciously hosting us, a true #payitforward exemplary.Rooting for fellow @zsims’ @Codecademy all the way. While his cofounder is a Columbia CS instructor, he just learned to code a year ago!
Ever since I read Patti Smith’s Just Kids, I’ve wanted my daughter to learn to code. Patti says the revolutionary tool of her generation was microphone. Not understanding what’s behind the surface of all things digital has created a huge generation/communication gap. Clearly, code is the tool for the generation now coming of age. Are there after school programs for 12 year olds?
not that we could find. we hired a private coding tutor for josh when he wanted to learn to code
Thanks, Fred! I guess Abigail and i can try the codeacademy together.seems so important!!!!! And so exciting. I’ve learned so much designing an iPad app I can hardly stand it.!Bridget
Friends of mine in India say that everyone is taught some basic coding in grade school and that was 20 years ago.l
Great post. There are those the complain about the changing world and then those that change with it. Codecademy is one of those tools that enables those who want to keep adapting with this new world we live in. I starting programming in Basic when I was 10 years old, wrote a bunch of crude games following instructions from programming magazines and then going to the local library to meet with other code writers to share ideas and 5 1/4 floppies with our weeks worth of new code. I just spent 5 minutes on Codecademy and it brought me back to those days. Love it! Can’t wait to have my kids use this!
I am not against education, but just bit of my thoughts. Everyone does not have to know how to read or write code. This is because those who has to know will know. Software developers make their money from this knowledge. If everyone knows at least how to read code and some even might be able to write a for loop printing text. Then these so called “newbies” become jobless and think they can code and spam their CV to every job posting. Some lie in the CV and even in the interview they are good. Probably read on web about how to implement fizzbuzz and such. Then us who really don’t have anything to show in CV and are not ready to lie, but actually write code daily just for themselves and maybe for friends. Will most likely drop in the CV reading part. Then only way for these people is to have contacts or use lots of time to create portfolio to get work on the field they actually are good.Everyone knowing programming lessens the value of programming knowledge.Though having knowledge of technology is good, but you do not have to be able to use the technology.Someone also replied that in this day of age pretty much everyone will have to look at code. This is so wrong. My mother, brother, sisters and most of my close friends do not know how to read or write code, but they can still use the software. Though then again they know more from other fields like breeding dogs, dating, fixing cars, etc. I respect their knowledge and I do not necessary need to know this. If I do I will ask someone who knows.For example to drive a car you do not have to know how car is built. Of course you have to know how to maintain your car, but that is quite simple if you know how to check the oil, add more oil/water if needed, test the brakes, change the tires. Car Repair man probably might have the knowledge how to build a car, but the car driver does not. Still the driver can tell the repair man/builder what the problem is. Then the repair mans job is to inspect and find what is causing the problem.This is really similar to software engineers job. User files a bug report or the software might even do it automatically and better than the user. The programmer then will inspect and find the problem and will fix this. The user of the program does not have to fix it themselves. Though in the business world the manager of the business or client of the business should know the platform the software is for. Afterwards the software developer should be able to make decision on which tools to use to write the software.Just bit of my feelings. Don’t take this harshly.
You don’t need to know exactly how a car is built, but you should understand it. This way if your car breaks down somewhere, you can have a better idea if all it did was overheat or you blew the transmission. It’s not about knowing everything, but have a better understanding of something, allows you to make more educated decisions and talk to the experts. Otherwise, a mechanic can throw in a slew of fancy words and say it’ll cost you $3k to fix, and you’ll just assume it’s true.
Yes and the point is the car is your business.When I was a kid and owned a large lawn mowing business you can better believe I learned how to fix lawn mowers.
This illustration brings it home for me.
I would say if you want to be a leader in the technology space you do.If you want to be a leading plumber who cares?Don’t get me wrong. One of my best hunting buddies is a plumber, he is unbelievably successful, wants for absolutely nothing, owns tons of land to hunt on, and I learn more about life with my time with him that I ever have from my Ivy League friends.
I can’t say that I agree with your statement about the diminishing value of programming knowledge. As people become more knowledgable and skilled in any any industry the effect is almost always positive. Actually coding is the quintessential application of this because coders are actually building something. The developer community is quite collaborative and embraces utilization of the knowledge (and work) of others. GitHub is a prime example.Understanding a technical skill set that is relevant to your business is obviously not a new concept. If you want to run a business that manufactures cars it’s probably a good idea that you have some idea about how the car is built. I think this post was aimed at those that want to create businesses, Fred simply suggested it wouldn’t hurt to spend a little time on the factory floor.
Everyone knowing programming lessens the value of programming knowledge.Nah. It converts you from a cost centre to a profit centre.
Would it be fair to say that if everyone knows programming that it moves from competitive advantage held in the hands of the few to a commodotized knowlege asset available to all? Wouldn’t productivity and efficiencies across all sectors be taken to a new level? New innovation, new jobs, new product, new services…from the largest of markets to an Etsy style market place? Many have waited years for something akin to this. Democratized profit centers. Love it.
Well, obviously everyone is NOT going to learn programming. But this is the future, and it would benefit us all to know a little bit more- especially those of us in this community, why else are we here if not to gain and share a bit of knowledge with each other? I come here so that I can stay on top of technology and be a part of it’s future. I prefer this approach rather than sitting back and letting the world around me pass by
NOT EVERYONE HAVE TO DO THING THAT GOOD FOR THEM.
There’s a nice essay called ‘The common denominator of success’ by Albert Gray (http://www.alearningaday.co… And his common denominator is that ‘Successful people formed the habit of doing things that failures don’t like to do.’
GOOD WAY TO WIN IS DO WHAT LOSERS DON’T.
Grimster, I would make a slight edit – GOOD WAY TO WIN IS TO MAKE HABIT TO DO WHAT LOSERS DON’T 😀
i’m a fan of reading an extra ~8 hours a day (or learning something new).the world is competitive. and the winnings take most.
What’s your preferred source code, FG?
ASSEMBLY.
I could have called that
I agree with Fred. I am a wind developer, which means I try to find good sites for wind energy projects and develop them. I have an undergrad in English lit and an MBA. I’m not an engineer, but people often ask me if I am (not because I seem smart, but because they assume that in order to do what I do one would need to be an engineer). Actually, I think it would be a waste of engineering talent for an engineer to do my job, unless they just absolutely loved it. On a daily basis I need to be able to have meaningful interactions with wind analysts (physicists and meteorologists), electrical engineers, civil engineers, wildlife biologists, RADAR experts and most recently an expert in airborne LiDAR applications. All of these people are technical experts, and then there’s me. I do have a passion for technology in general, although I never got a specialized technical education. This helps because, in order to be effective, I need to at least be able to understand what all those technical people are doing.
Best way to endear yourselves to the natives is by speaking their language. Taking the time to understand how to code, shows that you value what they do enough to make you take the time to learn it.
Programming is fairly easy to learn to some minimal level. Every tech product manager and UI/UX person should be at least minimally competent in some language.Programming and engineering are often conflated and IMO they are not the same thing. You need stone cutters and architects to build a cathedral. Most architects are passable stone cutters. Most stone cutters can’t design a cathedral.I think one of the reasons you see so many feature companies these days is that is the scope that many programmers think at.
Awesome comment Erik
Great distinction Erik.If engineers are the architecst then where does product and market design fit into this paradigm?I think you get features without benefits, product templates searching for early markets because of the thinking at times that a visualized idea is a product ready for a market.
Product defines the problem or pain point.Engineering designs the solution.Programmers implement the design.
Slight variation:Product Mgt defines the product that solves the problem or pain point.In a startup, the CTO is Engineering & she/he architects the designs of the solution.Programmers implement the design direction & suggest ideas that the CTO didn’t think of.
Two things that I know I’ve been harping on:-Sure great products solve problems, but many of them are ones we don’t even know we have. FB, Twitter, 4Square didn’t solve problems, they created platforms for expression. -For consumer products especially, the key is the interface, how you interact is what defines the value. Who are you saying holds the key to the process of discovering that?
Whoever is the Steve Jobs inside. Probably the CEO/founder initially.
I think you could create a distinction between Senior Engineers and Junior; Juniors perhaps being along the lines of stone cutters, with Senior being the architects.But did the senior engineer have the vision for the cathedral? Not necessarily, however they will be capable of reverse-engineering what a visionary is demanding and make it happen; A lot of really good products being developed right now are Tools for Developers, made by developers, who are solving a problem they had and realized there was a gap to be filled.We could add UI/UX/brand/marketing/product people as apart of the visionary’s accessible resources, who makes his/her job easier – but likely is capable in those fields themself – and hopefully very capable in at least a few. For example, Steve Jobs knew what he wanted (and apparently took credit for many ideas that weren’t official his – but that builds his image in the public’s eye), but I don’t think he knew how to use whatever design software was used to create the design / style of MacBooks. Knowing what the end destination was was Steve’s job, any visionary’s job.This whole string of people allows for lots of possible waste / inefficiencies / errors to exist, so the closer the idea / product person is to the engineer, the better; If they are one in the same, the waste and inefficiencies in transferring the ideas of end goal is minimal (though I’ll say it still exists to some extent as it’s potentially a lot for one person to manage all on one’s own). If they’re capable of creating a prototype on their own, bonus points.The people who will excel next with products are those with product development skills, and who have other interests they’re passionate about.I still think we’re in an infancy period even with product design online. In the real world, with products like Apple’s, you have a set reality. Online you have different resolutions, different screen colour settings/brightness, different devices, etc. – and getting personality and feeling to transfer into that is still at a very experimental phase, though most start-ups, especially start-ups won’t have that freedom to experiment. Experimentation time is important though. It’s what allowed Apple to create the feeling it wanted for its product, and for its marketing launch. I think they know what they’re launching 2-3 years ahead of time. That’s a beautiful amount of time to get every little detail perfect before releasing a product to the masses. A company that has/allows that freedom to explore will be able to release beautiful and useful products; It happens some now online, overall not – mind you I don’t have a crystal ball to view the products that will be released in 2-3 years.. (other than my own..)
I get your point Erik – but software is little less obvious than structural engineering…No stone mason would ever suggest adding 50 stories to a building with foundations built to support 10, but this kind of things happens all the time in the wacky world of software…So a product chappie wakes up one morning and thinks it would be totally cool to tag real life objects a là Delicious. He rushes over to tell engineering that what users really want is to point their phone at anything and tag it.This is what engineering might say (to his face):”Sure, and how do we work out what the freaking phone is pointing at? Even if we knew, how could we identify the object out of all the billions and billions of other things you could point your phone at””Real objects don’t have urls, ya know? And even if we knew all that, how do we know that this person, or tree, or freaking plate of sushi is the same or different from another tree, or person, or freaking plate of sushi..” etc…The trick in our business is identifying the intersection between problems which need to be solved, and those that are reasonably solvable.
That is why I like engineering focused product people.
I think same as you are. Indeed this article is Incredible on programmed engineering & the comments are so informative.
You nailed on the head why outsourcing development doesn’t work.Engineering needs to tell said Chappie you sir are a horses arse. Not yes boss, whatever you say boss.
The role of the “design thinker” needs to be included in the equation. Anthropological studies of those who are good at it reveals that they know a lot about everything (programming included in our times). Leonardo, Ive, Dyson, Palladio….
The idea is to get the ability to create concepts for products into a larger and more diverse group of people. The end product is more important then knowing how to code. This Canadian company has been creating tools to do that for the past 4 years.http://www.prnewswire.com/n…
I wrote about this last April. http://asalesguy.com/2010/0…I’ve been using Codecademy for several months now. Got stuck in a session, need to go back and get “unstuck” I loved the idea of Codecademy the minute i heard about it. I have been searching the Interent for years to find easy ways to learn to code. I hope they add additional languages, and make it more of a game. My biggest problem was I didn’t have context for what I was coding. I need to see the big picture as well as the micro view. It’s just how I learn. Congrats Fred! Great investment, I’m excited and curious to see where this can go.
They will add more languages soon
WOW BEST POST EVER !This is literally going yo eat up my whole day !
As a non technical founder when I need to learn about coding, I find existing sites that look and function similar to what I have in mind for my own site. Then I pull up their source code using Ctrl+U and view what language the structure of the site was constructed, what API’s are being run and other information that will allow me to see the real world application of the code in a manner that is relevant to my needs. Once I have that information I use Google, Mashable, Wikipedia, AVC, etc….. to do more in depth research on the information and how I can use what I have learned to articulate my idea to a technical person. Personally I think it cuts years off the learning curve and gives an advantage to any non technical entrepreneurs who are scared to enter the start up game because their not programmers. Besides, the best entrepreneurs and CEO’s dont seem to be the most technically advanced.
If Codeacademy turns out to be half as useful as Stack then you will have scored big time.I love Stackoverflow, it’s the ultimate in the pay it forward economy.
I think that stackoverflow is the greatest programming resource ever.
Very true Fred. I read about your investment in Codecademy yesterday and already bookmarked the site – like you, I used to be a coder, but haven’t done it actively in about 15 years. I think I was a little more than hacker then (my colleagues then may disagree :-), but I’m certainly no more than a hacker now. But I’m rusty, and I plan to play around at Codecademy and see if the “juices” start flowing again. Looks like a great company and investment. I hope it works out!
On the education side of things, rather than everyone learning to program a more appropriate idea is for everyone to learn computational thinking. This is the concept of integrating and extending human thinking with the capabilities of computers. The Wikipedia page on this is: http://en.wikipedia.org/wik…Computational thinking is appropriate even at the elementary school level. Scratch, from the MIT Media Lab, is a programming environment with related curriculum materials for K-12 education that focus on computational thinking. Scratch also is used for a small slice of Harvard’s CS 50 course.A computational thinking foundation leads right into programming, but also building financial models in Excel, data analysis for medical or market research, and so on, stuff that isn’t typically thought of as programming.I am a huge fan of programming as well, and am very happy to see resources such as Codecademy out there adding to our global skills base.
when solving complex problems: decomposition == powerful.
code has massive amounts of leverage; what you give in code you get back 10x.
i think the “or” in the title of the post is a bitwise OR ..vs logical or exclusive.so,program = 0x1be_programmed = 0x2program_or_be_programmed = program | be_programmedha! +3 for the investment in codecademy 😉
Program, or be programmed.When I was in school, I waited tables and got the advice: work the table, don’t let the table work you. By which they meant, if one person asks for a class of water bring water to everyone at the table. If you’re the biz monkey or product marketing person and you don’t understand the technology at a broad, but shallower than an engineer, the engineer is really the one make decisions. I’ve seen so many pure marketing types told something couldn’t be done when in fact it could. The engineers always hated me for going back to my desk and demonstrating that it could in fact be done.
I love it!
you’ll find me waxing lyrical about code, but it occurs to me that when you’re in the web app business you’re really in the people business. people write the code.the future of computing isn’t with mass programming, it’s in making the programming go away. it’s interacting with computers on human terms, not on computer terms.it’s adding sugar to the communication not making it more sour.if everyone could program and our environment was programable it would be chaos!should all founders/C-level know a bit about programming? if you don’t want conceptual gaps, yes. if you don’t want lexical gaps, yes. if you don’t want fundamental product knowledge gaps, yes.
Great post. I’m currently taking Design classes because I believe it would help me be a better Tech CEO. Even though it’s hard for me to focus right now, I know that taking these classes is the best thing I could do for my future business self.I always joke about being a “Jack of all trade but a master of none”, but sometimes you don’t have to master everything, just do it well enough to get results.
P.S. I’m currently trying Codecademy…I think I’m in Love! I see me using it every day. I’m going to add it to my schedule to at least learn coding on Codecademy for at least 30 mins/hour per day.
Nice post. I have typically been the same way w/r/t Jack / Master. I know a little bit about a lot of things, but I am hardly a master at anything. I think being a “generalist” is fine because it suits my personality well, but ultimately, it will depend on whether I am a CEO that can implement those general skills. If not, then it is a bit less helpful to be a non-specialist.I started Code Academy the other day too. 30 minutes a day sounds sensible, I will shoot for that too. Good luck
Thanks for the comment. Good Luck to you too.
Computer science is not necessarily about coding, or even about computers or software. It is primarily about problem solving, and codifying “imperative knowledge”. It is the study of processes, and how to formally describe how to do things correctly or efficiently. That type of education can be application everywhere, especially as the world becomes more complicated. Things like Rube Goldberg financial systems, global markets, increasing amounts of data, terrorism, climate change, etc. It is also about using abstraction to deal with complexity. It’s not just about coding. In the future a foundation of all higher education may be something very much like computer science, but not just about coding.
Flopping that around just a little? Coding is not necessarily about computer science.Coding at its most generic is a cross level mind seta cross level collective metaphora cross level collective lexicona cross level platform strategya cross level reusable reuse paradigma cross level social rocket-fuel memeempowering everyoneat every levelto think and visualizeeverything and everybodyas potential component process elementsthat with the right scale of coding/assemblage toolsempowers the orchestrated arrangementof everything and everybodyinto standing wavesof network synchronized behaviours all with network-syncopatedpurpose driven gravity-well-feedbacksThe magic of course is all in the network organizing principle3D webs of syncopated synchronicityEverything is about coding at some level of networked signalling and homing control.PROGRAM, OR BE PROGRAMMEDDoesn’t just operate at the tech management level. It works all the way up the social stack.We are being programmed by those who know how to operate the money coding system that is political lobbying.We are being programmed by those who know how to operate Madison Avenue style public-perception-management coding systems.Point in case is Fred’s last post about the content industry reprogramming our DMCA platform into their self-serving Protect-IP platform.It is about more than just acquiring alpha-dog access to coding skills or a good superficial characterization for management purposes. It is about defining platform coding rules that at every level, technical, social and political, strive to democratize, to optimize, around an open and accessible reuse assemblage process.i.e. – not Google – not Facebook – not Apple – not etc. . . .IN SUCH A DREAM WORLDpoor amateur-coding saps like me could at least live the hope of hopes that some day soon the democracy inspired alfa-dog coding types out there would have a top-down beachhead for building high level social assemblage tools for the rest of us.
“I must create a system, or be enslaved by another man’s”- William Blake c.1820
The magic of the Internet – we can all be autodidacts now.
“Learn how to hack something together so that you can get people interested in your idea, your project, your startup.”I think this is great advice and what you will find is it will allow you to iterate much quicker than if you have to go through a third party (even if you can afford to go through a third party). You can start small and build. If you can pick up some basic design skills even better.One thing though that I would really caution is not to go live unless you have a through understanding of the security issues involved with taking input over the web with your application (if that is in fact what you will be doing). When you *laugh* when reading this cartoon you will at least be part way there, but it will still not be “time for you to (launch)leave”:http://xkcd.com/327/(skip to 35 second mark):http://www.youtube.com/watc…
“Program, or be programmed” is a catchy slogan, kind of like“real men code in FORTRAN” or “startupsdon’t need a marketing budget.”Cross-training is useful no matter what your professionalfocus may be. And a taste of ‘hello world’ programming can’t hurt (R.I.P. Dennis Ritchey). But I’dargue that the industry doesn’t need more people who think like programmers, itneeds more programmers who think like regular people.Here’s what Steve Jobs observed:“Creativity is just connectingthings. When you ask a creative person how they did something, they may feel alittle guilty because they didn’t really do it, they just saw something. Itseemed obvious to them after awhile. That’s because they were able to connectexperiences they’ve had and synthesize new things. And the reason they wereable to do that was that they’ve had more experiences or have thought moreabout their experiences than other people have. Unfortunately, that’s too rarea commodity.A lot of people in ourindustry haven’t had very diverse experiences. They don’t have enough dots toconnect, and they end up with very linear solutions, without a broadperspective on the problem. The broader one’s understanding of the humanexperience, the better designs we will have.” – Steve JobsYou see this thinking at breakthrough companies like Pixar (http://www.wired.com/wired/…) and Apple.So how about a discussion on the need for cross-training forprogrammers, and the CTO aligning with the CMO?
I very much agree with the sentiment.
I love the quote: “Programm or be Programmed.” – I was thinking a couple of month ago that being able to create your own web-page is going to be equal to writting. But this phrase is even more thought-provocotive. The reason I can hire programmers is because I learned the basic of programming 7 years ago myself: Actionscript, JavaScript, PHP and even JAVA. Still you need someone who can guide the micro-coders to build a macro-code. But if you haven’t coded yet, it will be hard to find the right team member 🙂
Much of the work that is done in any technical field can be automated to some extent, but the world isn’t saturated with programmers. As languages becoming easier to use (scripting languages are far more pleasurable to leverage, than lower level languages), non-specialized developers will automate their daily pain away.That’s not to say that all work is possible to automate, but there’s enough new work that emerges in a changing environment to provide ample opportunity to be reduced to a script. My latest script hack will save me 20-30 minutes (or more) every time I have to port our work libraries to a different operating system or build platform. Sometime last year I did something similar with my music playlists by refreshing and moving them about.
We need the founders who can see how the end application will work.Doesn’t matter if he can’t code if his life depended on it…that’s for those who have the ability to make what the founder sees.
To get ‘skills’ and expertise in the technical parts of computing, especially for Web 2.0, here is an outline in 8 steps:(1) Get a computer, hopefully a traditional desktop computer with a big screen, a tower case, a mouse, a full keyboard, a device for reading and writing CDs and DVDs, some speakers, and maybe a Web camera.Get the computer connected to an ‘Internet service provider’ (ISP).Learn to use the computer as a good user. So, install software for document processing, e-mail, Web browsing, playing music on CDs, watching movies on DVDs, simple manipulation of images, etc.It would be good for you to assemble the computer yourself; then keep track of all the parts and pieces and all their details for purposes of system management and maintenance; if you are not clear on how to do such things and still want to, then get a friend to help.Learn to use Google, read and post at AVC.com, read news, watch video clips, etc. Learn to set options for e-mail, your Web browsers, etc.Learn about installing the operating system and backup and recovery of the system and own files.(2) Pick the world of Linux or Windows. Here I assume Windows.I will make an unusual suggestion: Get a good text editor. Then much that you read and nearly everything you type will be via your text editor. There are several good editors; the classic is Emacs. I use KEdit; its macro language is Rexx which is elegant and powerful. A good text editor is nearly always by a wide margin the best target for your typing: Typing into anything else tends to be wasteful.Learn to write macros for your editor. This will be an easy step into programming.Your good text editor will have facilities to help you manage your system, especially your disk files.Net, a large fraction of your more important computing can be manipulating just simple text, and a text editor is a great way to do this. A good text editor is better for computing than a good chef’s knife and cutting board are for cooking.You may want a spell checker. I use Aspell as at http://aspell.net/win32/and have concluded that it’s terrific.(3) Learn a scripting language. I use ObjectRexx, e.g., as at http://www.oorexx.org/docs/and http://www.rexxinfo.org/Windows has a lot on scripting at http://technet.microsoft.co…Their PowerShell is likely now a better option than Rexx or OhjectRexx as a scripting language.(4) Learn HTML and CSS. There is good tutorial material and more at http://www.w3schools.com/and the last word and some good tutorial material is at http://www.w3.org/E.g., http://www.w3.org/TR/CSS2/t…is quite good on tables.There are also many books, some quite well written as tutorials.As your first, serious book I warmly recommendJim Buyens, ‘Web Database Development, Step by Step: .NET Edition’, ISBN 0-7356-1637-X, Microsoft Press, Redmond, Washington, 2002.As a technical tutorial, it is exceptionally well written. This book has a good chance of being your main source of information from next to nothing to a moderately capable Web site. Buyens gets you started with HTML, CSS, Visual Basic .NET, relational database, and several more advanced topics.To learn some HTML and CSS, use your editor to type in some HTML, with some CSS, save your work as a file with extension HTM, have your Web browser display your work, and see what you get.For more, go to the Internet, look at some simple Web pages, have your Web browser save some pages as files on your computer, and use your editor to look at the files. So, you can see how others write HTML.(5) Learn the basics of TCP/IP, ports, sockets, IP addresses, domain names, Ethernet, routers, DNS, etc. A good start is at http://www.w3schools.com/tc…and you can find much more including all the details via Google searches. Especially important is the collection of ‘requests for comments’ (RFCs) as at http://www.rfc-editor.org/r…and http://www.ietf.org/rfc/TCP/IP is the basis of the Internet, and sockets are the programmer level workhorse of the Internet, Web, e-mail and more. And you can use TCP/IP to have two programs — on the same computer or different computers — communicate.ObjectRexx has the basic TCP/IP calls so that can get two ObjectRexx programs communicating as a good exercise.Another exercise is to use ObjectRexx to send/receive e-mail via your ISP’s ‘post office protocol 3’ (POP 3) service. One of the more important RFCs is RFC1939 as at: http://asg.andrew.cmu.edu/r…Unless you work hard to do this exercise badly, you may like the result for your own e-mail much better than Outlook!(6) Learn to program in a compiled language, starting with some simple console (text screen) applications. Leave graphical user interface (GUI, ‘Windows Forms’) applications for later.Buyens is a good start here.Note: Usually a programming language is either ‘compiled’ or ‘interpreted’. JavaScript and Rexx are interpreted; Visual Basic .NET, C, C++, C#, PL/I, and Fortran are compiled. Interpretive languages can be easier to work with and have some other advantages. Compiled programs are usually faster, commonly 10 times faster.Do some exercises, e.g., walk a file system directory tree, accumulate data on the files and directories, and write a report on disk space usage.For another exercise, write a program that will sort files too large for main memory. For the sort algorithm, use ‘merge’ sort. Design the program to minimize head movement on the hard disks! To keep the program simple, just sort strings.For more, go to the Microsoft MSDN Web site, e.g., for all the fine details on what can do with strings, start with http://msdn.microsoft.com/e…For TCP/IP sockets, can see http://msdn.microsoft.com/e…You will soon see that .NET is enormous and seems to have nearly everything of much usefulness in commercial computing. So, unless you are doing something quite specialized, your software will consist of just a little, easy mortar joining uses of many classes as ‘bricks’ from .NET. Then much of your work will be finding the right classes and seeing how to use them.So, I keep on my computer copies of the more relevant Web pages from MSDN and in my software ahead of any significant use of a class from .NET insert comments with tree names on my system of the relevant MSDN pages. The first time I make successful use of such a .NET class, that software becomes a ‘sample’ I can ‘plagiarize’ in the future. I’ve found that having those comment lines with those tree names is just terrific after a few weeks or more.So far I have copies of about 3000 such MSDN Web pages, but those 3000 are only a small fraction of the total Microsoft has. Did I mention that .NET is enormous?Since the MSDN documentation is not always the best at being tutorial, you will have questions. Here Google searches work well. So does http://stackexchange.com/There are many Q&A fora run by Microsoft and where Microsoft experts commonly give good answers.Quite generally you have to make yourself good at getting answers to questions, e.g., looking up definitions, getting overview discussions, finding relevant code samples, finding relevant fora and writing good questions, etc. You can’t expect that all the information will be handed to you in perfect form, in the right order, easy to consume. You need to appreciate that very much some information sources are much better in some respects than others and have short patience with poor sources. Generally, don’t let yourself get stuck: If you appear to be stuck, then backup, ‘regroup’, set aside some goals, and find some different directions. These are all just good topics in learning which is and will remain crucial for your work in computing. In broad terms, from the beginning to the present, in the US, practical computing has been essentially just ‘self-taught’, including usually for college computer science majors. Sorry ’bout that.Beyond Buyens, as you make progress, you should get copies of several other relevant books, say, from the Microsoft collection or elsewhere. E.g., for Visual Basic, you will wantFrancesco Bolena, ‘Programming Microsoft Visual Basic 2005: The Language’, Microsoft Press.(7) Use what is in Buyens and at MSDN, etc. to bring up a simple Web site.Essentially all you need for the development is just your one computer with a version of Windows XP Professional or later and better.You will download and install the latest version of the .NET Framework, maybe “Microsoft .NET Framework 4 (Standalone Installer)” at http://www.microsoft.com/do…although there is now a version 4.5 available.Then your version of the Visual Basic .NET compiler may be on your computer at C:WindowsMicrosoft.NETFrameworkv2.0.50727vbc.exeThen a BAT file to run the compiler in a console session is just one line: C:WindowsMicrosoft.NETFrameworkv2.0.50727vbc.exe %1 %2 %3Your file system tree name may vary but will be similar. Give this BAT file a name you like, say, MYVBC.BAT, and put its directory in your environment variable PATH (sample learning exercise: You may need to look up and learn about environment variables, PATH, and how to add a directory name to PATH).You are now ready to do big things with Visual Basic .NET. If your VB.NET file is MY_PROG.VB, then command MYVBC MY_PROG.VBwill compile it. How hard was that? If your program has no errors, then you will get a file MY_PROG.EXE. Then to run the program, just type at the command line of your console window MY_PROGPiece of cake!Want some fast documentation? Type MYVBC -?It works great: The compiler finds and uses the .NET Framework, etc. It does what used to be called ‘link editing’ by itself. The compiler is shockingly fast; the resulting EXE files are surprisingly small; and the compiler error messages are quite good. So far I’ve found no bugs at all. If you need to build a DLL, then there is an easy command line option for that. You can also build your own namespaces. It’s one heck of a compiler.For running a Web site, you will have or install Microsoft’s ‘Internet information service’ (IIS) which is the generic, ‘low level’ software for your Web site. Basically IIS watches for users arriving via the Internet, runs your software for your Web pages, and sends the results to your users.Each Web page you write can be from just one file that has HTML, CSS, and Visual Basic .NET (VB.NET) software all mixed in — as explained in Buyens. Your VB.NET software will use classes from ‘active server pages .NET’ (ASP.NET) as documented in Buyens,Dino Esposito, ‘Programming Microsoft ASP.NET 2.0, 2005 Edition’, Microsoft Press, 2006.and at MSDN. I currently have copies of 678 Web pages from MSDN mostly on ASP.NET, IIS, etc. E.g., the ASP.NET class for putting an HTML table in your Web page is documented at http://msdn.microsoft.com/e…For such a file for a Web page, it is fine just to type that in using your favorite editor. Then save your work with a file extension ASPX in a directory that IIS has been told has your Web site (example learning exercise: You may have to look up how to ‘configure’ IIS), give your Web browser the URL of that file, say, for file DEFAULT.ASPX at site MYSITE give URL http://127.0.0.1/mysite/default.aspxwhere the 127.0.0.1 is the ‘dotted decimal’ version of the ‘loop back’ IP address of your computer. That is, on your computer IP address 127.0.0.1 is ‘reserved’ to be your computer! So, yes, here via TCP/IP you have your computer talking to itself! TCP/IP is nicer than any hope for sliced bread!Then IIS, ASP.NET, and Visual Basic .NET will do very nice things for you: Your page will be compiled; if in your file you have asked for debugging, tracing, etc., then you will get at the bottom of your Web page a huge table of details on the processing for your Web page. If you have some errors, then you will get some nice messages displayed in your browser. They will show you your first error message in good detail, and that is often enough, but you can get all the error messages at once if you wish.If you want to make use of relational database, e.g., MySQL, SQL Server, then you should learn ‘structured query language’ (SQL). It’s very much a fun language: There’s a story about the early days of Amazon where Bezos got excited by how much fun it was to type in and run a little SQL on the Amazon database! A good start on SQL is http://www.w3schools.com/sq…Relational database systems have been important infrastructure since before 1980, and it is risky to ignore them.On Windows, typically a program will get to relational data base via the classes in ‘active data objects .NET’ (ADO.NET). Most of the work is just to type into your VB.NET code a SQL command as a VB.NET string and pass it to the right ‘method’ in ADO.NET. Buyens gives you a good start. A good start on much more on SQL Server is at http://msdn.microsoft.com/e…and the language ‘transact SQL’ (T-SQL) (Microsoft’s version of SQL) is at http://technet.microsoft.co…In it’s full generality, SQL is complicated and challenging, but usually all you do is read, insert, update, or delete a ‘row’ in a ‘table’, and that much is easy.You will also need to define the tables and, in each table, the columns. For that I just type T-SQL statements into a file and run the SQL Server utility program SQLCMD.EXE. The file you type in can be awash in comments and really easy to manipulate with your favorite editor and, thus, explicit, easy to understand later, and very good to have. Here I am using just T-SQL and SQLCMD.EXE instead of Microsoft’s GUI SQL Server Management Studio (SSMS) which I use occasionally and for two reasons, first to remind myself how much I should appreciate T-SQL and, second to scream loudly enough for Microsoft to hear me and write no more programs like SSMS. SSMS can be okay as a first effort in ‘browsing’ around in SQL Server. Net, T-SQL is solid, well documented, and explicit and leaves you a good record of just what you did, and SSMS is none of these.(8) Once you get some facility with Visual Basic and .NET and get your first Web site up, you may conclude that your next challenge will be ‘system management and administration’ of your software, servers, network, relational database, backup and recovery and monitoring along with security, performance, reliability, and scalability. Yup.For more, you can get good at relational database, garbage collection, the Microsoft ‘common language runtime’ (CLR), ‘reflection’, ‘platform invoke’, concurrency, virtual machines, etc. If you get good at relational database, then you can call yourself a ‘database administrator’ (DBA).Mostly you have to be good at learning from the good materials that are out there, in books, in Web pages, in PDF files, etc. You can’t expect others to produce expensive content to make the learning a little easier for you. Indeed, the hard work of learning is between your ears where video displays can’t go.You can go a very long way in computing, especially for Web sites, with the outline here. Sufficient educational background should be math at the 8th grade level and good facility reading and writing English.For more in technical material, you can pursue pure and applied math and computer science at the levels of undergraduate majors or graduate study in these subjects.Then pick a problem that can be solved with a Web site and go for it!Usually the key to a successful site is millions of dedicated, devoted, engaged users. Then the revenue is from ads displayed to the users. If somehow your site is able to gather data on your users, then you may be able to get better ad revenue via better ‘ad targeting’ which is mostly an applied math problem.One way to get such users is to provide a solution better than available otherwise, and one way to do that is to exploit some applied math to take available data, manipulate it in powerful ways, and report valuable information.Some of the planning numbers are impressive: You can send a moderately complicated Web page in 200,000 bits. Note that while your users receive the ads, they come from ad sites; you don’t have to send the ads; and they are not part of the 200,000 bits! You may be able to get about 15 million bits per second bandwidth from your living room to the Internet for less than $100 a month. So, even half full, that would be 15 * 10**6 / ( 2 * 200,000 ) = 37.5(calculation courtesy of a Rexx macro in KEdit!) Web pages sent per second. You have a chance of building a computer that can send 75 Web pages a second for less than $1000 — note that now you can buy a 2 TB disk for less than $100 and 1 GB of 1333 MHz DDR 3 main memory for just over $3.Once your site starts to grow to something like 75 pages a second, you will be glad to have the 10:1 performance improvement from compiled server side code. As you want your complied code to run in production for weeks without problems (or ‘memory leaks’), you will be very glad to have the features of Microsoft’s ‘managed code’. As you are betting your business on your data, you may be very glad for the serious features of a good relational database system. While the enormous size of .NET is an early challenge, in time you will be very glad it is all there with the relatively good or better design, testing, and documentation there is.If you send an average of 37.5 pages a second 24 x 7 with three ads per page and $1 per 1000 ads sent, you would get 1 * 3 * 37.5 * 3600 * 24 * 30 / 1000 = 291,600dollars a month in ad revenue. Better ad targeting should increase that number significantly. More generally, one server, kept busy, can generate enough revenue to pay for itself in maybe a few days. So there is an opportunity for exponential, organic growth.Of course that revenue would be from sending 37.5 * 3600 * 24 * 30 = 97,200,000pages a month. So, we’re likely talking millions of users. So, one of the most important challenges is finding something, that is a ‘business idea’ and a ‘user interface’ (UI) and ‘user experience’ (UX) that millions of people a month will like well enough to request so many Web pages.So, why should a founder of a Web 2.0 startup learn to write software? Because (1) the software has to be written, (2) the founder either (a) has to write it using his own time and effort or (b) pay someone to write it. With (a), the founder now ‘knows his business’. With (b) the founder doesn’t ‘know his business’, has spent possibly quite a lot of money, and may still not have the software he wants.Multiple founders writing software? With .NET, the main bottleneck is just getting good with .NET, and the founding CEO needs to know the relevant parts of this material. Once the material has been learned, for the CEO just to write the software is not such a big problem. So, if the CEO just writes the software, takes his site live, and gets it growing, then he can hire people for the more routine work and avoid the ‘management overhead’, possible squabbles, and equity dilution of multiple founders.Generally a person who has put in all the hours alone at a computer with a stack of books and thousands of Web pages of documentation and gotten good at typing in 20,000 lines of software quickly will have little patience with someone with just a ‘business idea’ asking to have software written for no cash. In particular, that a person DOES know how to write software does NOT make them less good at finding good ‘business ideas’ or doing ‘biz dev’, etc. So, for writing software for no cash, a person who can do that can just write software for their own ‘business idea’ and own 100% of the result with no squabbles.
This is my first comment to this blog that I have been following daily for the last few months. I have hesitated because the quality of comments is on par with the quality of the posts (brilliant) and I’ve frankly been a little intimidated!I am thrilled to hear that USV has backed CodeAcademy. Last week I Googled “learn to code”, found this CA site and began the tutorials immediately. I have never written a line of code in my life (I’m 41) but am spending so much time in the tech world now that I thought I better learn the native tongue. So far I like the CA approach – dead simple. The one thing I’d like to see integrated is some illumination as to what it is I’ll be able to do when my coursework is complete.I am a CPG marketer, former beverage entrepreneur, and now tech intrapreneur that is treating digital/social like the disruption to my discipline that I believe it to be. I’ve been reading almost a book a week and following a dozen blogs of thought leaders like Fred and many others in an attempt to better grasp the magnitude of what this tech revolution will mean going forward. To this end, I’ll throw out a request to the community:What are the books/blogs I should read to accelerate my coding apprenticeship as I continue my CodeAcademy studies?–Keep in mind that I could not be more green.What are the books/blogs I should read to accelerate my understanding of tech as a disruption and how to practically harness? – Innovator’s Dilemma and Lean Start-up were my two most recent reads, but I suspect there are many more you all love.I look forward to taking a more active role in the community and will now continue to contribute until such time as FakeGrimlock threatens my life.Many thanksDuane
First off, welcome.Secondly: if you want deep, I would say Carlotta Perez or Marshall mcluhan. If you want a bit more businessy, I have heard good things about Rework by the people at 37signals.Thirdly: comment more, and you’ll be surprised by how smart you are.Sent from a phone, forwarned
Thanks ShanaI found Rework to be as entertaining as it was substantive.And thanks for the comment encouragement – I can’t wait to be surprised!Duane
If you’re serious about a coding apprenticeship, try Zed Shaw’s http://learnpythonthehardwa…
Thank you CamI’ll check it out. Do you recommend getting comfortable with Java (CA) first so that I can get the basics?Duane
CA has “JavaScript” tutorials as opposed to “Java”. The two languages are not related except for some syntax which can be traced back to a common root in C (another language). Sometimes you’ll see javascript (and other dialects) referred to as ECMAScript which simply refers to the formal definition of the language.Confusing, huh? ;)Javascript is one of the building blocks of the web, so you’ll definitely want to learn it. Keep going with CA for as long as you enjoy it (and if a time comes when you don’t enjoy it anymore, be sure to let the guys know so they make it better).The link to Zed’s book is a reference for you to continue your apprenticeship. It will teach you another useful language called Python and will get you all the way from zero to creating a simple website.
Got it (kinda), thanksI think this will be one of those leap of faith exercises, trusting that over time it will all come together and make some sense. Thank you for taking the time to explain further–much appreciatedDuane
welcome to commenting and coding duanethey compliment each other well
Thank you FredAnd thank you for creating such a rich environment here.Duane
Codeacademy is exACTLY what i have been looking for.I have seen the need for a while, but not gotten around to learning by myself. I hope after a bit of this i will parle tres bien le Francais. ;-)Thank you for this.
I’ve deployed code to our servers (and it even worked), but I’m convinced that it’s equally important to understand the theory of software and how different layers work together.Nearly five years ago, I had been recruited into a financial services company to lead global product development (this was my last job). About 90 days in, I convene a meeting to discuss what we wanted to accomplish with the UI for a new product.A couple of the engineers sat back and said “we can’t really do that…it’ll never work.”So I got up, walked over to the whiteboard, and diagrammed how we’d build it.I didn’t know the syntax to type into the IDE. But I was able to demonstrate that I knew when they were BSing me and when they weren’t, and that I knew what would work and what wouldn’t.From that moment on, I never got that answer in another product meeting.
awesome. i took the physics for poets class in college; same idea
In the light of this discussion, I thought it might be interesting to refer to the readers the work that barefoot college(http://en.wikipedia.org/wik… is doing training women in India and Africa do solar installations to handle basic energy requirements.
The ‘hack your own stuff’ advice is a good one.However, you have to reckon that the Foursquare guys are fairly exceptional people.Say for example, if you’re an entrepreneur who isn’t an MBA and lacks business administration experience, learning both business administration and hacking (even if minimally) makes your process a lot slower. It’s *always* better to have a complementary set of skills between two partners.If you don’t have partners with a complementary skillset, you are learning business and you’re not a hacker, it’s probably better to learn web design quickly enough to produce decent, near functional mockups, doing product design through UX, and +really+ look for a business partner who is technically orientated.Just my two cents.
Amen. Learning how to program is actually one of my goals for this year. (The other is running a marathon. And oh yes, having a kid, succeeding professionally and all that.)It’s also great to see USV invest so much in education. You talked a good game for a long time on your blog about education being a big opportunity online, but I never saw any investment. I didn’t doubt you, but it was a bit frustrating to not see that being carried out. And then came Edmodo, Skillshare, and now Codecademy. Awesome. Big kudos.
and one more that we’ve closed recently and will announce shortlywe needed to create an investment thesis, vet it, talk it up, generate deal flow, see a lot of teams and ideas, and get domain expertise before writing checksthat’s the best way to generate good returns
Awesome, can’t wait.Also, adding your second paragraph to my Tumblr as a quote because it’s such a good one.
Your last statement is very telling & so true. Knowing your model around your thesis really well is key to successful Seed & Series A.
As a CEO who learned to code so that I could launch our site alpha and get funding, I’ve been recently surprised by how valuable that set of skills is many months after launch. I define my job as being able to carry and communicate the company vision, being able to assemble the right team to implement that vision, and being able to inspire that team. I’m responsible to identify and explore changes in strategy when necessary, to “sell” the first several customers, and to identify and involve our partners.When I put it like that, it’s clear that I simply couldn’t do my job without the basic understading of software I’d gained in the months I spent first developing our product. I wouldn’t be able to understand or evaluate pivots in strategy, hire coders effectively, understand a platform-based vision, or select the right partners. In point of fact, I suspect I also wouldn’t have been able to raise our initial funds.Like Dennis, the first two coders I’d hired were brought on to re-do what I’d re-written. My principle regret is that we hadn’t immediately started on the next version – though I’d written the initial site in Rails, I hadn’t really understood REST and had made a few assumptions that were hard to reverse later.As a final note, I did this out in Pittsburgh, PA, and I don’t think it was “ValleyThink” or cultural momentum that led me this – it was just pure pragmatism.
we just made our first investment in pittsburgh. we hope to do more. black and yellow baby! so nice to see them thump the pats yesterday.
You sir, are a gentleman and a scholar.
Pittsburgh’s startup community is so vibrant and exploding in popularity. There’s a lot of talented people with great ideas. It’s a very affordable city in which to live and in which to start and own a business.
A CEO who can program is more likely to understand how their company fits into the big picture and use their bully pulpit to make the hard decisions. There’s a great Quora thread on this topic.My first exposure to Pittsburgh’s tech community was with a young Marc Ewing who was still attending CMU, and had yet to start Red Hat. It’s great to see universities like CMU and Cornell seeding the thought leaders of tomorrow.
Thanks for the inspiration, I’m going to be picking up coding shortly! As a Clevelander I’m a little bummed about the Pittsburgh thing, but…
I’ve been coming across this suggestion a lot lately in my readings on how to find a technical co-founder, and I’m seriously contemplating committing some some time to learn to code. In fact, I was just telling a friend of mine a few days ago about Codeacademy. My question is: how much time would you suggest for an aspiring entrepreneur to invest in learning to code rather than using that time to focus on finding ways to get one’s product launched? If I could get a basic prototype of my idea built while looking for a technical co-founder, should I be spending so much time learning to code, especially if I will not be coding later on? I agree that as a founder it is invaluable to understand the inner working of one’s product. I just debate what is the most efficient use of one’s time.
Fred – thanks for this follow up post. I am the young man you refer to in the opening sentence. Part of the impetus for the question is because I’ve been doing a lot of thinking about my future lately. I’m 25 years old, and have my entire professional career ahead of me. I have a blank canvas on which to paint my future, and the willingness to learn and study and work for what I want. But I’ve had trouble deciding what to pursue after I finish grad school. What space do I want to work in? What skills should I be learning right now? What world am I going to call my home? I’ve recently decided that that tech / entrepreneurship / VC is exactly the space I want to pursue, and to that end, I’m looking to build and refine skills that will help me get where I want to be. And your advice to me – become technical – is a really good place to start. I just discovered your blog a month or so ago. The comments section here is outstanding. It’s not everyday that a group of Subject Matter Experts congregates to discuss both the fundamental and cutting edge issues in a certain field. I feel like I’ve found that here, and to the extent that I feel like I have something to contribute, I plan to be more of a regular around here.
Amazing. I started playing with it just to check it out and spent 4 hours doing the JS course on my day off 😉
I think we who are adept have an inherent duty to spread our knowledge and lower the barrier to entry into our field. Aye, we desire competent programmers with a knowledge base sufficient for the position for which we would like to hire them. However, as all who are masters were once students, we most certainly have the knowledge to foster the pedagogical/androgogical methods which aided us in our thirst for knowledge and eschew those which were unproductive or so rarely used that they’re pointless to learn in any academic setting except special classes at a professional level.Fantastic tools such as Alice [1] and Hackey Hack [2] have lowered the barrier to entry for new programmers. Open source projects are the next logical progression for programmers who wish to hone development skills and become engineers and architects. More tools like these two, or further lessons taught using these two are crucial to educating a generation of future young coworkers and successors capable of filling our shoes and getting new ones fitted as the proverbial foot of the field and its position grows.[1]: http://www.alice.org/[2]: http://hackety-hack.com/
I’d love to see @FakeGrimlock:disqus write their own version of this post.
The ability to “hack something together,” should begin at a young age and within the context of public education. The kids I interviewed for a piece on hacking learned on their own, and what they cobbled together off of Google wasn’t exactly skilled coding. (Hacking Education http://ow.ly/7e9DO) When asked to describe tech classes at his school, a 15-year-old who’s created several apps now in the App Store told me they teach Microsoft Office – the 2002 version at that. He was lucky enough to have parents who hooked him up with the Apple Developer’s program, but what about the others, especially the great percentage from families who have no computer at home nor Web access?What could the VC community do to address the lack of programming education in schools?
I totally agree
Interesting.Similarly, I haven’t coded in some 20 years, and I stopped at Cobol(!) – tried C for a while but by then my work was becoming more business oriented and so never really got into the more contemporary stuff such as C.However, the benefits of understanding the principles of coding (in any discipline) are many.I loved growing with Unix and used shell programming and SQL a heck of a lot during many start up scenarios subsequently – whilst not programming as such it definitely reinforced the benefits in evolving a start up if one has some technical empathy – not least of which in terms of having to be a Jack of All Trades in the early days – head of sales, development, support, etc(!).Funny how – relatively – so little software is installed by a specialist nowadays – just legacy enterprise stuff, really. This obviates the need for a heck of a lot of technical effort being expended on installing/pre-sales/testing, etc. Wow, thinking back I spent so much time doing that stuff in the 80s/90s – each environment different, etc, etc – compiling X Windows fonts being a ‘favourite’ (sic) ;-)Means ones technical skills now, no matter how limited, can be focused on the product, the end user experience, market success. That’s a great thing.
I’m a non-technical co-founder in an educational startup. I tried Codecademy and found it fun. It’s incredibly cool to be able to jump into the deep end immediately and start doing actual JS code even before registering on the site. I thought the bite-sized progressiveness of the exercices worked really well and found the whole thing rewarding and addictive. But I got a pretty negative reaction when I showed the site to my technical co-founder. Basically, he thought that it would be far better to explain basic concepts to beginners in a more didactic fashion (how computer software works, what’s a variable, what’s a string etc…) and use an ad hoc programming language that would make it easier to explain the fundamental concepts. He was very unsure that a newbie would acquire this understanding by using Codecademy… Wonder if anyone else with a tech background feels the same way?
I couldn’t agree more. Getting (at least partially) technical is key. For this reason I spend the nights of the last few months getting better at Ruby, Rails while taking AI/Machine Learning classes at Stanford. Understanding programming and technologies is mandatory for ANY CEO, and given the wealth of learning tools that are now available (including CodeAcademy), there is simply no excuse to get anyone interested up and running.If Roy Bahat finds the time to do it – so can you: http://also.roybahat.com/po…
Totally agree. I come from the business side. Years ago, I learned to write JavaScript because it made life easier in helping clients implement (vs. always having to depend on the overworked implementation team). I cannot express how much ‘cred’ that also gave me internally and externally…the business and technical sides tend to discount one another when one tries to play in the other’s sandbox. If you can straddle both, or at least show that you try, you will be amazed at the results. My $0.02.
I love all the investments in education, and this one is perhaps the most obvious, since a place like Codecademy is a potential training ground for your future entrepreneurs. I agree that too many wannabe entrepreneurs (myself included) have fretted about how to find the mythical “technical co-founder” when they could be doing themselves a big favor and start learning some code. For most people, that’s daunting, so anything that strips away the “it’s only for computer nerds” stigma is great thing. I’ve managed to learn some HTML/CSS and Python ever since I realized that. And I was an English major.
Undoubtedly the best advice possible for a “business person” interested in startups. Not only does it help you ship faster, it is massive for gaining buy-in from stronger developers — they respect you more, and at the same time they can’t help but fix something that is neat but done poorly 🙂
I like the idea of Codeacademy, but I don’t like the larger argument that programming should be thought of as a fundamental human skill. Maybe a business skill, in some contexts.So, disagreement:http://www.scpr.org/blogs/e…
I think this applies for funders as much as it does for founders (if not more). It can only help: being able to gauge the skill of the developers on a team is obviously highly valuable, but even a more elementary appreciation for the process of developers is, I expect, invaluable. I am fully aware that I have a lot to learn. That’s why I started taking classes on programming….well, that, and I don’t want the developers to have *all* the fun 😉
Thanks for this post. I finished at Haas-Berkeley last year before starting Modify. A bunch of b-school buddies and I have *known* this to be true, but we’re focused on the business side of our startups. I forwarded your post to everyone, hopefully it’ll light a fire under our you-know-whats 🙂
As an ex web dev who hasn’t fired up a browser in anger in more than 3 years, this post really resonates: thank you.Here in Ireland there’s a great grassroots initiative called Coder Dojo (http://coderdojo.com/), started by an 18 year-old entrepreneur (http://twitter.com/jwelton), and backed by a seasoned VC (http://twitter.com/liaonet) – they’re running free coder camps for kids of all ages, resources are donated by local universities and private industry. I can’t wait until my kids are old enough to attend 🙂
Great post Fred! When reading this, I thought of our own program in Chicago called Code Academy (http://codeacademy.org), you should check it out sometime. What you describe in this post is pretty much exactly what we are trying to do. We have CEO of startups, we have MBAs, we have people who want to be software developers, and we have people who just want know how to build things for fun.
I agree… As a designer, I must know the language that drives my work. I’m a decent code hacker, but I recognize and value good code and seek out development partners who value my work as well.
yup
we put up the vast majority of the fundswe are the lead investor
Good point/question Paul. I was the lead organizer of the Sloan trek and the message Fred gave us was one we heard throughout New York City. I don’t think (hope) anyone on the trek was surprised by the message, but the point was clear.The general sense I got from Fred and others was not that you need to learn to program and build the prototype yourself and then never write code again. But there has to be some level of proficiency (French language in Fred’s example) to a) start the conversation and b) be able to credibly have meaningful and useful conversations with the group of employees that you will be working with 24/7 for the first 6 months. It was the same message we got from John Borthwick at Betaworks who said “who here knows what the LAMP stack is and what it means for your business?” I will never be able to put together the stack but at least I know what it means and the basic ramifications and some of the tradeoffs of using it.I was recently talking with a friend of mine who is looking to bring a jewelry distribution company online in a B2B or B2C e-commerce capacity. I told him that since he already had inventory/fulfillment, he needed to get up to speed in the online marketing/e-commerce channels of the world, meaning he should be buying AdWords, understanding cost-per-acquisition, exploring the Amazon platform, etc. Not so much so that he would one day be the best online marketer in the world (or even generally proficient), but so that when he went to hire the best online marketer in the world he at least was speaking the same language.Paul — your point is extremely well taken. Especially in a condensed and intense time period like an MBA program where you may not have 6 months to devote singularly to one specific skill. I didn’t get the idea though from the people we met on our trip that that was the exact message they were trying to deliver. Fred made it clear to us that he knows not everyone is technical and not everyone is a coder. But you have to start somewhere and that somewhere is being able to credibly talk with the people who are building your first product (as you order dinner, write product specs, mop the floor, and do the Quickbooks) Maybe Fred can chime in here for a clarification.And Fred, thanks again for having us. We had a blast!
You can’t lead people unless you’ve walked in their shoes.I’d agree about the target customer.I would disagree at the executive recruiter more than would be polite to discuss here.Suffice to say people like being recruited by people that actually know what they do, see point 1.
UNDERSTAND CODE IS SKILL WILL USE FOR REST OF LIFE.THAT WHY.
Good points. Pleasantly surprised to see shadowing a top flight executive recruiter as an option that you suggest and obviously (from previous comments) you have the breadth of knowledge for this suggestion to be meaningful. Few people understand the vast and sometimes deep business/marketplace education required by this field if doing the job right and especially the business acumen necessary. Although “top flight” is an important distinction. At this level, the recruiter’s (search consultant’s) focus is well beyond the mechanics/transaction and is more on strategy.
“Why not spend 6 months embedding yourself with your target customer?”I think any advice always needs to be tailored to the exact details of the specific situation. What you are saying reminds me of when I was growing up people would say “a law degree is always a good thing to have”.To which I replied “it takes three years”.It certainly didn’t make sense to spend 3 years in law school unless you were going to be practicing as an attorney or involved in a job that specifically required that type of legal background. And from my experience thinking like an attorney can be quite restrictive in business.
Because if the founder of a software company can build a functional prototype of the system then engineering will build the real version in a few months because the mistakes will mostly be made and solved in the prototyping process. If he has to iterate back and forth through the baby steps of the horrible first drafts of the prototyping process with an engineering team trying to explain what it is they are building it will take three times as long and cost 10 times as much.
I’m an MBA who’s attempted to start a different couple companies. The first was a bit of a nightmare for several reasons, but perhaps the most important was that I didn’t know how to write a line of code. Ultimately, it was a language problem–Fred makes the point perfectly in the post. Vision or no, if there’s a translation problem none of that matters.The second is enjoying some modicum of success, but it’s clearly miles ahead of the first. The major difference for me, besides having failed and learned from a few other mistakes along the way, was that I took a few months and taught myself html, css, and a little ruby and rails before I got started. I still don’t know enough for my co-founder to fully trust me to make a commit, but I know enough to converse with him. I know enough to put together mockups and speak intelligently about some of the things he’s working on. It’s truly made a huge amount of difference, both in my relationship with the rest of my team, and ultimately with the quality of the product we’re building. And, to be completely honest, an MBA doesn’t teach you all that much about starting a company. It teaches you how to run one that’s established, and some math and stuff, but it doesn’t teach you how to start a company. It takes being in the arena for that…So, my two cents is to take the six months and learn the language. You’ll be less likely to fail, and if you do you’ll be able to take on the next challenge with a skill set that really matters–you will have failed and you’ll know how to code.
i enjoyed it too michael
i totally agree about leading by example and having walked in their shoes my dad was a military man and he knows a lot about leadershiphe always made it clear that you have to lead by doing and that you can’t ask someone to do what you haven’t done
Suffice to say people like being recruited by people that actually know what they dogroupon tried to hire david heinemeier hansson not knowing who he was, and asked him to forward a current resume over so they could take a look. clowns.https://gist.github.com/128…
You equate recruiting with leading?
Ok, that is an all time classic, and shows what I think of recruiters.Recruiter: How much experience do you have with Ruby on Rails? David: Ummm, other than the fact I invented it, I suppose not much. You can’t make that stuff up.
In all fairness, this seems like a fairly junior level recruiter and someone more focused on sourcing. They don’t necessarily have industry knowledge or an understanding of the marketplace, or even business acumen. They are just filling up the pipeline with names.
NodeJS is platform with huge potential that I hope won’t finish broken into thousands of libraries that are helpful but may make use of core platform more complicated than it should be. As a developer you don’t wont to spend your precious time in finding suitable library for your project, or after a months of work getting to the clue that chosen stack is not most appropriate for the project you are working on. I would rather see Ryan Dahl implementing necessary stuff in NodeJS then this stuff solved through the libraries. Or better, I would like to see major libraries coupled into the NodeJS. It’s much easier for fixing errors, avoids code redundancies and makes platform stronger. In case of NodeJS it means keeping it more propulsive and astonishingly fast, that is its major characteristic.
“Type & learn. Don’t copy and paste.”100% second that. (what I’ve always done). Sometimes I take it further simply looking at the logic for a second, and then figuring out what needs to be done without looking at the full code.Typing also inevitably results in typos and then you spend time hunting down the typos which helps with memorization and learning as well.
I did do that. What I’m realizing is that it is a partially different skill set.
My top job is recruiting. Period. End of statement. Full stop.You know why the Lady Vols, and UConn, kick ass every year????In college the players pick the coach. Same as at tech companies. Why do you think Pat Summitt is the winningest coach ever? Hell she now admits she is battling dementia….think about that. Think about that!If my gals kick your gals I win EVERY time.
That’s great advice guys, thanks. As some one who is just starting Code Academy and trying to teach myself the basics, the typos have already been a fun way to check over my work and figure out what went wrong.
I always like to look at the psychology of things. So additionally:I think an advantage of having walked in someone’s shoes is *then they know* that *you can truly appreciate* the great job they are doing. Because you understand.It’s a little of a letdown to put so much effort into something and then feel that the boss is actually clueless to how much effort it actually takes to achieve the desired result. If you’ve never done the job, the compliments you give can be a little hollow.
“God only helps those who help themselves” = you’re much more likely to gain the respect and actions of a programmer, if you start by giving a true effort at, what may even seem, an impossible task.Lead by doing.
I am an MBA and have worked for close to a decade now on Tech. I have individually spoken and converted 300 non-techie SME owners into customers of opensource-based development initiatives and have managed a team of 10 smart engineers who developed a Skype like product in 2003 (my idea). I am doing it again with a college grad coder who is doing a proto for my startup. I am very involved in design and functioning of things.I dont code nor do I understand it when I read it. But I can surely say how many hours it takes to hack something together and I would be reasonably right.We need to communicate in a credible manner with programers and knowing to code is just one way (and perhaps not the best RoI way, as I have experienced myself 3 times now).
Thank you CharlieI see that site has come-up in a few other posts as well. I’ll check it out.Duane
Thanks for explaining further, Phil. Too bad you are not more passionate about this. ;)I think I understand the connection you were making between “You can’t lead people unless you’ve walked in their shoes.” and “Suffice to say people like being recruited by people that actually know what they do.”Sounds like you have had some bad experiences with recruiters. Since you take recruiting so seriously, I can understand why it especially bothers you when it’s done shabbily. Me too, Phil. Me, too.
I am sorry if I have offended you.Like a lot of things here we state in absolutes when of course there are grays.Looking at your site it seems you are more on a “recruiting consultant” rather than a recruiter.If somebody want to hire an outside person to help setup a process, stick to the process, and get better at the process, I am all for it.If it is collecting resumes through surreptious ways (like getting the new hire to send you the directory of company after you’ve placed somebody there), overstating qualifications to employers, generally not caring more about the process than a used car salesman, All of which I’ve experienced yes I would say it bothers me.So just like sales where I am all for getting outside coaching, great.