Perhaps this is self-serving, but I completely agree. If you plan to be in the software business, it pays to know a little bit of what your business is built on.
The best way to learn how to code is to pick a small project, build it and deploy. With app stores galore (Google Chrome, Apple, Android) there are plenty of interesting opportunities for small applications to get your feet wet. I wouldn't worry about making the next big thing. Pick something fun and ship it.
I personally would start with a scripting language and build some cool games with it. I personally would recommend starting with Lua and using Corona (http://www.anscamobile.com/corona/) to get started. This will give you an application that is easy to build and deploy across multiple platforms.
I agree with most of this. I work in marketing and knowing Excel better than most (hardly coding I know) and a little bit of VBA and I get a lot of efficiencies where others can't. I'm now leaning some basic web programming at the moment. It helps open the mind to what can be done which in turn should make me a better marketeer when it comes to making plans. Plus it is good to know if engineers are being asked to do too much or if someone is just work shy... when invariably we ask people to do too much.
On the flip side I think it would be great for the engineers to spend some time in marketing and close up that divide to work better together. Often I see both sides try to keep each other out other their business when much value can be had when marketing gels with engineering.
I wouldn't regard Excel as "hardly coding". It depends on the difficulty of what you're doing. If you're using it as a data structure to organize numbers, then that's obviously not coding. But complex Excel data modeling feels like coding.
I did this a lot at my last job. Some portions of the spreadsheet function like tables and calculations on data. Others control input variables. Yet others would just display the data in charts and graphs.
Excel is considered 'functional programming', which is different than traditional programming but nevertheless incredibly valuable. I took a 'Computer Skills for Business' class during undergrad and I can't thank it enough for turning ten-minute tedium into snippets of code.
Not sure about my greatest triumph, but my biggest problem is definitely how certain tasks are either hilariously easy (linear analyses, data modeling) or prohibitively frustrating (lack of conditional loops, version control.)
Generally speaking, I'll use Excel when I want to go quickly from nothing to displayable content (it also helps that it's easier to explain away an Excel formula than show someone a mess of Haskell). And, on a tangential note, it certainly helps that pretty much every school or office computer will have some version of Excel.
knowing Excel better than most (hardly coding I know) and a little bit of VBA
There's no question that spreadsheets are programs, albeit not written in a general-purpose language. Question for you: what do you do in VBA? i.e. in what areas does the spreadsheet alone not suffice?
Most of the time it is because the existing functions are inadequate, so people end up adding new ones in VBA. StringConcat, for example, is far more powerful than the regular concatenate function.
When you say "function" you mean something that just does computation, right? As opposed to code that accesses the Excel object model to create interactive effects, like, say, "click this button to change the background color over there"?
How much VBA could be replaced if Excel gave you the ability to make functions just out of spreadsheet cells? That is: build any calculation you like in a spreadsheet, tell Excel "make this calculation be a function called FOO", then use it wherever you want like a normal function: "=FOO(123,A1)" or what have you.
Yes on the definition of function. I did also use VBA to make certain visual effects possible (the one I remember was some advanced conditional formatting).
On VBA being replaced-- I don't know. It depends who the users you're talking about are. Most people I worked with didn't know any VBA because our models weren't that complicated. I in particular was working on a project that was computationally heavy.
Can you describe the computationally heavy spreadsheets you made? How many cells, how many distinct formulas (i.e. distinct except for relative references), how many worksheets, how long it took to recalculate? Were you pushing any limits of Excel? Were there annoyances?
(My email's in my profile if you'd rather discuss it offline.)
I use it for automating repetitive or recurring tasks where formulas can't cut it or they would make the spreadsheet overly heavy to work with. So a lot of data cutting and organising especially when I pull data from systems that don't integrate well with Excel.
I agree w everything you wrote above, but I lack the tech knowledge to understand the following comparison: "high powered marketing is distribution which is almost all code these days"
Would appreciate it if you further clarified. Thanks!
Things like Google Apps Marketplace, the App Store, Intuit Anywhere, the Windows Store are all technical. Negotiating with then requires knowledge to maximize the opportunities.
They are a subclass of the wider deal. The Internet is the main distributor. If you look at YouTube's growth it wasn't just that they hosted videos but they found a way to use flash to embed videos on other people's sites.
The Facebook Like buttons are another example of using technology as a primary form of market expansion.
This blog entry makes me want to write a similar entry: "Why coders should try their hand at marketing and BD." The subtitle would be "A real life lesson in understanding your customer base."
Good stuff, I particularly like #6. As marketer, knowing some programming has come in handy when working with technical folks who occasionally come down with a case of tunnel vision.
I would also add:
- Agency Management - Whether its calling your agency on BS or knowing how to use firebug to quickly diagnose a site problem, it definitely has saved me. (Recently I called a disgruntled web designer out about not using font-face and he has been much easier to get along with since)
- A focused approach - Since I have started to learn programming I noticed that I apply programming principles to (rather mundane) tasks that take up a lot of time but often go overlooked. For example, when programming and creating variable names I make them as specific as possible, so if someone else was working on my code they would know exactly what it is. A simple concept to most people on HN but its something often overlooked by non-programmers. Open up an excel file from marketing person and you will often be left scratching your head.
As for tools for learning to code, recently I have seen lots of places talk about codecademy, but most leave out CodeSchool.com. Definitely recommended - it's been a been a huge help for me and gotten me to the point where I am ready to take it to the next level (hopefully @ Hungry Academy).
I think there's a huge difference between the kind of "coding" being discussed here and the work of an actual software developer. That said, if coding simply means having some familiarity with the concepts of computer programming, then I think it definitely makes sense for those people who are interested to partake!
For DBA's should be a must, for automation purposes, backups, custom reports, etc, etc...
And for Marketing it's just kind of scary... some of those guys start by saying: "I know how to program and that feature could be ready in a day or a couple of hours"
I work in marketing->e-commerce and I think it's a great idea to learn to "program". By no means am I a good developer, but I have played enough with Rails and PHP and deployed a couple of simple apps to production environments and I feel like I know enough to understand how to put together a coherent business requirements document.
I think if not programming, at least process modeling or class diagrams should be learned.
This type of conversation begs the "put-up or shut-up answer" and if it works you get a new feature. the real trick is actually dealing with long-term support for something that might have started out as a hack. Features and short-term tests usually need to be refactored for long-term health. If you don't do the work up front be prepared to do a bit later, just make the choice consciously.
If it "works" superficially it will be considered good enough by management. High fives all around, the checklist is ticked off, and everybody moves on -- except for the poor developers have to maintain the mess.
Nimbleness doesn't mean creating crushing technical debt that has to be solved immediately by somebody else. :)
I ve had a product manager guy trying to do that. Didn't help; his ideas were mostly irrelevant. The problem is he grew an attitude and tried to interfere with my work.
I generally hate analogies, but it's like a real estate agent trying to work with architects.
As a "businessperson" that does some light coding on the side for fun (mostly scientific programming), I really appreciate the author's argument.
Unfortunately, it's difficult to find organizations that know how to make the most use out of those skills (outside of the start-up community, and even within the start-up community it's surprisingly rare to find job postings for BD folks that mention relevant/valuable coding skills).
Someone a long time ago, possible H.G. Wells, said "Statistical thinking will one day be as necessary for efficient citizenship as the ability to read and write". He was right. This would suggest that most citizenship is effected inefficiently.
I suspect in 10 years at least, things will go similarly for programming. But maybe in 30,40,50 years; better diets,better environments, nutritional junk food, better education, designer children, gene therapy, drugs, implants, whatever will push mean IQ out of its current local maximum.
The best way to learn how to code is to pick a small project, build it and deploy. With app stores galore (Google Chrome, Apple, Android) there are plenty of interesting opportunities for small applications to get your feet wet. I wouldn't worry about making the next big thing. Pick something fun and ship it.
I personally would start with a scripting language and build some cool games with it. I personally would recommend starting with Lua and using Corona (http://www.anscamobile.com/corona/) to get started. This will give you an application that is easy to build and deploy across multiple platforms.