Software Development Literacy – Wave of the Future or Doomsday Device?
A few months ago, I read a newspaper article – which unfortunately I can’t find – about the idea that software development literacy may someday seem as normal as reading literacy is today. I didn’t think it was far-fetched at all. In today’s world *everyone* touches a computer in some way, even if it’s only the chip that runs the fare collector on public transportation. (This isn’t a discussion about rich and poor – I tried to come up with the most benign example I could. Admittedly, it’s more a first world example.)
Today there was an article in the Boston Globe about a company called FreeCause here in Boston that is doing something unique. The story explained that…
…29-year-old company chief executive Michael Jaconi told all 60 of his employees that they had to learn the programming language JavaScript. The idea is not to turn everyone into an engineer, but to give employees — from accountants to designers to salespeople — a better understanding of what goes into developing the company’s software.
Jaconi’s initiative is a recognition that technology has inserted itself into almost every aspect of modern life, and it’s a subject people increasingly need to know. In many companies, technology often creates barriers that separate technical from nontechnical workers. “There’s a pretty big divide between engineers and nonengineers, and what I wanted to do was bring those two camps closer together,” said Jaconi, a serial entrepreneur and former political campaign worker who is learning to code along with his employees. “I thought that this would facilitate more efficiency, bring teams closer together, and ultimately make our company perform better.”
Oddly, unless I’m really out of it, there’s a bug in the example the article showed in one of the accompanying pictures. Bonus points if you spot it.
I tweeted a link. (Through the wonders of HootSuite – the awesome social media tool I prefer over all the others – I also posted it to Facebook and LinkedIn at the same time.)
Software company wants all workers to know code http://t.co/OjKfFBkm -> All employees must learn JavaScript. Wave of the future?
— Marc D Anderson (@sympmarc) July 11, 2012
The fastest response I got on Twitter was from my friend Dan Antion (@DAntion):
@sympmarc Making everyone learn JaveScript might fall into the category of #beCarefulWhatYouWishFor
— Daniel Antion (@DAntion) July 11, 2012
I expected I’d hear something similar from a good number of the developers who follow me on Twitter, and eventually I did hear from quite a few with what amounted to disparaging comments about the idea. At best they were, like Dan’s, a sort of “uh-oh”.
I think it’s more complex than that initial reaction and also more important. Let me explain my thoughts.
As a consultant, I am paid to be an expert in some things. What many of my clients don’t realize, though, is that because I don’t specialize in any particular industry and I’ve been in consulting a very long time, I also have to know at least something about a lot of things: car manufacturing, stock trading, theme parks, higher education, pharmaceutical discovery, and the list goes on. (Those are all examples of real projects I’ve worked on over the years.) I have enough humility to know that I’m not an expert in fields out of my chosen one, but I have to know *something* about others in order to advise in a useful way and to write useful solutions.
Think about your major in college. Do you “do” that thing now as your everyday activity? I majored in Mathematics, and it’s pretty rare that I “do” math. I studied all kinds of things in college: psychology, chemistry, film making, rocks for jocks [geology], etc. I don’t “do” any of those things on a daily or even yearly basis. But I’ll argue with anyone who says that a liberal arts education – wherein one studies a wide range of things – doesn’t add up to a well-rounded, multi-talented individual. (Full disclosure: my major was actually called “Computer Mathematics”. The last time I came up with an interesting, computer-based way to factor primes was in college, though.)
Another thing I’ve seen over my years of consulting is that, generally speaking, the teams that I’ve seen be most effective share some traits. They are usually cross-functional, highly motivated, and inquisitive about each other’s knowledge. I’d take a team with those traits over specific, homogeneous knowledge any day. Note that I mentioned “inquisitive about each other’s knowledge”. That means that they want to learn a little something about what the others know. This helps them to work together more effectively.
As software development becomes more and more pervasive, what’s wrong with everyone having basic literacy in it?
We might be able to interact with technical customer support better. We may be able to understand what to do or not do to avoid infecting our computers with viruses. We may be able to save unending time by not doing things that cause our work to be lost, requiring us to recreate it. We might understand what we’re asking each other for just a little bit better, making us more able to collaborate on the important parts of the task at hand rather than level setting every time.
Simple programming knowledge (I almost said “basic programming knowledge”, but that would be too specific) is an excellent idea. To apply knowledge management principles to “using a computer”, if we can identify what the key things the high performers know that make them good at it and can teach the low performers just a scintilla of that knowledge, everyone’s competency rises. By knowing something about what’s going on under the hood, I posit we all become better digital denizens.
Also note that nothing in the article said that the accountant or the salesperson has to become a software developer. They just have to learn the basics – enough for “every FreeCause employee develop a product such as a Web page or toolbar component that could potentially be integrated into the company’s loyalty rewards software.” That’s potentially. Not definitely, and not absolutely.
I’m going to go with Jaconi’s idea as a wave of the future, and one I welcome. There’s plenty of other stuff to worry about in the doomsday category, and this isn’t one of them.
This was a hard concept to wrap my head around, which ultimately led to my ambivalent response. I’m all for an educated community, as evidenced by the fact that I developed a technical training program that has been in use in our company for over 7 years. The two main goals of that program were: 1) to help people to be able to make better use of the technology our company has invested in, and 2) to better understand how computers (devices) could be used. I figured if people knew some of what was going on under the hood, they would be able to help my staff design better solutions. I still feel that way.
When I suggested that they should “be careful what they wish for”, I was hinting that while education might be a useful sword, there can be danger at both edges. I will admit that the first edge that concerns me is one where I don’t have enough knowledge of the program at Jaconi to speak with authority. My fear is that they might teach people JavaScript without teaching them fundamentals of system design, or instill in them a proper respect for documentation and testing. I say “be careful…” because when those ad-hoc community crafted solutions break, or the power user who wrote them leaves the company, it’s going to be the IT staff who gets called to make repairs. Or, worse yet, people won’t notice incorrect results in critical processes that appear to be running well. The other edge, the good side, and the reason I started our training, i.e. educating people to become better consumers; exposes us to a different danger. I still love the idea, but several of my peers in other companies are struggling with a rapidly increasing demand for products and services from a newly aware customer base. The problem is that the IT budgets aren’t moving to allow supply to keep up with demand. Of course if the customers are able to help build the solutions they want…but then we switch to the other edge, and… Sorry, my head is starting to hurt.
I’m still noodling on this idea; in fact, I’m folding it into a blog post I’ve been working on about learning.
If a business imposes a “thou shalt know code” requirement, no matter how negligible you consider that standard, how many very talented people in non-coding positions are they going to lose who don’t have coding aptitude, don’t give a rat’s patoot about code, and/or are paralyzed by the idea of having to pass some IT test? Are these non-code staff members required to keep their code knowledge up to date? Is the company paying for them to be trained or are they expected to dedicate non-company time and their own $$s to get up to speed? What happens if a senior office manager says “No, I don’t need to know JS to support senior executives,” and walks? How much damage to the orgnaization does the loss of *that* specialized knowledge inflict?
Conversely, are all coders in the company required to learn the basics of the other specialties and areas of operations? Do they need to bone up on HIPAA regulations so they know the basics of HR? Must they demonstrate a certain level of touch typing speed or ability to file? Do they have to master chemical analysis to keep up with the guys and gals in the lab? Do they need to grok SAP like the wiz-kids in Finance? What about the demands of the stock room/warehouse, or maybe some basic vehicle repair to keep the truck fleet operational? Hey, if you can’t diagnose and swap out a bad carburator, you really shouldn’t be driving. Isn’t that the same attitude expressed by web geeks when dealing with end-users who don’t understand why the browser is crashing – if you don’t know (insert obscure web tech info of your choice here), get off the IntraTubz!
I think you’re making a bad equivalency here – the value of general, non-expert knowledge as a background to performing your specific IT work vs. having to know an exacting language that is only useable in limited circumstances (remember, JS may be a huge part of *your* life, but it is irrelevant to 99.9% of the rest of the US workforce) and has no direct applicability to a staff member’s task at hand. As a liberal arts major, I am in complete agreement that knowing how to think, having knowledge of the world, being curious about what other people do, etc., is a good thing. It’s the only way *I* can get my job as a SharePoint analyst and developer done. I have to understand their business needs to provide them with a technical solution. However, I don’t need them to know the details of my development tool set, nor do I need to be hands-on with their tools.
Mostly, I am flabbergasted by the arrogance that my tools, languages and perspective are somehow so all-important that others must walk in my shoes to be in my organization. If a CEO or company president wants everyone to be conversant in JS, then hire programmers for everything. And watch the company tank in a month.
Unless programmers are required to cross-train in the disciplines of the other members of the organization – making sure operational knoweldge is truly shared – then this is technical narcissism, no more.
Your post – and the comments – echo a post I wrote on my blog in January. Here is an excerpt:
With end users, I believe that a little guidance can go a long way. Of course it might be hard to picture users digging into client side code today… well, just like 20 years ago it was hard to imagine users editing Web pages or building automated workflows.
[…] I am certain IT pros are not too excited about these user driven initiatives.
Things are not going as fast as I’d like to, but I am still on my way to teach JavaScript to SharePoint users! The original article:
http://blog.pathtosharepoint.com/2012/01/11/bridging-the-gap-between-the-users-and-it/
P.S.:where do you see a bug? I can hardly read what’s on the picture.
Hi all, I guess that not all the employees will be converted to programmers, but hopefully it’s doing good for the business culture in this software company. Hopes it’s a sign of a wave into the future!
And the bug, the name of the var is uppercase and the names in the output is in lowercase, or?
Christian:
You got the bug! (I would have expected you to.)
A lot of people are freaking out about what this company is doing, but oddly, they are all developers. I don’t think I’ve heard from any non-developer who was bothered enough to make a comment. That tells us something, doesn’t it?
M.