A recent post by [Christian Heilmann] is one of several I’ve read lately talking about how Web sites–Stack Overflow, in particular–are breeding a new kind of developer. The kind of developer that simply copies and pastes example code or schematics with no real understanding of what’s going on. His conclusion is that developers who don’t fully understand what they are doing will become disinterested and burn out. He’s talking about software developers, but I think you could extend the argument to developers of all kinds, including hardware hackers. He concluded that–at least while learning–you stick to the old ways of doing things.
I have trouble disagreeing with [Christian] on the details, but I do disagree with the conclusion. People have copied work from other sources for a very long time. We’ve all seen circuits that were clearly either torn from a datasheet or even glued together from multiple datasheet examples way before there was an Internet.
There’s two things that are slightly different today: First, everyone has easy access to lots of examples. You don’t have to go find a book (possibly at a library), search through it, and find one or two examples. A quick Google will find dozens or hundreds of examples.
The second thing that is different is that there are places exist like Stack Overflow where you don’t even have to go looking. You can simply ask, “How do I do X?” and you will get answers from someone. It might be wrong. You might not understand it. But you’ll probably get some kind of answer.
I suspect the hacker community does this less than the general population. We want to build our own things, even when it sometimes doesn’t make a lot of sense. But even so, most of us draw the line somewhere. Do you really want to develop a BSP and port Linux to every board you build, or do you buy a Raspberry PI or BeagleBone? (And, yes, before you comment, we know that YOU, in fact, write your own custom OS in machine code for each and every project.)
However, if you don’t have that hacker mentality–and not everyone doing hardware and software development today does–grabbing something off the shelf is a big win. In the workplace, in particular, this is encouraged even though it isn’t always the best idea. I think the problem is we are in a period of transition. The Internet has fundamentally changed how we work, but how we teach people hasn’t fully caught up.
Being an engineer or designer or creator years ago meant you had to know how to solve tough problems. Sometimes that took research and part of that skill was knowing where you had a high likelihood of finding information on a particular topic. Being a research savvy problem solver (and a hacker, by our definition of the word, nearly always fits that description) still has value, of course. But it isn’t as valuable as it used to be. We need to learn (and teach) a new skill: using Internet research. Off hand, I’d say this has several key components:
- Formulating a relevant query
- Asking relevant, complete, and reasonable questions
- Evaluating the relative merit of what you find
- Adapting what you find to suit your exact problem
While there are some courses that talk about how to do search, most of them focus on the first aspect–the query. Only a few (like this one from Berkeley or this one from the UK) consider critically evaluating what you find, but even that doesn’t go far enough if you are trying to incorporate a schematic or piece of code into a working design.
Formulating a Query
This seems stupid, I know. But over and over again I have people ask me a question that can be answered with the first result from a Google search. They’ve usually tried, but there’s clearly a division between people who can come up with the right search terms (and know how to use the advanced operators that Google provides) and those who can’t. I try to resist the urge to shame the people who ask me questions like that.
I wish they required a class in asking questions before you could graduate high school. Go to any Q&A site and you’ll find general questions like: How do I build a robot? On the opposite end of the spectrum, you have the 42-page questions that only the most bored person will bother to read and internalize to provide a reasonable answer. There’s a good document available online about how to ask good questions, that’s worth a read.
Evaluating the Merit
Shockingly, not everything on the Internet is correct. Even when things are correct, they might not apply in your situation. For example, if I asked you “What’s the best truck?” You might give me a pretty reasonable answer until I reveal I need to transport gasoline. In the old days, you figured anything that was printed in a book, magazine, or vendor’s data sheet had at least some vetting from someone other than the author. That didn’t ensure it was correct and high quality, but it did tend to weed out the most obvious bad content. A corollary to this: to evaluate it, you are going to have to understand it, not just take it on faith. You need to consider the source and match up against what you know to decide if the information is correct or not.
No answer is likely to meet your requirements completely. In fact, I often see people struggle badly to make something fit when it would have been easier to do new development (or use a different tool). Reuse is often a good thing, but it isn’t always. Ideally, you will fully understand something before you use it so you can fit it to your exact situation.
Ban the Internet?
I like to think most of us are smart enough not to cheat ourselves. You know that if you cheat your way through a class, you aren’t really getting benefit out of it, and I would imagine that anyone motivated enough to build projects on their own are going to take time to understand what they reuse, and that’s great. It gets more complicated when you have an external entity (like a boss or a teacher) pressuring you.
However, I think reusing things from the Internet is part of the new landscape and it won’t go away. It was easy to, for example, lament that calculators made math too easy for students. But the answer has not been to ban calculators. You had to change how math is taught at a fundamental level.
So when [Christian] talks about the “full Stack Overflow Developer,” I think he’s missing the point. The developer that can effectively mine the Internet for possible solutions, evaluate them, and adapt them is going to win. We just need to get people in that mindset and to stop blindly reusing things we don’t understand. We should teach handling Internet-based reuse as yet another tool that you need to master.