Kuro5hin.org: technology and culture, from the trenches
create account | help/FAQ | contact | links | search | IRC | site news
[ Everything | Diaries | Technology | Science | Culture | Politics | Media | News | Internet | Op-Ed | Fiction | Meta | MLP ]
We need your support: buy an ad | premium membership

[P]
Hedging your bets - which technology for the developer?

By kimpton in Technology
Wed Apr 17, 2002 at 10:06:33 AM EST
Tags: Help! (Ask Kuro5hin) (all tags)
Help! (Ask Kuro5hin)

Getting experience of the right technology at the right time for a developer, can massively increase their earning power. Jump on the right technology bandwagon at just the right time, and you can expect massive pay rewards, while your colleagues working with yesterdays technology, even if they are much more technically and business able, earn a lot less. So if you could choose a technology for your next development project, purely on a greed basis, what would it be?


I'm really much more concerned about the challenge and interest of a job, rather than the pay and whether the technology is fashionable or not. But it can be extremely frustrating to find ex-colleagues with minimal skills move on to much higher paid jobs, just because they had the right tech names on their C.V. I'm jealous, I admit it. My geek head doesn't want to worry about the pay, I love programming, I love learning different systems, I'm happy if the job and technology are fun and interesting. But my sensible head wants me to worry about this, I can buy more gadgets with the extra money for starters. :)

There are a couple of ways to look at the issue, getting good solid experience in one of the major technologies, or looking at the niche market, getting experience in a new technology that's just about to get very popular in it's own market, but with a small developer base. I've been working as a web developer for the last few years so I'll only discuss web development technologies, but I'd be interested in people views on other development arenas.

I think the two major web development technologies are obvious. J2EE is already well established as an internet development platform. The language is easy to use and powerful, API's are there to do any aspect of web development, Jsp's for client side scripting, EJBs for middle tier data access, messaging services, XML, it's all there. It is a complete solution for any business need, whether free software, or enterprise class systems for the larger business. The problem, of course, is that there are literally thousands of J2EE developers out there, Gartner predicts that there will be 3 million Java developers by 2004, not all J2EE developers I know, but the number can only drive wages down. If you haven't got any experience of J2EE now, you may be a bit late.

Microsoft's .NET framework is the only major competition for J2EE on the horizon. I don't think most people or even Microsoft have a completely clear idea of what .NET does or doesn't cover. But I think it's pretty obvious that .NET will be a major player in the web development arena. As it is new, few people will have much experience of the technology. Yes the legions of VB and ASP programmers will be desperately trying to switch there projects to .NET, and to some extent will have a head start, but I still think there is plenty of time to get involved, and see your commercial worth rocket.

For both J2EE and .NET the possibilities will be there to make lots of money, the competition will be tough so whichever you choose, get as much experience as possible as soon as you can. The well paid in these areas will be the experts, the technical leads, who know the technology thoroughly.

The niche market is harder to predict. A Coldfusion developer a few years ago, could command 120k ukp a year, with not that much more skill than basic HTML. The job market may be a bit saner now that the internet boom is over, but the opportunities are still there. On my most recent project, a developer for a smallish CRM product company, was *helping* us integrate the product with our web system, for the ridiculous sum of 1700 ukp a day. He was quite good at his job, but considering he was just tweaking a current product, he was vastly overpaid. The fact that he was one of only fifty people working as developer for the product, guaranteed his high wage, regardless of his skill level.

If you want to choose a language, which one do you choose if you want to keep away from the major players above. Will Ruby skills be in demand, or is Python a better bet? Will there be Perl renaissance with the release of Perl 6 or are there already too many Perl programmers? Or would you do better to become a guru for a proprietary product, like SAP, who's developers could command vast wages in the past, like my CRM colleague above can now?

So what do you think should be on your C.V. over the next few years? Don't forget, this isn't a question about which technology is better than the other, or whether you should go open source or proprietary. This is about choosing a technology that will give you the best chance of earning large amounts of money in the future.

Sponsors

Voxel dot net
o Managed Hosting
o VoxCAST Content Delivery
o Raw Infrastructure

Login

Poll
More important job satisfaction or money?
o Show me the money 9%
o I just love coding 25%
o Balance the two 65%

Votes: 86
Results | Other Polls

Related Links
o gadgets
o J2EE
o free software
o systems
o .NET
o Ruby
o Python
o Perl 6
o SAP
o Also by kimpton


