views:

324

answers:

14

I'm at a cross-roads in my professional life. I've dabbled in various languages/technologies (LAMP, iPhone apps, c++) and programming activities (contests, writing C# code as a "tool developer" for a living, work on some simple web apps etc). I can learn pretty much anything but I'm far from mastering any of these domains.

What technology would you master if you had practically unlimited time and resources?

Why that particular technology? Job security? Benefit to open-source community? Interesting?

+10  A: 

Functional Programming, a discipline that is very old but neglected for many years because of its reputation for higher-level mathematics and scholarly concerns, but has recently gained favor again due to the problems of multiprocessing and reliability, and the desire to program at a higher level of abstraction.

Robert Harvey
one up for Functional Programming
Perpetualcoder
+2  A: 

SAP ERP (R/3, Netweaver, etc)

Martin v. Löwis
+1  A: 

There's no such thing as job security. Follow your passion. If it has a certain technology at it's core, master that.

Shaun
Sotomayor would disagree with you.
quillbreaker
+1  A: 

Just be competent, and aware of the latest and the best. All technologies and languages have an expiry date IMO and have heard Anders Heijelberg say the same (no arguements when he says something).

Perpetualcoder
+6  A: 

Technology changes so rapidly that I no longer attempt to master any specific technology (in the sense of understanding every last nuance and feature).

My goal is to build software quickly and efficiently that solves real problems. If you become good at the specific technologies involved (but not a "master"), that's probably the best balance of invested energy to rewards reaped.

Do spend time learning about (and possibly mastering) architecture and design patterns, as well as development best-practices. These change much less frequently than the technology they are applied to.

Eric J.
+6  A: 

I would master the technology of the electric guitar and leave all this programming stuff behind. :-)

Seriously, the thing that I find myself doing more and more of is client-side web programming. If the future of programming is the web, then the future of web programming is rich, client-side interactivity.

tvanfosson
+1 funny. Almost exactly my answer, except my guitar is acoustic :-)
djna
And for me its digital art. Hence my answer (above). I get paid to work on all kinds of things I don't care about. But what gets my absolute devotion is the sort of thing I care the most about.In my case though, that tends to mean more systems development and less "web" development.
Shaun
The web will continue to be used, but saying it's the future is like saying the future is now. The net will mature, and evolve, but the emerging technologies that will accompany it's maturation are the future the web is just the backbone. Part of the notion of the "cloud" is that more functionality will be moved to the "cloud" instead of being handled locally.
NoMoreZealots
So, I was actually playing off the latest Coding Horror blog post, but since it's down I couldn't link to it.
tvanfosson
+3  A: 

Since you clearly have unlimited time and resources: developing an intelligent machine.

Robert Harvey
Which you can use to build a FTL space ship.
APC
+1  A: 

I'd say WPF (which includes Silverlight, Xbap, plain simple desktop app)

Orentet
+4  A: 

I'd make the case that no-one ever really masters anything. The more you know about anything the more you realise how little you know.

With unlimited time and resources (in truth I'd probably learn to play guitar a bit better, if I could master that then no more IT.) I'd probably prefer to learn some level of detail about a lot of technologies that only deep in one - the rationale being that at's all too easy to become set in your current ways of thinking. I don't get functional programming at all, so I should stretch my mind a bit perhaps?

For sure, whatever you choose to master will in the end become obsolete.

If I had to choose one area of deep study for the moment, that might have future career implications, I'd pick one of Ruby/Rails-style supposedly rapid web development tools and a touch of Dojo or equivalent. Because that seems a natural extension beyond my Java/JEE skills. I'd expent the answer to be different in 18 months time.

djna
True enough. A friend of mine read in a non-technical article (about gymnastics) that it takes 10,000 hours to really master a field. That's 8 hours a day every workday for 4.8 years - and how many programmers really work in just one field? And, how many technologies are still relevant after 4.8 years anyway?
quillbreaker
+1  A: 

I'd say Web Applications. Not web sites, but applications. And programming for embedded devices.

Sorantis
+1  A: 

What technology would you master if you had practically unlimited time and resources?

I would master iPhone Development.

Why that particular technology?

Possibility of (very)early retirement.

karim79
+3  A: 

I'd say "Computer Science" - go back to the basics and master those, instead of focusing on a particular technique or technology.

Get the Knuth "The Art of Computer Programming" books, or some other good algorithms book ("Introduction to Algorithms"), and work through it.

Why? Because that knowledge transcends any particular technology, product or passing fad. It will last you for the rest of your career, and probably make your day-to-day work more satisfying as well!

svec
+1  A: 

Rebol of course :)

Rebol Tutorial
+1  A: 

At the end of the day, most software "technology" are just buzz words. The "new" technology in GPUs is "programability" and compiler support on a largely Von Neuman/Harvard hybrid architecture (60+ year old "new technology there). Basic theory still applies and what they've been teaching for 30+ years still applies. I have a 30 year old book that talks about designing "Interpretive Compilers" i.e. JITs. That's one of the "new technologies" that has everybody a buzz. If you have an understanding of compiler design the notion that they are saving the last pass of intermediate-to-native translation optimization til it's ready to run doesn't sound like anything new. It's merely chopping the compilation process up into bite size pieces, like a digital sushi chef, and distributing it to the targets. Client server programming is as old as the hills. A Web client is just a fancy terminal like a VT100 on crack, or a stand alone X-terminal. (We have one of those in storage at work, they were bought to be used Sun Workstations)

So again, master the fundomentals, regardless of what new Jargon or thought model is applied on top of them they always remain.

NoMoreZealots