Technorati

Search this blog

Monday, October 27, 2014

Does the 21st century have a shortage of software amateurs?

I have absolutely no way of evaluating whether the following is good or bad advice:

“Software developers” is one of the job categories expected to grow the most over the next decade.

But in addition to many thousands of software professionals, we need far more software amateurs. McKinsey & Co. argued a few years ago that we need more than 1.5 million “data-savvy managers” in the U.S. alone if we’re going to succeed with big data, and it’s hard to be data-savvy without understanding how software works.

Even if you’ve left school, it’s not too late. There are many resources available to help you learn how to code at a basic level. The language doesn’t matter.

Learn to code, and learn to live in the 21st century.

Tom Davenport (@tdav) is a Distinguished Professor at Babson College, a research fellow at the Center for Digital Business, director of research at the International Institute for Analytics, and a senior adviser to Deloitte Analytics.

9 comments:

What does "code" mean these days? And why would coding skills be necessary for success with "Big Data?"

"it’s hard to be data-savvy without understanding how software works."

Do you know how your smart phone works? Do you have to know how to write macros in VBA to make sense of data in Excel?

However, what I'm currently running into is a whole lot of trash spreadsheets. One study claims that 88% of spreadsheets have at least one error. Gee, we really need more amateur programmers. I've seen spreadsheets that I won't touch. They are impenetrable, let alone being unvalidated.

There is an issue of complex software, and each revision adds more functions. Forget learning to code. Users need to read the manual and tutorials, and companies need to allocate time for that. Instead, I see people using programs to get the job done right away and they have no clue about the underlying assumptions. Programs and spreadsheets can have crap for numbers, but the graph looks really good. It's 3D.

The answer is that it is bad advice, even though Tom Davenport is "a world renowned thought leader."

Yeah, and then the software development team has to come in and clean up the messes made by the amateurs. I used to see that all the time in industry. So and so has this wonderful program that solves all our woes- guess what? You guys get to put it into production and maintain it. It is invariably an error ridden mess that does very little, and is written in an el weirdo language that interfaces to nothing else in the company.

Coding skills are necessary for 'big data'. If you want to gather data from twitter to do a sentiment analysis, you are going to have to write code to access the API. If you want to do a text analysis of all the comment that are written about a particular product, you're going to have to write code to gather that data and put it in a usable form.

If your data is too big to fit in memory, then you will have to use something like Hadoop and write code in Pig and Hive to get access the data and run calculations.

Even if your data is small enough to fit in memory, you have to be able to preprocess the data. All data, even data coming out of databases or spreadsheets, are messy and data from other sources needs lots of preprocessing. I don't know of any program that can do this without using coding.

Then, when you want to explore that data, you probably won't be able to do everything you want from Excel. If you want to use R or Python or Matlab, you are going to have to learn to code.

Even when you have a program that doesn't require any coding, you sometimes have to get into the code to do what you want. Tableau software bills itself as intuitive, but if you want to use a custom color palette, you have to change the code in the config file. I can do it will one line of code in R.

Sigh. So much wrong in so few words. Lets start with the first paragraph:

"The most important technological skill for all employees is being able to code. If, as Marc Andreessen once noted, 'Software is eating the world,' knowing how to code will help you eat rather than be eaten. Understanding how to design, write and maintain a computer program is important even if you never plan to write one in business. If you don’t know anything about coding, you won’t be able to function effectively in the world today."

I will now update it for 1910:

"The most important technological skill for all employees is being able to solder. If, as Marc Andreessen once noted, 'Electricity is eating the world,' knowing how to solder will help you eat rather than be eaten. Understanding how to design, build and maintain electric components is important even if you never plan to build one in business. If you don’t know anything about electricity, you won’t be able to function effectively in the world today."

I program computers for a living and think that there is some value in people kinda learning how they work, just like there is some value in learning a bit about music. But most people are going to *USE* them, just like most people use electricity or use their cars. Knowing how an internal combustion engine works isn't going to matter for most people, and knowing a little bit about programming isn't going to matter for most people either.

More: "You will procure much of your information from the Internet, and you need to know what went wrong when you get '404 not found' or a '500 internal server error' messages." No, actually, you don't need to know what went wrong when you get a 404 of 500. And learning to program (say in Pascal) wouldn't help you here anyway.

And finally: "Of course, being able to code is also extremely helpful in getting and keeping a job. 'Software developers' is one of the job categories expected to grow the most over the next decade." Which would be an argument for going to college and getting a degree in CS or EE or Physics and learning to program so that you could get a job. Which is pretty much orthogonal to whether the sales force for WalMart need to know how to program (badly).

He's a business writer/consultant/guru: http://www.tomdavenport.com/about/

"Thomas Davenport is a world-renowned thought-leader who has helped hundreds of companies revitalize their management practices.

Tom earned a Ph.D. from Harvard University in social science.

An agile and prolific thinker, Tom has written or co-authored sixteen best-selling business books and is one of Harvard Business Review’s most frequently published authors. He is the creator and/or early author of several key business ideas including: competing on analytics, big data, knowledge management, human approaches to information management, business process reengineering, and realizing the value of enterprise systems.

Tom was named one of the top 50 Business School Professors in the World by Poets and Quants..."

NOTE: He does not seem to have ever run a company (or even a division). He just tells other people how to run theirs ...

"McKinsey & Co. argued a few years ago that we need more than 1.5 million “data-savvy managers” in the U.S. alone if we’re going to succeed with big data, ..."

This seems to be his definition of the problem, and here is his solution:

"... and it’s hard to be data-savvy without understanding how software works."

This does not require learning how to program, and then he backtracks in the comments section with:

"...learning to code is more about learning how to think in a certain way than about what language you pick. "

He is encouraging people to spend a lot of time learning how to program when what he wants is some way of thinking he can't really define.

He is not talking about big data researchers, but 1.5 million data managers who would be better off spending their time just learning how to use their big data tool and the methods and assumptions used in the statistical models. He should be asking these people to take a proper course in statistics, not programming.

I hate the term "coding" It makes it sound like all we do is generate Morse code. Put that way, it is a low level skill. I think, however, it is important for everyone to learn to think in terms of algorithms, not memorizing them as kids do in school, but inventing them. It doesn't have to be a fancy algorithm like mergesort. But just learning to generate the steps to separate the digits in an arbitrarily long number, or compute the max of a sequence of numbers, can give insight into that kind of thinking. And not because everyone needs to "know how computers work". That is the internal combustion theory. No, but because so many of today's advances, in field after field, are computational in nature. Biology is largely being driven by computational methods these days. Astronomers are drowning in data and are developing advanced algorithms to work with it. Financial trading is increasingly the province of algorithms, not intuition. It is a whole world, and not having some inkling of how to think that way means not understanding a lot of new discoveries.

Just look at all the craziness around the NSA data collection programs. People all think that is some kind of mysterious magic, or perhaps thousands of phone operators sitting in a basement listening in. No! It is data mining, and it is based on algorithms developed in the past decade. You can mine Twitter in exactly the same way. It is so darn easy that we use it as an undergrad assignment. But how many people understand what I mean when I say "mine Twitter".

Not understanding, at some level, how algorithms work and are developed is a form of illiteracy in today's world