Display: Sort:
Hedging your bets - which technology for the developer? | 62 comments (60 topical, 2 editorial, 0 hidden)
How about (4.42 / 7) (#2)
by Hopfrog on Wed Apr 17, 2002 at 07:09:37 AM EST

It doesn't matter which languages you know, so long you understand the background.

Just learn the difficult languages, and when you see that something is going to be popular very soo, you start using it and gain experience. If you learn fast, you lie about your experience, and learn on the job.

Hop.

yeah, but... (none / 0) (#26)
by Ender Ryan on Wed Apr 17, 2002 at 11:45:04 AM EST

LoL, lying is fun ;-)

Seriously, I know what you mean. But I would recommend only lying if the language, "technology" in question is something you have a good enough understanding of...


-
Exposing vast conspiracies! Experts at everything even outside our expertise! Liberators of the world from the oppression of the evil USian Empire!

We are Kuro5hin!


[ Parent ]

I remember lying and I got caught! (none / 0) (#43)
by xtremex on Wed Apr 17, 2002 at 05:36:29 PM EST

This is back in 1989. I got a job at Sun programming device drivers in assembly. I knew Z80 Assembly, so I lied and told them I knew Assembler for their chip set. Well, lo and behold, 8 bit Assembly was not good enough. They found me out within 3 days. The manager laughed however. He knew I wasnt trying to be deceitful. So I guess I still have a good recommendation (From 13 years ago? I don't even think those people are there anymore!)

[ Parent ]
Eh? (none / 0) (#48)
by sgp on Wed Apr 17, 2002 at 06:50:19 PM EST

He knew I wasnt trying to be deceitful.
You were being deceitful.

Did you stay there long?

There are 10 types of people in the world:
Those who understand binary, and those who don't.

[ Parent ]

Not really... (none / 0) (#51)
by xtremex on Wed Apr 17, 2002 at 07:02:49 PM EST

I thought Z80 assembles was the same as SPARC assembler...I figured the learning curve was small..BOY, was I wrong.

[ Parent ]
Gotcha (none / 0) (#62)
by sgp on Fri Apr 19, 2002 at 07:15:18 PM EST

My mistake - I ignored the word "trying"... if you thought that, then I concur, that you were indeed not trying to be deceitful.

Fairy Nuff

There are 10 types of people in the world:
Those who understand binary, and those who don't.

[ Parent ]

any language is just a form of knowledge (3.66 / 3) (#4)
by moeffju on Wed Apr 17, 2002 at 07:29:55 AM EST

That means, if you learnt one "true" language - if you got over HELLOWORLD.BAS - and you understood the concepts of programming, you will probably be able to easily learn a new one. It helps to study CS I guess, since it teaches you the algorithms and techniques you may need.

And if some employer wants something fancy, I do a quick lookup on google and check whether I can grasp the basics quickly. Then just tell him you know it, and hurry to learn it rightly.

Learning languages as you go (4.00 / 3) (#5)
by oconnoje on Wed Apr 17, 2002 at 07:38:11 AM EST

Most employers don't want to wait around while their new programmer learns Perl/J2EE/C#. They want you to start coding on your first day, and they're willing to pay extra for this.

Let's say a programmer gets paid 5000 a month, and it takes 4 weeks for them to fully learn all the intricacies of .NET/J2EE/whatever. So the employer has 1) paid 5000 without making any progress on the project and 2) wasted a month of development time. So it's worth more than 5000 to the employer to hire a fully qualified programmer who can start coding on their first day instead ...
--
KTHXBYE
[ Parent ]

Thats why you say you can do it (none / 0) (#6)
by moeffju on Wed Apr 17, 2002 at 08:01:32 AM EST

You wont keep your release date anyway :p

Seriously, you are right, but many will take you anyway. Better than not getting a job, I guess.

[ Parent ]

Learning as you go (4.66 / 3) (#9)
by LQ on Wed Apr 17, 2002 at 08:44:51 AM EST

hire a fully qualified programmer who can start coding on their first day
That is a really short-term attitude. You should hire people for their potential. Language is just one issue - an understanding of the companies products/projects/way of doing things is what makes someone useful eventually.
Have you never seen job ads offering cross-training? You know about X in C? Come and do it in Java, or whatever. It's your knowledge of X that is important.

[ Parent ]
It's a short-term attitude (4.50 / 4) (#12)
by oconnoje on Wed Apr 17, 2002 at 09:17:57 AM EST

because software development schedules are becoming shorter. And there's a lot more involved in learning J2EE/.NET than simply learning some new syntax. Anyone who knows any computer language already can teach themselves Java syntax in two days.

But there's an API, extensive class libraries, and all those fiddly little things to do with synchronization and performance that you can only learn from previous experience. Teach Yourself X In 21 Days won't tell you which Swing components are too buggy/slow to use, or whether your C# program crashing is due to a bug in the CLR or a bug in your code.

There's just no substitute for actual hard experience, no matter how quickly you learn.
--
KTHXBYE
[ Parent ]

are you kidding? (none / 0) (#37)
by speek on Wed Apr 17, 2002 at 02:12:26 PM EST

Every job I've ever started at expected me to sit on my ass for a few weeks and wait for a computer, some idea of what the hell they wanted me to do...

There's more than enough time to read all sorts of books and learn whole new languages.

--
al queda is kicking themsleves for not knowing about the levees
[ Parent ]

I've had that (none / 0) (#50)
by sgp on Wed Apr 17, 2002 at 07:01:46 PM EST

How do you expect me to admin your network without even a keyboard?!!!

Eventually they got me a PC, then I just moved into the network room and used a Solaris console.

There are 10 types of people in the world:
Those who understand binary, and those who don't.

[ Parent ]

Of course the dumb thing... (none / 0) (#60)
by katie on Thu Apr 18, 2002 at 07:14:39 AM EST

Is that instead of getting someone who can learn it by reading a book in front of them in a couple of weeks, they end up with someone who learns it in a couple of months because they have to wait while the manager nips outside for a smoke before they can read the book...



[ Parent ]
Personally (4.00 / 3) (#7)
by inerte on Wed Apr 17, 2002 at 08:20:59 AM EST

I don't know many languages. I could be considered a good (maybe very good ;-) PHP developer, HTML + CSS and that's what pay my bills, developing corporative intranets.

From people that studied with me, I am currently the one who gets more money per month. That's a huge advantage now, but I didn't go to college. Let's see what the future holds.

Also know a bit of C, C++, Python, Perl, Java, but never did a "true" project with them. Just personal tests here and there.

The future? Those who will make money in the future, IMHO, are the ones that can deliver the product faster. We are, and I thank everyday this, passing the phase where marketing decided what language was good for the project. It has been a slow change but it's happening. Each and every day more technical people are getting the administrative positions.

Slowly but steady, 'geeks' are commanding the field. That's IMHO anyway.

--
Bodily exercise, when compulsory, does no harm to the body; but knowledge which is acquired under compulsion obtains no hold on the mind.
Plato

Zero tolerance (1.72 / 11) (#8)
by streetlawyer on Wed Apr 17, 2002 at 08:21:28 AM EST

... for the words

Gartner predicts

means -1 from me. Bit of a shame, really, as the actual article looks interesting but hey; that's the point of zero tolerance.

--
Just because things have been nonergodic so far, doesn't mean that they'll be nonergodic forever

People... (4.57 / 7) (#10)
by Rocky on Wed Apr 17, 2002 at 08:57:01 AM EST

...who try to hedge their bets by chasing technology are the ones who end up unemployable at 40 because they only know "Visual FoxPro" or "Web Page Design". Most of this "technology" is just marketing crap.

People who learn the general principles of computer science and can adapt quickly (read: within days of taking a new job) and will survive much longer.



If we knew what it was we were doing, it would not be called research, would it?
- Albert Einstein (1879 - 1955)
adapt quickly? (none / 0) (#13)
by kimpton on Wed Apr 17, 2002 at 09:23:07 AM EST

People who learn the general principles of computer science and can adapt quickly (read: within days of taking a new job) and will survive much longer.

A lot of peoples comments are saying that the ability to learn new technologies quickly is the most important factor. I think this is quite hard to prove to a prospective employer. They will go for the person who's got a provable track record with the skils they're after. Most applicants will claim they can learn and adapt to new technologies quickly, who wouldn't?

[ Parent ]
yeah, that's true... (none / 0) (#27)
by Ender Ryan on Wed Apr 17, 2002 at 11:57:04 AM EST

... which is exactly why so many projects suck/fail. Managers hire the wrong people, those that have the necessary "skills".

Let me tell you, these so called "skills" are a waste of time, people with these "skills" might know how to use X, but they sure as shit won't develop their project properly.

People who understand computers, languages, etc and don't give a shit about X, they'll learn X in a week and create something worthwhile out of it.


-
Exposing vast conspiracies! Experts at everything even outside our expertise! Liberators of the world from the oppression of the evil USian Empire!

We are Kuro5hin!


[ Parent ]

yes. (none / 0) (#35)
by kimpton on Wed Apr 17, 2002 at 01:26:35 PM EST

I know. I'm not saying I agree with the situation. When it comes to making money and getting jobs though, knowing the buzzword technologies is important

[ Parent ]
Well that hardly matters... (4.00 / 2) (#15)
by Wondertoad on Wed Apr 17, 2002 at 09:37:37 AM EST

Look through the help wanted ads and you'll find that maybe 0.1% say something like "Wanted: someone who understands the basic principles of computer science who can adapt quickly." The oither 99.9% say "Don't bother submitting your resume or cv unless you have 4-5 years of experience with only the technologies that we use, on only the platforms that we use."



[ Parent ]
Mwahaha (5.00 / 2) (#16)
by quartz on Wed Apr 17, 2002 at 09:50:37 AM EST

Yeah, uh-huh. Very sensible. So how do respond to a help wanted ad that says "You must have 5 years experience with .NET"? (That's actually a real, honest-to-god help wanted ad. I won't tell the name of the company though)



--
Fuck 'em if they can't take a joke, and fuck 'em even if they can.
[ Parent ]
It depends... (4.50 / 2) (#20)
by katie on Wed Apr 17, 2002 at 10:38:13 AM EST

Lie? Since they're obviously unable to deal with reality...

These turn up, because some manager wants to do some work in .Net.

They ask HR to hire them someone good. HR have a standing rule that "good" means "five years experience in". Hence the advert.

There's nothing wrong with the IT industry that shooting every person who works in HR wouldn't fix overnight.



[ Parent ]
How I respond to such an ad (4.00 / 1) (#44)
by Wondertoad on Wed Apr 17, 2002 at 05:40:09 PM EST

I ignore it, because I expect that an organization that would publish such an ad truly does not care about the quality of its employees or of its products.

I might create a bogus resume with all the buzzwords on it -- but then I know going in that the sole basis for the employee/employer relationship is based on a combination of dishonesty and incompetence.

*sigh* And after 17 years of trying to make my way using such principles, I have wound up an independent consultant, working for myself. You're right, and I just don't want to admit it to myself...


[ Parent ]
jobs (4.00 / 1) (#33)
by ucblockhead on Wed Apr 17, 2002 at 12:46:24 PM EST

There's getting a job and then there's keeping a job, and then there's getting lots of good recommendations for people you've worked with. What you want to do is learn enough about the buzzwords so that you can put them on the resume. Because when they don't get anyone with "five years of .NET experience", they'll start interviewing anyone with ".NET" anywhere on their resume.
-----------------------
This is k5. We're all tools - duxup
[ Parent ]
That's because... (none / 0) (#38)
by Rocky on Wed Apr 17, 2002 at 02:29:14 PM EST

...help wanted ads are designed by idiot HR people who have no clue about what the people they hire actually do. The buzzwords are there purely for use as a filter.

If we knew what it was we were doing, it would not be called research, would it?
- Albert Einstein (1879 - 1955)
[ Parent ]
I KNOW this (4.00 / 1) (#42)
by xtremex on Wed Apr 17, 2002 at 05:30:51 PM EST

However, those morons in HR are the ones who will get you in! I've had UNIX experience since 1989 and have been integrating and implementing UNIX systems pactically forver. Do I have a job? No. I didnt get an interview today because I didn't have the word "Apache" on my resume. Even though it said I set up and multi-tier web applications, blah blah blah. You would assume ( I guess) that If I owned an ISP, have been setting up webservers since 1994 on the UNIX platform, I would know Apache! Well, it's on my resume now just to make HR happy.

[ Parent ]
Get a pimp! (none / 0) (#46)
by epepke on Wed Apr 17, 2002 at 06:24:10 PM EST

Yeah, I had this problem, partially because I've been doing this stuff for decades. My solution? I got a pimp. My pimp was TMP Worldwide, and I was happy with them. They got me jobs and money and then got out of my way.


The truth may be out there, but lies are inside your head.--Terry Pratchett


[ Parent ]
Easy (4.75 / 4) (#11)
by lb008d on Wed Apr 17, 2002 at 09:12:02 AM EST

Be able to learn anything quickly. Demonstrate this at your job.

I'll put in my $0.02 for working for a company that is tied into a large, proprietary software system from which they can't/won't switch. Financial institutions are notorious for this: they pick a system and stay with it forever. If you know the ins and outs of the code well, you're set. I've got job security because of this.

Another discipline (5.00 / 5) (#14)
by cameldrv on Wed Apr 17, 2002 at 09:36:13 AM EST

Learn another discipline, such as Biology, Finance, EE, Operations Research, etc. If you are a good programmer and are competent in another field which uses simulation or other types of computer analysis, you will never be out of a job.

Physics (none / 0) (#17)
by lb008d on Wed Apr 17, 2002 at 10:03:31 AM EST

My father-in-law is a researcher at Los Alamos Labs - their big problem is getting physics sims to run efficiently on their new mega-parallel machines.

Want big bucks: parallel algorithm theory + numerical physics simulation.

Apply at www.lanl.gov!

[ Parent ]
what they need is (none / 0) (#45)
by damiam on Wed Apr 17, 2002 at 05:49:15 PM EST

PhysicsGenius

[ Parent ]
Ha! (none / 0) (#55)
by arthurpsmith on Wed Apr 17, 2002 at 10:04:45 PM EST

Maybe the job market's changed, but that's what I did for a living 6-7 years ago (parallel algorithms for physics/chemistry simulations). Couldn't get a permanent job in the field though, so now I'm a PHB :-)

Energy - our most critical problem; the solution may be in space.


[ Parent ]
i know 10 programming languages (2.66 / 3) (#18)
by exa on Wed Apr 17, 2002 at 10:21:36 AM EST

so what? a software engineer can learn and write programs in any programming language...
__
exa a.k.a Eray Ozkural
There is no perfect circle.

I dunno about your choices... (5.00 / 1) (#19)
by tzanger on Wed Apr 17, 2002 at 10:24:04 AM EST

I'm not a big web developer. I'm a guy who kinda sits quietly back and watches things and sometimes gets very excited about certain technologies. Perl. SQL. LDAP. And very very recently, XML-RPC and XWT.

The last two are why I'm posting this comment. From what I have gathered, it is exactly suited to web development and gives you the best of Java and web apps with none of the hassles. The GUI rests on the desktop, in the user's familliar form and speed. However all the actual business logic rests on the server. In any language, or any number of languages. Very very very neat. There aren't any worries about browser issues or cockeyed implementations. There's already a win32-specific XWT runtime, so Java isn't required on the Win32 platform. Important since Microsoft has killed off Java on XP. I hear that X (hopefully KDE) runtimes will soon be available too but until then the Java implmentation will have to do. And it's actually half-decently fast (i.e. native speed) on my system.

I never got excited about COM/DCOM or ActiveX. Too tied to one platform. DCOP (KDE) never tickled my fancy for the same reason. However every DCOP interface is also accessible via XML-RPC, which is very cool. Playing around with kdcop is addictive. SOAP seems a little bit too defined, in the sense that there are too many cooks in the kitchen. And with something like XWT, you don't need all of SOAP's abilities, just getting data from the server is all that is needed.

J2EE? .Net? I think I'm going to hedge my bets on XWT and XML-RPC. I may not get many points playing Buzzword Bingo, but I bet I'll have the problems of the day solved quicker.



right... (none / 0) (#21)
by kimpton on Wed Apr 17, 2002 at 10:44:28 AM EST

This is where you make a stab at the niche market. XWT may or may not get popular, but if it does, then the few who have expertise will be able to command better salaries. .NET and J2ee are different, they have or are guarenteed to become major players in the web development market, as so attract many more developers...

[ Parent ]
Niche, schmishe (none / 0) (#41)
by tzanger on Wed Apr 17, 2002 at 05:23:29 PM EST

This is where you make a stab at the niche market.

It's the niche markets that make the money. Want to be an auto mechanic? Sure, you and a million other people. You'll take what we pay you and like it. Oh, you're a transmission expert? Here's some more money, we don't run by you guys too often. 25 years' experience? You can sit by me.

No the example doesn't work perfectly, but the idea comes across. Why would I want to say I'm a .Net programmer when everyone can say that? Tinker with it so that you can hold your own in an interview, but specialize in (several) other fields so that when you run across a situation where a) they don't care what it's done in or b) they need someone who has done it a certain way, you can rise above and make the big bucks. I've been more or less doing this for several years now. You don't get much in the way of bragging rights in the common circles but people kind of wonder why you're always driving a new car or your house looks so nice, when you never seem to have much to say about the buzzword-laden work.

I don't need XWT or XML-RPC to be big. I've got Perl, C, C++ and Java implementations of the protocol; that's not going to go anywhere and it's low-level enough that I can mould it into something bigger if I need to. I'm not relying or the changing spec of .Net, nor am I tied to their development platform (J2EE, although JBOSS helps this).

At the end of the day nobody gives two shits what it's done in so long as they can get their work done in it and never have to touch it. I'm not saying to obfuscate your work but rather stick to your principles and keep the buzzword bingo to a minimum so you can still fall back on it if you really need to.



[ Parent ]
you sounds confused (3.00 / 1) (#22)
by boxed on Wed Apr 17, 2002 at 11:13:05 AM EST

J2EE is a market. .NET is a product and XML-RPC is a protocol. Comparing them is quite wierd.

[ Parent ]
Not confused (none / 0) (#23)
by tzanger on Wed Apr 17, 2002 at 11:30:08 AM EST

I was specifically joining XWT and XML-RPC and using that union to compare against .Net.

J2EE is a market? Inasmuch as Borland C++ Builder is a market, perhaps. Is J2EE not a development platform?



[ Parent ]
you just proved my point (none / 0) (#57)
by boxed on Thu Apr 18, 2002 at 02:39:49 AM EST

J2EE is a standard for a platform, unlike for example .NET which is a product not a standard. XWT seems to me (if you're talking about xwt.org) to be based on J2EE, further proving my point.

[ Parent ]
think long term (none / 0) (#24)
by Ender Ryan on Wed Apr 17, 2002 at 11:37:45 AM EST

Personally, I just like programming and computers in general and I really am not much concerned with how much money I make, as long as it pays the bills and I enjoy my work.

But if your looking for some balance between making money and enjoying your work, don't be sucked in by "New Technologies", "New Innovations", and buzzword compliant garbage.

Think long term. While under-experienced programmers may make a ton of money on "new technologies", etc, that usually don't prove true for the long term. Simply look at the .com implosion for evidence. Experienced programmers with stable jobs will make more in the long run, because in the long run they will still have a job.

Don't get me wrong, there are often new things going on in the industry that are worth getting involved in, and working in this industry it is of extreme importance to keep up to date. But my point is, chasing around the highest paying buzzword compliant jobs is eventually going to leave you unemployed and scrambling to find a job.

FYI, I got a job for a web based company, long before the web became huge. The .com explosion, and following implosion, had little effect on us. We're a small company and I don't make a lot of money, but I still have a job, unlike MANY other people I know.

JMHO, YMMV, IANAL, YHBT, etc ;-)


-
Exposing vast conspiracies! Experts at everything even outside our expertise! Liberators of the world from the oppression of the evil USian Empire!

We are Kuro5hin!


ouch! (none / 0) (#25)
by Ender Ryan on Wed Apr 17, 2002 at 11:39:16 AM EST

"But if your"

I don't generally worry about spelling, grammar etc, but that's just sickening! Who do I think I am, CmdrTaco?

;-)


-
Exposing vast conspiracies! Experts at everything even outside our expertise! Liberators of the world from the oppression of the evil USian Empire!

We are Kuro5hin!


[ Parent ]

Why limit yourself? (4.90 / 11) (#28)
by avdi on Wed Apr 17, 2002 at 11:58:54 AM EST

A software engineer (or a web developer, or a system architect, or whatever) is not in the business of predicting which technology will take off. She can't afford to be. The software proffessional's primary skill is her ability to learn new technologies, and to use the best technological solution for a given problem from a diverse toolbox. As Dave Thomas and Andy Hunt write in their book, The Pragmatic Programmer:

We like to think of all the facts programmers know about computing, the application domains they work in, and all their experience as their Knowledge Portfolios. Managing a a knowledge portfolio is very similar to managing a financial portfolio:

  1. Serious investors invest regularly - as a habit.
  2. Diversification is the key to long-term success.
  3. Smart investors balance their portfolios between conservative and high-risk, high-reward investments.
  4. Investors try to buy low and sell high for maximum return.
  5. Portfolios should be reviewed and rebalanced periodically.

Their concrete advice for accomplishing these goals includes learning at least one new language a year: "By learning several different approaches, you can help broaden your thinking and avoid getting stuck in a rut." Dave and Andy are practicing what they preach by starting a Language of the Year project that anyone can participate in. Each year they'll be studying a new language; the first language is Haskell. They also recommend taking classes, participating in local user groups, and reading a technical book each quarter, among other things.

Trying to predict the Next Big Thing in software is pointless and hopeless. The best we can do is to keep our skills fresh, and never stop learning. Don't get stuck in the One True Language or One True Platform rut. If you can't understand why lots of people are crowing about a language that looks no better than the one you already know, learn it instead of bitching about it. If you've only ever coded in MFC, try out one of the other toolkits out there, like wxWindows, Gtk+, or QT. If you're used to only UNIX coding, try out Visual C++ (if you have the cash). If you only code in C or C++, try out a dynamicly-typed, garbage-collected language like Perl, Ruby, Python, or Smalltalk. If you've only ever coded high-level applications code, try out systems programming in C/C++. Explore application domains other than your own, and familiarize yourself with the news sites that cover advances in your own primary domain. Perhaps most importantly of all, get to know technologies like CORBA, COM, XML-RPC, REST, SOAP, and XML which enable you to glue together all those languages in your toolkit.

Putting all your investment into a single language or platform is asking for trouble. It's also unproffesional - you may one day cost an employer a lot of money because you were ignorant of the technology that would have suited their particular application much better than the one you knew. Not only that, it's unnecessary: none of the technologies out there are so difficult that you must choose just one to learn. A decent programmer can pick up any new language in a month. The essentials of any application domain are usually simple, and the details are usually the domain expert's problem, not the programmer's. Instead of trying to divine which technology will make you rich, make it your goal to learn all of them. Having a linux/BSD box of your own can be very helpful in this regard: for the UNIX user, nearly every niche language, specialized library, and software framework known to man is just a download away. Books from O'Reilly, New Riders, and Addison-Wesley are also a big help.

--
Now leave us, and take your fish with you. - Faramir

Applying your language skills (4.00 / 1) (#34)
by Lord of the Wasteland on Wed Apr 17, 2002 at 12:51:52 PM EST

I think that this is excellent advice, although learning one language/platform combination a year would seem to me to increase your knowledge better than just focusing on languages.

It also helps if you can get onto projects, starting small, that are using technology or languages you haven't used before. Then, if something you reallly want comes up where your missing and acronym, you can :

  • start hitting the books, using those honed learning skills
  • Tell the manager "look, I know I haven't used XYZ before, but I'm a solid programmer and on project FOO I made a significant contribution even while learning ZYX

    [ Parent ]
  • I haven't used X (none / 0) (#59)
    by katie on Thu Apr 18, 2002 at 07:05:23 AM EST

    The problem is, you're up against people who will lie. They'll say they've used it, in answer to every question.

    If you're honest, you don't stand much chance, because the people that will lie will ALWAYS be "better" than you. The great thing is that even if they get found out modern corporate culture makes it really hard to fire someone for being terrible at their job. It's very easy to be one of the 1 in 5 that gets laid off during a "cost-cutting", but just as being good doesn't offer any defence in that situation, being criminally incompetent isn't a reason to fire someone you've hired...


    [ Parent ]
    I'm not jealous (none / 0) (#29)
    by epepke on Wed Apr 17, 2002 at 12:15:05 PM EST

    Seriously, where are all those people with the Hot New Skillset a couple of years ago? Flipping burgers trying to pay off their credit card debt, using worthless stock certificates as toilet paper. This is poetic justice, and it's one of the things that makes life bearable.


    The truth may be out there, but lies are inside your head.--Terry Pratchett


    Worried about paying the bills in a few years? (4.00 / 1) (#30)
    by rootz on Wed Apr 17, 2002 at 12:38:46 PM EST

    Become a project manager. I'd think that project managers with technical experience, especially in the field, are pretty significant to the success of the project. In which case, it barely matters which new technology buzzword has the techs all excited - so long as you understand the deliverables required and the issues they raise, can correctly assess and manage their impact, and can communicate all this and more across the entire project you're working on - and even more critically, to the customer/business, you'll always be in demand.

    I've heard it said that a project manager requires little to no technical expertise. I've never believed that. I'd prefer to report my progress to someone who knows what I'm talking about any time of day. And if they come from a development perspective and know the issues I face day-to-day as a developer, even better.

    --
    R.O.O.T.Z: Robotic Organism Optimized for Troubleshooting and Zoology

    You've got better Project Mangers than I do (none / 0) (#49)
    by sgp on Wed Apr 17, 2002 at 06:57:44 PM EST

    The ones I meet only know buzzwords, but nothing at all about technology. Some don't even know anything about the company they work for.

    We've also got a different job title, of Technical Project Manager.... this TPM had just explained to a customer, "ah yes, but I'm not technical".

    Once the customer was out of the way, I asked what the difference was between a PM and a TPM, if a TPM isn't technical. He said:

    I'm not a technical Project Manager, I'm a Manager of Technical Projects
    All our projects are technical, we're a technology company!


    There are 10 types of people in the world:
    Those who understand binary, and those who don't.

    [ Parent ]

    Betting on technologies (4.00 / 1) (#31)
    by ucblockhead on Wed Apr 17, 2002 at 12:43:43 PM EST

    When I was first getting into the industry, the "hot new language" that "everyone should know" as Ada. A year or so after that, the "hot new OS" was OS/2. Over the last fifteen years, I've watched so many different things aquire the mantle of "hot thing to know". Many of them died. Betting on one is betting to lose. Even if you do manage to choose right, even the best of things only have a ten to fifteen year lifespan.

    If you don't learn to pick up new technologies fast, you won't be employable when you reach thirty.

    The best way I've found to operate is to be a jack of all trades. Then work to be the "expert" in whatever the hot thing it is they are paying you for while keeping up enough in everything else so that you can move fast when the hot thing cools off.
    -----------------------
    This is k5. We're all tools - duxup

    J2EE or .Net (4.00 / 1) (#32)
    by Snagged Umbra on Wed Apr 17, 2002 at 12:44:20 PM EST

    Speaking in broad strokes: J2EE is a heavyweight technology, while .Net is a lightweight one. A lot of organizations are going to be using .Net for two reasons: 1) it's cheap; 2) it's easy, so the programmers come cheap.

    The organizations which need, and can afford, a distributed enterprise architecture (not just a souped-up Web server) will end up on J2EE.

    Doing J2EE right is hard. Sure, you can hack together some stuff to get your Web site up, but if you're going to do that you might as well use .Net. To make J2EE pay off, you need to implement an enterprise domain model through reusable components, something that your average Joe Codehacker could never pull off.

    It's your choice: .Net is easy to learn and there will be a lot of places you can ply your trade, but the pay will be mediocre... you're competing with the hordes of VB programmers. J2EE is a lot harder, requiring much greater ability to work in the abstract, and the number of openings will be more limited but will pay quite well if you know what you're doing.

    Not convinced (none / 0) (#39)
    by Simon Kinahan on Wed Apr 17, 2002 at 03:34:52 PM EST

    J2EE certainly provides a lot more than .NET does, a lot of which most people never use, such as distributed transactions. However, J2EE also provides everything .NET does: JSP instead of ASP, web service support, JDBC instead of Microsofts DB access technology of the week, and so on.

    If you limit yourself to using the equivalent technologies, many of which are almost identical to their MS equivalents, you don't need to learn the hard stuff. Most particularly, you don't need to learn about EJB in order to write a simple JSP+JDBC app. EJB genuinely is quite hard, and arguably both not a very good idea and not useful for many applications.

    Simon

    Simon

    If you disagree, post, don't moderate
    [ Parent ]
    That's a disagreement? (none / 0) (#47)
    by Snagged Umbra on Wed Apr 17, 2002 at 06:35:31 PM EST

    Like I said, "Sure, you can hack together some stuff to get your Web site up, but if you're going to do that you might as well use .Net."

    You could do it in a subset of J2EE, but why would you want to spend 5 to 10 times as much as if you did it in .Net? .Net runs on off-the-shelf PC hardware, with inexpensive software, and ASP and VB.Net programmers are fairly easy to find and not too high-priced.

    Furthermore, .Net is not just cheap to get going, it's quick to get going. I'm a J2EE guy and haven't used .Net myself, but I'm hearing reports from people who are trying .Net that they're able to get a "JSP+JDBC app" up and running in a few days instead of the weeks or months that it takes in J2EE.

    Microsoft has aimed .Net and VisualStudio.Net squarely at that kind of app, and (again just from the reports I'm hearing) has hit the bulls-eye. Of course, in the process they've made it very difficult to build a distributed enterprise domain model in .Net. That's what EJBs are for... and that's why it's called Java2 Enterprise Edition, not Java2 Web Edition.

    [ Parent ]

    Let Ultradev hide the technology (none / 0) (#54)
    by royroy on Wed Apr 17, 2002 at 09:06:34 PM EST

    For 2.5 years I made Active Server Pages websites, then 6 months ago my company evaporated. A month later I finally I got an interview. At the interview they asked me if I could introduce a Java solution to their company. That requirement was determined by a non-technical exec. But anyway, given the job market, I automatically said "Yes...yes..can do...yes..." Got the job. Since I'd previously used Macromedia's Ultradev to develop my ASPs, I continued using it with JSPs. It worked amazingly well at hiding the differences between the two technologies. I had three database-driven reports with forms in production before I started looking into the Java code itself. And J2EE? I don't know anything about that. I'm developing on just a few machines and so far JSP's have worked magic for me. I think that exec, did me a big favor, whether he knew it or not. I'm still a one-man operation and the additional power of Java code over javascript & visual basic has actually simplified life. What's a huge stretch for vb or javascript is usually already built into Java. Obviously I've turned a corner and won't go back...unless someone asks me to do something different.

    [ Parent ]
    J2EE vs EJB (none / 0) (#58)
    by Simon Kinahan on Thu Apr 18, 2002 at 05:44:09 AM EST

    My point was that you can create a cheap and simple application using J2EE (but *not* using EJB), which will run on PC hardware and free software. I've not used the equivalent .NET technologies, but I find it hard to see how ASP+whatever can be much easier to write in than JSP+JDBC. Such applications - in J2EE - don't require heavyweight application servers or domain models, and I find it hard to see how they can take weeks or months to write. Speaking personally I've put such things together in days.

    So my question to you is: why do you believe it is harder or more expensive to write a simple app in J2EE (*without* the heavyweight EJB stuff) than it is in .NET ?

    Simon

    If you disagree, post, don't moderate
    [ Parent ]
    New technologies? Bah... (none / 0) (#36)
    by aaobrad on Wed Apr 17, 2002 at 01:51:38 PM EST

    I'm a 25 year old programmer /analyst. When I went to college, guess what they taught me? COBOL and RPG on an AS/400. Granted, I'm working on a Unisys Clearpath environment, but I'm still making good money. People told me I wouldn't hae a job after Y2K. Guess they were wrong.

    We're starting to touch on new technology, and I'm learning as I go.

    Meta Question (4.00 / 3) (#40)
    by Simon Kinahan on Wed Apr 17, 2002 at 03:47:18 PM EST

    Why emphasise learning particular technologies ? Is it not a better idea to build up your core skills - knowledge of important algorithms and techniques, communication skills, market awareness, and so on - and learn knew technologies as they come along.

    After all, there are only so many programming languages, and the range of features is even smaller. Similarly, all ways of doing RPC are pretty much the same, whatever MS may claim. There are only 2 ways to produce portable GUIs, and only a small number of ways to remote them over the network, and so on. When new technologies for doing a particular thing come along, they are almost always just repackagings of something old. Web Services are just CORBA done badly with XML. Java is statically typed Smalltalk. XWT (which someone else mentioned) is basically the same deal as Java's AWT. The article the other day claiming, essentially, that nothing has changed in computing since 1980 is true: the only changes are economic, not technical.

    So why does this question keep coming up ? Well, we all know why: many recruiters rely on keyword searches of CVs to find the people to put forward for a given job. Speaking personally, I don't send my CV to those recruiters, and the employers I'm interested in working for don't use them, because generally speaking the jobs they deal in are techie jobs in groups run by people whose primary interest is not in the technology. I hate those jobs. If, like me, your primary interest is in working on interesting technology, I'd suggest that you not worry too much about your skill set and actually work on learning thinngs that are useful, or even just interesting.

    Simon

    If you disagree, post, don't moderate
    I have the exact answer for you... (2.33 / 3) (#52)
    by sgp on Wed Apr 17, 2002 at 07:07:43 PM EST

    which is exactly why I won't tell you what it is!

    Bwahahaha!

    There are 10 types of people in the world:
    Those who understand binary, and those who don't.

    Don't limit yourself; have fun! (4.50 / 2) (#53)
    by phliar on Wed Apr 17, 2002 at 08:20:56 PM EST

    I've been getting paid to do this stuff (writing code) for around fourteen years. I've implemented language runtimes, UI frameworks, hardware design tools, web-server plugins, voice over IP apps. I don't put any "technology" on my resume -- whatever you've got, I can do because I think this stuff is fun and I'm smart enough to learn anything I think is fun.

    When I interview people, I'm looking for smart people who like to write code -- any specific skills they need they'll pick up in a month or so. I make sure they have other interests because smart people don't limit themselves to any one thing.

    When I'm interviewing at a company, I'm most worried about whether or not the job will keep me interested. And I try to figure out if it's going to be back-biting political hell.

    The problem with being tied to any one "technology" is -- what happens when that hot new buzzword falls out of favour with the PHBs?


    Faster, faster, until the thrill of...

    I've found that... (4.00 / 1) (#56)
    by radish on Thu Apr 18, 2002 at 01:05:25 AM EST

    looking at what people are actually trying to accomplish, rather than how they're trying to accomplish it, is a pretty reliable indicator of what's going to be useful down the road... it's a lot harder to tell which solution(s) will be prevalent, but you can at least get a good head start by knowing the general principle. right now I keep seeing at the top of peoples' lists is security and network administration, so I expect to be doing more and more of that.

    more generally it's always good to learn basic principles in various flavors. learn new languages (and technologies, and protocols) regularly, and make a point of paying attention to how they work internally and why they're good for different things. you don't necessarily have to learn them well, just expose yourself enough to be able to discuss them intelligently, and you can concentrate on whatever rings your bell (or pays your bills).

    Blah. (3.00 / 2) (#61)
    by andylx on Fri Apr 19, 2002 at 11:17:56 AM EST

    I just want a job.. *any* job. I was a software engineer, C/JAVA, for three years. After being laid off for the third time 11 months ago, I'm still looking for work. (As are 20 of the 25 other developers laid off with me.)
    I can't even get interviews for the lowest level work. Whatever job you have, be happy you have one. Who cares if you have to use Perl when you want to use Python... you aren't working in a coal mine and you're probably getting paid good money. If there's a job opening and it's .NET, TAKE IT. If it's QuickBasic, TAKE IT.
    The job market is crap.

    Hedging your bets - which technology for the developer? | 62 comments (60 topical, 2 editorial, 0 hidden)
    Display: Sort:

    kuro5hin.org

    [XML]
    All trademarks and copyrights on this page are owned by their respective companies. The Rest 2000 - Present Kuro5hin.org Inc.
    See our legalese page for copyright policies. Please also read our Privacy Policy.
    Kuro5hin.org is powered by Free Software, including Apache, Perl, and Linux, The Scoop Engine that runs this site is freely available, under the terms of the GPL.
    Need some help? Email help@kuro5hin.org.
    My heart's the long stairs.

    Powered by Scoop create account | help/FAQ | mission | links | search | IRC | YOU choose the stories!