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:
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.
Follow Gadgetopia on Twitter
I'm a little surprised, frankly, that I'm four years into this blog and I've never mentioned this book. I saw it on the shelf the other day at a used book store, and I can't believe I haven't told you about it. I read "Ship of Gold in the Deep…
Well, here we are at #4,000. This puts us just 1,000 posts away from our stated goal of 5,000. Along with the 4,000 posts, we have 6,050 comments as of this writing, and that's very cool. We appreciate all the interaction everyone has with the site. Interestingly, we…
IDevelopers show their independent streak, favoring Web-based apps: Big frameworks and multi-layered architectures seem great in theory, but I've yet to see them work really well in practice. This seems to be the feeling coming out of this programming survey as well. "Web applications rule the enterprise. That's the indisputable…
WiFi - SM: feel the global pain: Like I said, stop surfing all the blogs or someone will tape this to your neck without you knowing about it. "WiFi-SM is an Internet connected wireless device that you can fix on any part of your body. It automatically detects the information from…
What's the difference between a blog post and an "article" or a "story"? By those terms, I mean content that isn't as ephemeral as posts that hit the site every 15 minutes. Blogs are, by definition, transient — they're time-based, and items get essentially dropped into a stampede that tramples…
AskTog: It's Time We Got Respect: Bruce Tognazzini is pushing a new name and new segment of the usability profession. "I have spent the last several months thinking about and talking with others about this issue, all the while casting about for a new title for our profession. I have kept…
I got to thinking the other day that the content management field is flooded, especially the open-source systems. Go to sites like CMSInfo.org, OpenSourceCMS.com, CMSWatch.com, etc. and you'll see hundreds of them. Then, every week, I get notifications that new ones have been released: NetWizard Matrix, and Tiki,…
This whole Aestiva thing has got me thinking about development platforms. Every week, there's a new one that claims to be simpler and faster than the last one. ASP is simpler than JSP, PHP is more capable than ColdFusion, HTML/OS makes developing apps faster than the others,…
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.