By Deane Barker | September 19, 2003 | 7 Comments
I’m about to admit something odd, and perhaps career-threatening: I’m sick of learning.
There, I said it, and I feel better. It’s true: learning about new technologies and new ways of doing things is something that plays on an addiction of mine and of many other geeks, I’m sure. We just can’t help but learn about the newest way to run a content management system, develop a Web application, send data from one computer to another — it’s intoxicating to us.
The bizarre thing is that we want to learn it, even if we never do anything with it. We just want to know. When I was a kid, I used to buy board games and role-playing games just to read the manuals. I had boxes of them that I never played, I was just intellectually challenged by the game systems, and I loved to wrap my mind around them. The same thing plays here.
Jakob Nielsen just wrote a column that says much the same thing:
“Recently, investments in new technology have slowed and productivity has surged because companies are focused on making existing technology work rather than chasing the latest fads.”
I’ve written about this a couple of times. Back in May, I wrote:
“You know what I think? We have enough platforms already. They keep getting faster and simpler and one day there’s going to be a platform to which I can just say, ‘Hey, platform, build me a Web app,’ and it will be done.
But you know what? Most apps will still suck. Building a great Web site or app isn’t about platforms, it’s about usability and content development and interface design and program flow and all the intangibles that you have to think about. These are things that no platform is going to fix.”
Two months later, I wrote this about the glut of content management systems on the market:
“I’ve tried very hard to keep track, but there are too many. And there’s so much duplication. Every day a new system comes out that says it’s better than the last one. But is it? Has anyone really broken any new ground in content management in the last two years? We run from system to system like we have CMS attention deficit disorder.”
It’s true — we learn far more than we are ever able to use. We learn just for the sake of learning. We find some new technology, read about it, then whip up a script or two just make sure we know how to do it, then we dutifully zip it up and file it away in a “Code Samples” folder somewhere for future reference. And there they sit today, like wallflowers at a school dance, waiting for the application that will likely never come.
This may seem harmless, but does it, in fact, hinder our ability to produce? Does all this learning and all the attention span we spend on new technologies detract from what we should be doing in the here and now? How many applications have gone unwritten because we think some new technology will obviate them in the next few months? How many ideas languish because we’re playing around with the new hyper-whizzbang protocol, convinced that this is the solution to our problems and will make every application fly off our keyboard with ease?
Joel Spolsky of Fog Creek Software has written a number of items that say this same thing. He recently talked about how he interviews and hires new employees. He stated there were two criteria: “Smart and Gets Things Done.”
“Gets Things Done is crucial. People who are Smart but don’t Get Things Done often have PhDs and work in big companies where nobody listens to them because they are completely impractical. They would rather mull over something academic about a problem rather than ship on time.
These kind of people can be identified because they love to point out the theoretical similarity between two widely divergent concepts. For example, they will say ‘Spreadsheets are really just a special case of programming language’ and then go off for a week and write a thrilling, brilliant white paper about the theoretical computational linguistic attributes of a spreadsheet as a programming language. Smart, but not useful.”
This reminds me of a lot of the geeks I know. “Smart, but not useful.” I dearly hope it doesn’t apply to me, but every once in a while I find myself trying to make something work just to prove it can be done, and I wonder. Joel also wrote the forward to a new book “In Search of Stupidity,” in which he opines:
“There are still scads of programmers who defend Netscape’s ground-up rewrite. ‘The old code really sucked, Joel!” Yeah, uh-huh. Such programmers should be admired for their love of clean code, but they shouldn’t be allowed within 100 feet of any business decisions, since it’s obvious that clean code is more important to them than shipping, uh, software.”
More evidence, this time from NetCrucible:
“You can make lots of people happy and solve lots of real-world problems without having a very good platform, but you can go broke even with the ‘best’ platform if you are NOT making real people happy and solving real-world problems. And as far as I can tell, real-world problems that could benefit from software are infinite.”
Is learning a defense mechanism? Do we keep learning so we don’t have to write code? Is learning just an easy way to avoid having to actually put ideas into practice? Is this a case of, “Those who can, do. Those who can’t just read a few more blogs and test new theories.”?
Let me summarize the two previous rants I’ve been on about this:
- Platforms will give you back what you put into them. It’s like a marriage: put the time in, overlook the faults, celebrate the benefits, and you’ll have a meaningful relationship.
Take this site, for example. We run on Movable Type and there are a number of things about it that annoy me. However, I’d rather pump out content (almost 10 entries a day on average), than fiddle with it, so we live with the limitations. Consequently, this blog has been enourmously successful.
- In very few cases will the techincal underpinnings of an application be the dividing line between great and also-ran. Applications are about usability. A great application is not great because of great code. It’s great because the purpose, the interface, and the flow of the application makes the users happy. Don’t hire another programmer, hire a good interaction architect.
Do yourself this favor: disconnect your network connection for a week. Don’t take emails, don’t read blogs (certainly not this one), and stop learning. Forget all the new technologies you’ve heard about in the last year and confine yourself to something tried and true. PHP 4. ASP 3. Visual Basic 6. Perl.
Then, above all, do something. Shackle youself to this technology and write something. Stop worrying about code and protocols and what Poindexter the Perfect Coder will think of your class files. Don’t look out on the horizon and worry that a new language will render your app irrelevant. Just write something. Solve a problem. Make an existing application better. Re-work an interface to remove issues users have been complaining about. Deliver some value to someone, somewhere.
And do it with the technology you have now. You’ll be a better person for it.
What Links Here
I agree that I love to learn new things. However, I’m much more motivated to learn stuff that I know will help me out right now. For instance, I know that regular expressions are powerfull and can be easy to use. I just don’t really know how to use them very well. So, if I’m working on something that I know will be difficult to do through normal code, but simpler through regular expressions, I’ll take the time to learn the regex.
I think that’s a win-win case. Because, I’ve learned something new and provided a better product because of it. And, next time, I won’t have to learn it again, so, development will be a lot faster.
Instead of learning “new” stuff, learn about how well you’re doing your current stuff… measure and reflect on what kinds of defects you put into your code (they don’t creep in by themselves, even though we call them bugs), and how you might detect and correct defects more quickly, or prevent them.
” Instead of learning ‘new’ stuff, learn about how well you’re doing your current stuff…”
I agree with this. If you put time into mastering an older platform rather than learning 20 new ones, you would be a much more effective developer.
I think back to Movable Type. Probably the most successful blogging app around — written in Perl/CGI.
I think this post is pure wisdom. The Dorothy Parker quote that graced the header, but now seems to have disappeared, is also quite brilliant. What was it? I think it was: “Curiosity is the cure for boredom. No one has found the cure for curiosity.”
For a long time, I thought of curiosity only as a good thing and I took pride in it. But this was self-delusion. Follow-through and the ability to tolerate boredom are crucial to success in any endeavor. “Curiosity” can be a good name to hide bad things — self-indulgence, a childish demand to be constantly entertained, a kind of gluttony for intellectual amusements. Binge/purge cycles on blog-reading, anyone?
I suppose certain virtues & vices are just the flip sides of each other. A detail focus and an appetite for puzzles, which make for a good technician, often entail a compulsive and overly fixated quality of attention, which makes those same people blind to the big picture and less capable of avoiding detours and sticking to longterm goals.
Geeks are a bit like terriers. They’re bred to chase things down through tiny little tunnels. They’re a bit neurotic.
For me this appetite to learn new things come from a very realistic place. When I started programming in C++, I didn’t really want to learn more new stuff. My first personal project was writing a game called Dr Mario. I programmed that for a few months, until in my programming class I learned about something called “classes”. Whoa! I went back and rewrote what I had written using classes, and let me tell you – it made a whole lot more sense. I can’t begin to tell you the times I put a lot of thought into writing something myself – only to find out someone else had written a free, much more stable version. Now I always search for a program/library that does what I’m trying to do before I write it myself. And it has really saved me quite a bit of time.
That being said, I like to read blogs to read about neat new libraries and programs. However, I don’t feel the need to really get into how those neat programs work – I have more important things to do. But I do think it’s very beneficial to know what’s out there!
Overall I do agree with your point though – don’t dive into things you don’t have an immediate use for.
Very interesting read, and entertaining (in geekish ways). I’d rather get something done personally than try to make the code more perfect. Next time I just want to get something done, already I know how to make it a little better, instinctively. I suppose there’s a phase in every programmer’s life where elegance is more important than anything else. For me it was with Java and I got carried away in ultra-elegant class-files. After one week I noticed the game I wrote could do about 1% of something I could hack together in some Basic flavor, and it started to become hard to manage. Actually, I still like to look at the source, but it reminded me more than anything that the result counts, and not the code.
However, I’m also a big fan of manageable code. Especially these days where I’m working on a site with over 50,000 pages. Everything that’s a little weird and workaround-like (legacy code) takes like several days longer to update or make a simple change. Impressively unflexible. Bad code also reminds us we need to be careful.
About new technologies, well, it helps to read up on the latest buzzwords — even if it just makes you decide you don’t have to get into it yet, or you give it some more years. You might even wait until the first actual application is out before you try yourself. Wait till it’s stable. Keep it in the back of your head. Go on with what works.
For me, what works is something like PHP at the moment. Certainly not the most elegant language (and I also program many others), but definitely great user-base (=many code samples) and a huge core-library. And then connect this simple thing which works to something grand, like the Google Web API… a lot of interesting stuff to be done with that! Well, more at my Google Blogoscoped… http://blog.outer-court.com … I’m getting carried away…
I would say u full of bullshit. Once was said that nobodys gonna buy watch a box which today is know to be a TV. So shut up with your stupid $hit. There will be apps and they’ll build the best websites ever been.