The Joel on Software Discussion Group (CLOSED)

A place to discuss Joel on Software. Now closed.

This community works best when people use their real names. Please register for a free account.

Other Groups:
Joel on Software
Business of Software
Design of Software (CLOSED)
.NET Questions (CLOSED)
Fog Creek Copilot

The Old Forum

Your hosts:
Albert D. Kallal
Li-Fan Chen
Stephen Jones

the math doesn't work out

I don't know about the ten-year figure, but it does take quite a bit of time to master anything, especially if you are not practicing it every single day.

If the pace of change is going to keep increasing and technologies will be obsolete faster than it takes to master them, how can that possibly work to cause faster change?

Unless we manage to learn and master technologies faster, then change can't possibly happen any faster either. Are we really learning any faster today than we were in the past?

Perhaps things aren't really changing any faster today than they did 10, 20, 50 years ago, but the fact that we can follow everything every second of every day via the internet, email, IM, twitter etc is causing them to appear to be changing faster, causing emotional turmoil along the way...

What do you think?
Saturday, June 14, 2008
I think the math works out fine.

Take some new languages.  Java came out in 1995.  It's now 13 years old, more than the ten-year time frame.  So it's not as if time spent on Java would be wasted, as long as you stayed with Java.

What about .NET?  If you used the early betas, then 2001 or 2002, I think.  So it's been around for six or seven years now.  And of course a lot of Java experience is transferable to C# or VB .NET, while at least some "VB Classic"/VBA experience can be used in VB .NET.  So you could have done these technologies for that ten-year time frame and, again, not have wasted your time.

And of course people still use C and C++, which have been around a *lot* longer.

I only came to .NET professionally just over three years ago, but stuff I'd learned in VBA and in a Java course was transferable, so I didn't have to "start over" while working on the ten years.
Kyralessa Send private email
Sunday, June 15, 2008

I know that anecdotal evidence is not an argument, but see

my case:

I learned .NET 1.0 thoroughly (2001). Studied and studied

until I thought I understood it.  Then I started working in an

environment which required .NET, but 2.0.

When I actually started coding, I realized in horror that 2.0

was dramatically different and I bought the books to learn

it. Studied and studied until I thought I understood it.
(I wish I could tell you what were those 'important

differences' but my IQ doesn't backup stuff "so far in the

So we wrote the software (commercial software)  in .NET

2.0  (an online sister to the desktop app, circa 2003),

NOBODY used it, because it was too slow over the net. The

customers bought the desktop version only.

Time passed, another company... year 2006. The company

wants to do the best new project using .NET. YES! Now I

can finally use my .NET 2.0 skills, bring it on!
No, sorry. 2.0 is passe. We need 3.0. Uh!? 3.0? What's that

says I? Oh, it's something new and much better! It has

XAML in it!
OK goes Ari, buys another sets of books including    "XAML

in a Nutshell"  and "Pro C# with .NET 3.0, Special Edition

Studied and studied until I thought I understood it, even

wrote a working program with it. But it was not stable, the

XAML was a mess, our UI designers were actually trying to

do UI, can you believe it? It never worked, because the

tools to edit the XAML if you are not a programmer are

impossible to master. Failure.

Time passed, and time came for me to implement my own

idea, not work related. Great, it's a website, it has logic,

what technology is best and I ALREADY know it? .NET 3.0 of


Sorry, now it's called 3.5. And it's different. Not very


Not very different? Cool, I'll code my website with it. And I

did. Only to realize what happens when a non vista user

visits my website and he has to download the .net 3.5

runtime, and then every visit to the website downloads stuff

to the user again and again. SLOW SLOW SLOW!!!!

Well, I had to change tech for my site and learned

ActionScript3.0 which also has it's quirks, but it at least


With this pace of changes, I cannot master anything. You

need to use the tech in more than one project to really get


Best regards,
Ari Telias
Sunday, June 15, 2008
And I aplogize for the double spacing but my connection crashed while uploading and I ended up with that.

Ari Telias
Sunday, June 15, 2008
Back in the late 90s/early 00s, I was liking VB6 as a way to develop GUIs, backed by C++ COM components for the heavy lifting.

When I saw the way Microsoft kicked VB6 to the curb and proceeded churning out .NET platforms, I got off the treadmill and went with Python. I might look at writing some .NET apps when (if?) the platform stabilizes, but right now I've got more to do with my few brain cells remaining than learn a new platform every year or so.
(User deleted) Send private email
Sunday, June 15, 2008
We may not master anything, but we learn a valuable lesson - beware of fire and motion.

Besides, the languages themselves take minutes to learn. Projects take weeks, and frameworks take months to get into. That's the time killer.
Sunday, June 15, 2008
> What do you think?

In the early Middle Ages or thereabouts, everyone who studied at a university had the same curriculum. As individuals, now, we manage the ever-increasing body of knowledge by specialising (i.e. by learning only some sufficiently-useful fraction of it).

Also, keeping up with changes requires less study than learning all the basics in the first place, i.e. changes are often incremental in some way (for example it's easy to learn C# if you know C++, etc.).
Christopher Wells Send private email
Sunday, June 15, 2008
Don't worry guys, there will always be an endless supply of H1Bs with 10 years of experience in whatever software technology you need.
Sunday, June 15, 2008

Full name
Sunday, June 15, 2008
Ari - most of what you learned from .NET 1.0 still applies to 2.0, there are just more libraries for more functionality. Same applies from 2.0 to 3.0, and 3.0 to 3.5.

The technology (at least in your examples) isn't changing, it's growing and expanding, building on the principles and ideas that were laid way back in version 1.0. Most of the stuff from 1.0 is still there and it hasn't changed much.

The same could be said about a lot of technology. When was the last time HTTP changed significantly? How about TCP/IP? Even HTML hasn't changed much over the years, it just keeps getting more crap thrown on top of it (CSS, AJAX, etc).

At the very bottom of all this is still a whole bunch of 1s and 0s flying around circuit boards as differences in voltage - the same as it's been for decades. It's just getting more abstract and more layered.
The Original Henry
Sunday, June 15, 2008
i don't get it, there hasn't been any new technology since 1998, and i think that was xml/java

http/xml->rpc/ AJAX this ahs been around for at least 10 years;

i think the problem with the computer industry is that it is filled with lots of young tards who think a new computer language is like a paradigm shift.

what da fucks new?

the real reason you learn new languages, is to either 1) get something done, or 2) get a job.

microsoft and everyone else, create new languages, to trap you into their market. do you really thin C# is any good?

how many of you dev C# on a mac?

get it. you need to pulls yours heads outcha butts; and realize only one thing counts;

if people/customers like/want-to-use your product.
lemon shakespear obrien Send private email
Sunday, June 15, 2008
I have to agree with lemon, things move slower than dirt.  Can you name a language or language feature that is less than 5 years old?  I think D maybe 4 years old but what does it contain that they didn't ape from somewhere else(not that it is a bad language)?  Haskell 98 or so ocaml older than that python, ruby 10+, Erlang 10+.  So no from a software stand point things aren't getting faster or changing very fast at all, mostly because as you mention it takes a while to fully exploit the tools we have now.
Sunday, June 15, 2008
"There's this dude — has everyone heard of The Little Schemer? The Little Schemer, The Seasoned Schemer, The Reasoned Schemer? Cool books, right? Teach you functional programming in this really bizarre format that hooks you in.

Dan Friedman, the guy who [was] one of the collaborators on those books — I was reading an article he wrote. Early in his career he realized that languages are fundamental to computer science and to engineering; they're really important. And he wanted to be able to learn a new language every quarter.
And after he did that for a while, he said, you know what? I want to learn a new language every week. OK? And you can actually get to the point where you can do this. Now it probably takes 2-3 months before you're actually as comfortable with the new language as you were with your favorite old one.
So Dan Friedman, after he said he was learning a language a week, I thought, "wow, that's pretty macho." But he said, nah, that wasn't good enough: he wanted to be able to implement a language a week. And he got pretty serious about it."
architecture astronaut
Monday, June 16, 2008

I learned .NET 1.0 back in 2003-2004 or so, I think. I implemented a fairly large web application in it.  .NET 2.0 came out, and I learned that but never worked in it.  Now that 3.5 is out, I opt not to use it and work in .NET 2.0.  My tendency is to stay one step behind the bleeding edge.  This has worked well for me. Not sure why you felt the need to do your app in .NET 3.5.  Not something I would have been brave enough to do. And you don't have to.
anonymous female
Monday, June 16, 2008
>> Now that 3.5 is out, I opt not to use it and work in .NET 2.0

This is a dangerous mindset, because if you follow this through all the way, you'd still be using Windows 98 because "it does everything I need it to".  Not that you're wrong, but are beginning the path of obsoleting yourself.

If you're a web dev and you can't do AJAX, you're living in the stone-age.

Although the whole point of .NET controls is to take the lower level steps away from the dev, so it's not like you have to know how to create AJAX functionality from scratch either.  So really if you just know how to drop an AJAX enabled control to your webpage, that's all that matters in ASP.NET.
TravisO Send private email
Monday, June 16, 2008
I think I must have read a different essay than almost everybody here because I think Norvig addresses just about every point brought up in this thread. He's not just talking about picking up a language or figuring out a new tool (which really does take more than mere minutes) but how to program, which involves a lot more than just knowing the syntax of 1 to N languages.

Personally, I think the math works out pretty well, give or take a few years. And, really, he doesn't put an actual time frame on it but quotes research that says, generally speaking, a decade is about right to become reasonably competent at a complex skill and several people say that even a decade isn't enough.

The whole point of the essay is that Learn X in 3 days or a week or 24 hours is pretty much a load of crap, given his definition of "learn".

And I think the pace of change is a bit overblown to some degree. To a great degree the pace of change is dictated by you and what tools and skills you want to pick up. If you want to follow every update to every library to every language and framework out there, be my guest. The pace of change will be overwhelming. You can keep up with new developments in the industry without drowning in them. You just need to pick your battles. There is a lot of re-inventing of the wheel in this industry. We just tend to put pretty new packages on things and say WOW. LOOK. IT'S NEW!!!! People with a strong grasp of the fundamentals have not had too many problems picking up any OO or procedural based language, no matter the framework or syntax. People laser focused on one technology or niche seem to get very nervous when you go outside of their comfort zone. Rather than see why something else might be useful they tend to say "why bother, I'll never need it". I don't think those people can be good programmers in the broad sense if you gave them a decade of decades.
Bart Park
Monday, June 16, 2008
Anonymous female

"Not sure why you felt the need to do your app in .NET 3.5.  Not something I would have been brave enough to do. And you don't have to. "

Thanks for the response. "felt the need ?" , definitely not LOL. Felt the need to evaluate it as the correct tool for the task. It failed. ActionScript succeeded.

By the way, in my humble opinion the difference between .NET 2.0 and 3.0 is huge when it comes to UI. A totally different head. XAML is NOT an upgrade of Winforms. It's a new paradigm - data based UI (and Yes, when I say NEW I mean NEW for Microsoft, of course).

My friends, I am not against new technology, on the contraire! I am just in FAVOR of STABILIZING the technology if you expect developers (MS: developers, developers, developers, right?) to use it.

Best regards,
Ari Telias Send private email
Monday, June 16, 2008
> You just need to pick your battles.

Picking battles is a big battle by itself!

There are always trade-offs and unless you have competence, it is easy to pick the wrong battle.
Tuesday, June 17, 2008

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
Powered by FogBugz