JOB REFERRALS
    ON THIS PAGE
    ARCHIVES
    CATEGORIES
    BLOGROLL
    LINKS
    SEARCH
    MY BOOKS
    DISCLAIMER
 
 Wednesday, January 25, 2012
Is Programming Less Exciting Today?

As discriminatory as this is going to sound, this one is for the old-timers. If you started programming after the turn of the milennium, I don’t know if you’re going to be able to follow the trend of this post—not out of any serious deficiency on your part, hardly that. But I think this is something only the old-timers are going to identify with. (And thus, do I alienate probably 80% of my readership, but so be it.)

Is it me, or is programming just less interesting today than it was two decades ago?

By all means, shake your smartphones and other mobile devices at me and say, “Dude, how can you say that?”, but in many ways programming for Android and iOS reminds me of programming for Windows and Mac OS two decades ago. HTML 5 and JavaScript remind me of ten years ago, the first time HTML and JavaScript came around. The discussions around programming languages remind me of the discussions around C++. The discussions around NoSQL remind me of the arguments both for and against relational databases. It all feels like we’ve been here before, with only the names having changed.

Don’t get me wrong—if any of you comment on the differences between HTML 5 now and HTML 3.2 then, or the degree of the various browser companies agreeing to the standard today against the “browser wars” of a decade ago, I’ll agree with you. This isn’t so much of a rational and logical discussion as it is an emotive and intuitive one. It just feels similar.

To be honest, I get this sense that across the entire industry right now, there’s a sort of malaise, a general sort of “Bah, nothing really all that new is going on anymore”. NoSQL is re-introducing storage ideas that had been around before but were discarded (perhaps injudiciously and too quickly) in favor of the relational model. Functional languages have obviously been in place since the 50’s (in Lisp). And so on.

More importantly, look at the Java community: what truly innovative ideas have emerged here in the last five years? Every new open-source project or commercial endeavor either seems to be a refinement of an idea before it (how many different times are we going to create a new Web framework, guys?) or an attempt to leverage an idea coming from somewhere else (be it from .NET or from Ruby or from JavaScript or….). With the upcoming .NET 4.5 release and Windows 8, Microsoft is holding out very little “new and exciting” bits for the community to invest emotionally in: we hear about “async” in C# 5 (something that F# has had already, thank you), and of course there is WinRT (another platform or virtual machine… sort of), and… well, honestly, didn’t we just do this a decade ago? Where is the WCFs, the WPFs, the Silverlights, the things that would get us fired up? Hell, even a new approach to data access might stir some excitement. Node.js feels like an attempt to reinvent the app server, but if you look back far enough you see that the app server itself was reinvented once (in the Java world) in Spring and other lightweight frameworks, and before that by people who actually thought to write their own web servers in straight Java. (And, for the record, the whole event-driven I/O thing is something that’s been done in both Java and .NET a long time before now.)

And as much as this is going to probably just throw fat on the fire, all the excitement around JavaScript as a language reminds me of the excitement about Ruby as a language. Does nobody remember that Sun did this once already, with Phobos? Or that Netscape did this with LiveScript? JavaScript on the server end is not new, folks. It’s just new to the people who’d never seen it before.

In years past, there has always seemed to be something deeper, something more exciting and more innovative that drives the industry in strange ways. Artificial Intelligence was one such thing: the search to try and bring computers to a state of human-like sentience drove a lot of interesting ideas and concepts forward, but over the last decade or two, AI seems to have lost almost all of its luster and momentum. User interfaces—specifically, GUIs—were another force for a while, until GUIs got to the point where they were so common and so deeply rooted in their chosen pasts (the single-button of the Mac, the menubar-per-window of Windows, etc) that they left themselves so little room for maneuver. At least this is one area where Microsoft is (maybe) putting the fatted sacred cow to the butcher’s knife, with their Metro UI moves in Windows 8… but only up to a point.

Maybe I’m just old and tired and should hang up my keyboard and go take up farming, then go retire to my front porch’s rocking chair and practice my Hey you kids! Getoffamylawn! or something. But before you dismiss me entirely, do me a favor and tell me: what gets you excited these days? If you’ve been programming for twenty years, what about the industry today gets your blood moving and your mind sharpened?


Wednesday, January 25, 2012 4:21:40 PM (Pacific Standard Time, UTC-08:00)
Amen brother, preach on.

I've been thinking this for quite a while now. I've been around the industry for less time than you have, 13 years. But, even that's long enough to realize that there really isn't that much new going on. It feels like it's been that way for a few years now. I keep trying to find things that will get me interested and excited once again about programming and technology, but nothing has done that in some time now. I thought functional programming (ala clojure) would be the ticket. Since the CPU speed race is over, and the multi core race is on, it seemed like functional programming would be an exciting technology to take advantage of all those cores. But then I realized that functional programming is trying to solve a problem which for most of us was solved years ago. Most programming is now server side http/web based and that naturally and efficiently solve the multi-core problem for the most part. All servers/frameworks partition work naturally based on http requests and then schedule the requests to execute on multiple cores/chips without any user involvement. This also naturally eliminates many of the concurrency issues, again usually without much programmer intervention. So while functional programming may have some niche applications, for the bulk of programmers it is solving a long solved problem.

But that is just one example of what I think is driving the sameness of programming now. The first cause of this is I think that most programming language and environments have acheived feature parity. There really are very few differences between living in Rubyland, .NET-land, Java-land etc, and therefore very little to get excited about. When Rails first came out I got really excited and learned Ruby. I was working on a Java project at the time and was looking at what it would take to migrate to the new/exciting platform. While I was doing this Java-land very quickly matched most of the features of Ruby-land in Groovy and Grails. So, I went that direction as it allowed me to migrate slowly and keep my existing code base. Was that a good business decision? Yes. Was it exciting? No. I think that's the experience of a lot of people these days. There isn't much compelling about switching or looking at a different environment, mainly because they all look the same by now.

I think the ultimate cause of this may be that we are reaching the end of the low hanging fruit in computing. Sure things are continuing to get smaller, but as you point out, there really isn't much of a difference between developing VB apps in the late 90's and developing iPhone or Droid apps today. Memory sizes continually get bigger and cpus sprout new cores every week, but what are we going to do with them? It seems like they just allow us programmers to be even lazier than we were before, and where's the excitement in that? I think for the excitement to return, there has to be a game changer. The internet was a game changer because all of the sudden there were all kinds of possibilities that simply were impossible prior to that. If/when that new game changer shows up, then the excitement will return.
David Clark
Wednesday, January 25, 2012 5:24:30 PM (Pacific Standard Time, UTC-08:00)
I think for me, it's two things:

The first is functional programming. My background is in AI, so I learned to program in LISP and Scheme in graduate school. I think FP is exciting, but what's more exciting is seeing all the young programmers who are getting interested in FP and bringing it into the mainstream. And I think FP -- in combination with other techniques -- is the best hope for tools that will conquer the challenges of asynchronous and distributed computing. But personally, I'm attracted to two things about FP: 1) the extreme reductions in code size and increases in composability it makes possible, and 2) it just flat out puts the fun back into coding. I don't know exactly why this is so, but it is.

Second is the combination of two things: the ease of creating new languages and DSLs, coupled with the willingness of the programming community to explore alternative computing models. (Again, as an "old timer," I got a taste of this when I learned Prolog in school.) It's cool that modern compiler tools and DSL-friendly languages like F#, Scala, and Ruby, make this so simple. As you point out, much of this simplicity is used merely to reinvent the wheel; but eventually, a young programmer who is cutting his or her teeth reinventing the wheel now, will go on to develop the next big thing.

DSLs have gotten a bit of bad press lately as having been overhyped. But I think the reality is exactly the opposite. Modern tools and languages have made DSLs so easy to craft that DSLs, and particularly internal "mini-DSLs," have simply become expected tools of the trade. There used to be a saying "today's AI is tomorrow's software engineering," and to a certain extent, DSLs have followed a similar path. (I'm also reminded of the title of the Doobie Brothers album "What Were Once Vices Are Now Habits," lol.)

And if I could add one additional thing, it would be Python. Python is not the be-all, end-all of computer languages. And personally, I prefer modern statically-typed languages with type inference over dynamic languages. But Python is nevertheless a very good language, and it does make it easy for beginners while remaining a language with more rigor than the BASIC that enticed many of us old timers into the business.
Wednesday, January 25, 2012 7:37:09 PM (Pacific Standard Time, UTC-08:00)
I think this is just a sign that the focus of the vast majority has shifted from solving hard technical problems. Mathematically, the relational model is far superior to a simple key value store, but people don't care about that. The computer scientists have been overthrown by kids that got tired of their science crap, dropped out, and made billions writing software. There is a hell of a lot of interesting applications being built today, but the programming isn't the hard part. So maybe you are right, programming isn't as interesting today, but that doesn't mean that designing and building applications today isn't more interesting than it ever was.
Jesse Ezell
Wednesday, January 25, 2012 11:42:03 PM (Pacific Standard Time, UTC-08:00)
Solving business problems gets me excited.
Especially if I can create a simple solution.

Yesterday, I ported 200 lines of C# to VBScript. And I was happy, because it helped solve a business problem.
If you are getting excited by shiny things, you're playing the wrong game.
RichB
Thursday, January 26, 2012 12:27:56 AM (Pacific Standard Time, UTC-08:00)
WCF got your blood moving? It gets my blood moving too, but not in the good way.
I've been in coding professionally for 15 years and coding for 25.
FP's move towards mainstream is what propels my interest today. Coding has never been more fun!
Robert
Thursday, January 26, 2012 1:57:46 AM (Pacific Standard Time, UTC-08:00)
And I thought it was just me that feels that way. Now I'm not sure if I should feel relieved or more depressed...
Kai
Thursday, January 26, 2012 4:21:25 AM (Pacific Standard Time, UTC-08:00)
Parallelism/Concurrency are still very exciting. So, is its neighbor Networking. So, is distribution. Developing in either one still get me perked up.

I think there is still plenty of uncharted territory in the first category. And I can only imagine that it will take us in completely unexpected directions - listen to Dave Unger's interview for example -> give up non-determinism? that is fresh. Sounds a lot more like the work of a brain than a computer.
Alex Shneyderman
Thursday, January 26, 2012 4:25:25 AM (Pacific Standard Time, UTC-08:00)
What gets me excited is that we're upleveling. My recollection of 20 years ago is very different from yours. Basically everything back then sucked (no pre-emptive multitasking, no memory protection, no array bounds checking).

When I see the rumors that Windows Phone 8 is going to have the NT kernel, I get excited (what can I say, I guess I'm a Microsoft fanboy and a massive geek).

When I see that WinRT makes everything async (and that coincidentally the mainstream languages get first class support for it) that excites.

I could go on, but I really think the small fundamental improvements are high bit, not the "shiny things" as RichB calls them.
Thursday, January 26, 2012 5:56:38 AM (Pacific Standard Time, UTC-08:00)
I think the case can be made that any new concept/tool created in the software development world is/was an evolution over existing concepts. There would be people that would call it revolutionary and also those that would say "back in 19XX we already had that, we just called it something else"

Having say that, I do feel there is a lot of enthusiasm in the community to make stuff happen. I cannot think of another time where it was as easy (relatively speaking) for people to make a software contribution that has the kind of reach that we have today. And I mean both, to reach a ton of consumers (if you develop the next Facebook or Instagram) or to reach a ton of developers (if you develop the next Github or Rails.)

The kind of challenges that average systems are seeing are forcing people to look deeper into "new ways" to approach them (e.g. asynchronous, functional, DSL, NoSQL, et cetera) and finally apply those -mostly theoretical- concepts to the real
world and see how/where they fit and what new problems will develop.

Perhaps what you are looking for is a new great discovery from the academia? but then again, I am not sure we will recognize it even if we see it...we might dismiss it as something that was done before.
Thursday, January 26, 2012 6:26:07 AM (Pacific Standard Time, UTC-08:00)
As someone who's in his 30th year of coding for pay, and is going on 40 years from having first faced a 12-key card-punch to crank out some Fortran to print out a sine-wave on a line-printer listing, what continues to excite me is the way that tools (in their broadest sense) continue to improve. Things that are done often, get commoditised; and no longer have to be hand-rolled every time, though can still be when working with some special requirement.

Net result -- I can achieve more for a given effort, because I'm making use of the incremented intellectual capital that's grown around us over those years. There may not be differences in kind, but the differences in degree are spectacular.
Thursday, January 26, 2012 7:29:48 AM (Pacific Standard Time, UTC-08:00)
Hi there.

It seems like the great "Age of Discovery" is over with programming. Now we're left a nice, neatly laid out map of the programming world, with little incentive to head for the far-flung corners of the planet in search of some shining unexplored nugget of wisdom.

Now in my late 30s, I have always found myself lamenting that I was born about ten years too soon -- the idea of hacking away into the wee hours of the morning on some new hardware, creating new compression algos, or perfecting a digital sample mixer, stoked the romantic fires that relational databases and PHP never did. The low hanging fruit was well foraged by the time I was old enough to know my place in the world!

However, there's one tiny thing I take solace in: I can create things with relatively little effort these days. Once upon a time it was a major undertaking to get a VESA driver written that would reliably talk to a large quantity of video adapters. In that same era, interfacing with various and sundry peripherals was, to put it nicely, a total crap shoot. Binary portability was atrocious unless you shot for the lowest common denominator, and I will certainly not miss having to write my own EMS/XMS routines (although they were disturbingly simple for something so important), or handle segmented memory addresses.

Yes, things are less exciting along those lines, and some others as well, but being able to create applications that would have taken me several years in a matter of months, and with fewer headaches, allows me to experiment more and tackle projects that were once pragmatically filed under the "I'd love to, but will probably never have time for" category.
D C Folli
Thursday, January 26, 2012 7:33:39 AM (Pacific Standard Time, UTC-08:00)
Speaking as a bit of an old-timer who keeps right up to date, I can sympathise. One of the most interesting aspects of computing back in the day was artificial intelligence which really fired the imagination. However, it proved to be extremely hard to achieve and ended up getting sidelined in favour of more exciting fields.

So what do I find exciting right now? Here's a short list:

* intelligent agents using Bitcoin as a means to pay for server time/storage (see https://en.bitcoin.it/wiki/Agents)
* the Raspberry Pi, a reasonably high-powered computer that retails for $30 that offers the joy of programming to a vast audience of jaded newcomers (see http://www.raspberrypi.org/)

Told you it was short.
Thursday, January 26, 2012 7:42:06 AM (Pacific Standard Time, UTC-08:00)
Yes, it all goes in cycles, round and round. What's new today was old a decade before, and new a decade before that :-)

That's actually the source of my frustration. As far as computers go, I know we've only tapped a small potential of what these machines can actually do. There is so much great software out there that needs to be written. Sophisticated stuff that really handles the problems, and helps improve our lives by putting the complexity genie back into the bottle. But for decades now what we have gotten are wave after wave of new programmers coming in and re-inventing the wheel. Sometimes they improve a small piece or two, but then fall way back on everything else. They think they're cutting edge, but in their rush they ignore what's already known. Pick any modern technology, and you can usually find a better version (although not GUI or NUI) written long ago. Then after they've been at it a while, and the issues are starting to stabilize (although they never go back and really fix them properly), a new generation comes along and the whole process starts over again.

There are little bright spots of course. These days I have a watch that contains a whack load of my favorite albums under a very pretty (and very usable) interface. We're making progress, but man is it slow ...

Paul.
Thursday, January 26, 2012 8:13:07 AM (Pacific Standard Time, UTC-08:00)
While I know it's nothing particularly new (my first experience with it was in college some 10-ish years ago, and I'm sure it was around long before then) I'm still deeply passionate about embedded programming. I'm especially excited about it these days with things like the Arduino platform, and I can't wait for the Raspberry Pi to come out. I absolutely love the fact that for roughly $10 I can put together a nifty little collection of blinkenlights, and for another $10-$20 I've built and programmed something actually useful, like a chording keyboard and a guitar effects pedal. (I have an EE background, so I'm reasonably comfortable just buying the Atmega chip and wiring it up myself, but even $35 for the Arduino hardware board is leaps and bounds more accessible than things were when I first encountered them!)
Joel Jorgensen
Thursday, January 26, 2012 8:54:23 AM (Pacific Standard Time, UTC-08:00)
God no, quite the reverse! Why? JSE. Javascript Everywhere.

I have to admit to some of the same crotchety feeling after retiring and starting in on doing research for a tiny project space (sfcomplex.org). The "kids" were just so damn silo'd. "I just do wordpress (or PHP, Ruby, Python...)" sort of responses to doing project work.

I'm sympathetic .. the computing world has gotten huge, complex, and silly. And unnecessarily interdependent.

So I had to start using JS for a project a few years back and hmm, this isn't bad. Closures, prototypal inheritance, ubiquitous, .. thus is FUN! And then came Node. Holy cow, now I have the whole computing stack: server (node), client (browser or "desktop" JS, and networking (JSON, AJAX).

Async and networking is just built in. And one of my favorite questions to folks new to JS is "What is a library?" The answer is "a URL!". (OK, that may seem lame but I was just starting in on Google Maps and was surprised that I could just refer to a library rather than hairy installation. Toss in CSS3/HTML5 and wow, what an exciting world.

Example: I'm in grad school now (and nearing 70 years old) and sfcomplex hosted a 3D graphics course. The prof being quite hip allowed us to use any of the incarnations of opengl: desktop, embedded, and you guessed it, webgl. So I started converting the usual examples into JS just to figure out how opengl and GPUs worked. I decided I could do my graduate credit project .. as well as the homework .. all in webgl. It was a huge success and the prof, also author of the book (Ed Angel) is now really excited about JS and the impact it is having on 3D.

To top it off, lots of really bright people are jumping in, building great libraries for very non-browser applications. For example, there is a linear algebra package that is just wonderful, and is pulling me from the great Python system, sagemath to use it instead. Why linalg? Machine learning. Distributed. Heck we can now easily calculate the partial derivatives ML needs. See the stanford free courses for more really exciting research classes.

So less exciting? God no.
Thursday, January 26, 2012 8:58:29 AM (Pacific Standard Time, UTC-08:00)
Ted, thanks again for another well thought out discussion.

Knowing your love of speaking, I think you should consider Onward! at SplashCON. Yea, the acronym sounds l33t, but it's part of SIGPLAN.
Mark
Thursday, January 26, 2012 10:32:52 AM (Pacific Standard Time, UTC-08:00)
Three "new and exciting" directions that I think are obvious for software development.

1) Built-in IDE expert systems. Like code metrics and tooltips but more intelligent. A nice AI that can encode all the basic programming rules of thumb, watch over the shoulder of an intermediate programmer, attempt to understand WHAT it is that they're coding, and make the same recommendations at least a half-interested pairing partner might make. "This is getting hard to read, why not use double dispatch?"

2) Growing software. Most of the software I build are variations on the same concept. Yeah, we've got libraries and reusable packages, and gems, and nugets, and whatnot, but you still need to put them together. What if software could be grown like genetic algorithm art. What if my job, rather than a builder or a tailor, was more of a fancy horticulturalist: "oh no, too much database access from this form, let's scale it back". I already think along those terms, but then I have to convert it into code - why can't the computer do that part?

3) Graphical IDEs that work. We process soo much more information visually, it's a shame we're limited to text. I'm not talking about workflow and gui builders, I'm talking about an idea or even maybe a language that can be represented graphically. In the current iteration of IDEs the only thing I see even leaning in that direction is code folding, which is usually an afterthought that is often used to sweep under the rug code that should be refactored.

But really, imagine being able to browse your javascript code by viewing the scopes in three dimensions; imagine something that does workflows right; imagine a tool for the programmer that makes scale a first-class idea - and punishes you for cramming too many concepts into it. Now that would really be something.
George Mauer
Thursday, January 26, 2012 12:01:58 PM (Pacific Standard Time, UTC-08:00)
The most exciting programming I ever did was Motorola 68000 assembler programming on the Commodore Amiga. But then again, I was 13 and getting the machine to do what I wanted it to was pure magic. 24 years, a wife and three kids later the whole programming thing now feels like a job. Which it is :)
Magnus
Thursday, January 26, 2012 12:10:40 PM (Pacific Standard Time, UTC-08:00)
Perhaps programming is as exciting as it was in the days... it's just you who has grown more, hmmm, mature....
Thursday, January 26, 2012 4:32:03 PM (Pacific Standard Time, UTC-08:00)
As a 25 year old, the js stuff is getting me pretty hot, and yes i think, maybe with 10 more year i will think like you, but our generation, and at least me, is really excited 'bout new(old) paradigm and stuff, getting a tad unorthodox ain't gonna hurt after all.
Damien Fayol
Friday, January 27, 2012 12:29:16 AM (Pacific Standard Time, UTC-08:00)
Ideas may have been around a long time, but what's exciting is the scale of their implementation....
Collaboration and knowledge sharing have entered a whole new level.
Things like iterative-development, etc were not really feasible before.
The way we build things has evolved tremendously.
Anon
Friday, January 27, 2012 3:47:49 AM (Pacific Standard Time, UTC-08:00)
Yes, you are "old and tired and should hang up my keyboard and go take up farming" ;)

I'm much less in the industry still can tell you that programming is exciting only until you realize and truly understand it. Man is excited until he understands something. You need something *entirely new* and hard.

Maybe you can try understanding your children? ok you did! or your wife? ok, I said hard, not impossible, maybe farming is really the best idea :)
avillager
Friday, January 27, 2012 3:58:12 AM (Pacific Standard Time, UTC-08:00)
Couldn't agree more.

I've lost track, in my 40odd years of programming, of the number of times various 'paradigm's (eg procedural programming, relational/heirarchical data etc, AGILE development) drop in and out of fashion or become the latest greatest thing (but under a new name).

A good example is parallel programming for multiple cores/processors - research into techniques for this began way back; parallel systems were in production use (remember the Transputer, CRAY etc) long before Intel had managed a processor without a segmented memory architecture let alone a multi-core, and yet I still regularly see posts from people about how this new, multiprocessor world is difficult to program effectively for (which is is - but it isn't NEW!)

Corel had a truly free-form, searchable, non-relational database using a similar principle to map:reduce (although only single CPU at that time) many years ago, but nobody could (at the time) work out how best to use it or what it might enable, so it got canned. NoSQL anyone?

"The more things change, the more they remain the same."

8)
Friday, January 27, 2012 4:57:04 AM (Pacific Standard Time, UTC-08:00)
I know what gets me fired up today - creating emulators for 20-year old game systems in new languages such as Scala. :)
Friday, January 27, 2012 5:42:26 AM (Pacific Standard Time, UTC-08:00)
I think there are tons of ideas that need doing; yes the language evolutions we see remind us of other things in the past, but for me it's not really about the language or platform but the idea. For example, I'm working on some experimental software to sketch in 3D using a unique approach. I need realtime performance, so I'm using C++ (even though that language is not the most "fashionable" these days.)

As for AI, machine learning has all kinds of potential applications, especially when you consider the new types of inputs that are ubiquitous these days ( motors, sensors, video, images, voice, Kinect, internet data, etc.) What type of new Frankenstein device can you dream of ?

Even if your thing is the language itself, there's a lot to experiment with. Visual languages have received a bit of research attention in the past, but I think new graphical innovations may make that a reality in future.
Chris
Friday, January 27, 2012 6:15:41 AM (Pacific Standard Time, UTC-08:00)
Funny i was saying to my wife that i was getting bored with programming. I'm 53 and have been doing it for a long time, my first program was entered using toggle switches and a load button "up hill both ways".
I was even thinking of getting into doing some project management (something i swore i would never do) just to do somethiing new and still stay in the business
What really gets me fired up is the opportunity to do some non technical aspects of the software business (and business in general) such as team dynamics, customer satisfaction, etc.
Rick
Friday, January 27, 2012 8:50:40 AM (Pacific Standard Time, UTC-08:00)
I would suggest that if programming is less exciting today then you are working on the wrong project (or type of project). I come from the "embedded" world where there is a lot of exciting work going on - autonomous cars, robotics, exoskeletons, smart grid, and even (in my case) megawatt battery management systems, to name just a few. Having worked in embedded assembly and C for years, the work I am currently doing with C#, .NET, and MySQL is quite exciting for me.
Friday, January 27, 2012 10:29:14 AM (Pacific Standard Time, UTC-08:00)
There are a few things that get me excited these days.

FP, as many have mentioned, is nothing new. But with the increase in parallelism and memory we get access to, it allows for some very interesting work.

Refactoring. I might be a masochist, but there is nothing that brings more joy to me than taking a thousand line switch statement and moving it to ten lines of functions using lambda or better structures. There's plenty of old, stale code out there that could use some improvement. Sometimes I feel that I live a life like Wall-E, compacting little bits of trash at a time in hope it makes a difference.

Shift to the web. I think the smartphone/"app" motif of today will be gone in 3 years time. "Porting" is something that should be a relic, and yet people port everything from iOS to Android to whatever the next cool thing is. With the shift of HTML5 and a multimedia web, I think the next decade will be a 3rd shift to the web, where our devices dumb down yet again. Web 3.0, I'm calling it.

Education. The next big computing frontier is teaching computing and logic to the masses once again. There was a time when being an engineer meant you could bang out some code when necessary. These days an engineer might know how to use Labview at best. I think we'll see a lot of work in the next decade on teaching computing fundamentals at young ages. I mean, we used LOGO when I was in middle school; why are they still teaching MS Office to high schoolers?
Friday, January 27, 2012 11:09:25 AM (Pacific Standard Time, UTC-08:00)
"[C]omputer programming is still in its infancy. And that suggests we need to keep our minds open -- to evaluate new frameworks and programming languages with the thought that they may actually be better than what we’re using now."

-- Charles Petzold

http://blogs.msdn.com/b/msdnmagazine/archive/2012/01/26/10260983.aspx
Saturday, January 28, 2012 4:17:59 AM (Pacific Standard Time, UTC-08:00)
After 12+ years of programming, I reflect back on what I did and realize that what got me excited were the nature of the projects I worked on, and the people I worked with. Whether it's C++, C#, or javascript, SQL Server or MongoDB, mobile or desktop, if you have an interesting problem to solve and you do it with interesting and passionate people, you're gonna have a blast. By far, the most fun I had (~10 years ago) was building an image acquisition system in C++/COM with camera, microscope, motors, .. with a team of passionate electrical and mechanical engineers, vision specialists and interested managers. We had so much fun in the lab building this thing. Was working with COM/ATL fun? Yes it was, because we had fun at everything we did in this project.

But the CRUD apps we usually build are very boring, because we do the same thing over and over. When the day comes that we are able to build these apps on our cell phone during a commute (and this day is coming...), then maybe we'll have time to work on more interesting and challenging problems, with whatever tools (language, IDEs, persistence) will be the trend at this moment.
Saturday, January 28, 2012 12:50:44 PM (Pacific Standard Time, UTC-08:00)
Well, May will be the 54th anniversary of my first line of code.

Without getting into the particulars, I have noticed three things:

1. There are cycles through periods of enthusiasm and explosive interest. At the level where individual computing mattered (something that intrigued me from the first time I set the knobs on an IBM 650), the biggest spark after minicomputers and time-sharing systems was the micro-computer and the PC (not Windows until Java and VB). Perhaps the most profound next step was the web and all of the interest that inspired for newcomers. It seems apparent that ecosystems, including mobile devices and the cloud are a continuation, though an individual-computing stimulus hasn't happened yet. I think we're in a between-point and it is not apparent whether we are on the downslope or the ascending curve just yet.

2. I don't scale. It is more difficult to embrace meaningful individual projects because of the technologies that must be mastered enough to be confident in what is being produced. It is also tiring to have to relearn an old trick in its new clothes. New tricks are rather far between. The complexity of getting beyond simple things is another problem. The past was simpler because of the constraints and because interdependencies (and layers of them and their abstractions) were far more comprehensible. I grant the increasing power, but I wonder about the learning curve that now attends moving from the simple to the complex that is where new opportunities are to be found.

3. I think aging is a factor, although sometimes in a puzzling way. With experience, it becomes possible to envision farther ahead and develop clear roadmaps for progressive development. We have better tools for interative improvement and spiraling to a destination too. Remember how hard it was to figure out where to begin in developing simple apps as a beginner (especially when mindless tweaking of boilerplate was not so prevalent)? That goes away as our conceptual reach expands. So I can see farther, though I have lost much of the mastery of simply flogging code that I had when my horizon wasn't so far. Strange that. The unsatisfying age aspect is that I can see farther but I move slower and I definitely don't have it all in my head any longer.

It is useful to be a beginner again, with a beginner's mind, but not a beginner's blindness. I'll know when the tide again rises to a place that renews my passion.
Saturday, January 28, 2012 3:48:03 PM (Pacific Standard Time, UTC-08:00)
I can relate to what your saying Ted and having met you in person can also picture you saying all this. I don't think your quite old enough to hone your "damn kids getoffmylawn" phrase, but when the time arrives I am sure you'll do it with gusto!!

I believe there are a lot of conceptual things that resurface, and we can definitely draw parallels and feel like its groundhog day.

However what gets me excited today is the scale of it all and the connectedness of applications. We are seeing a lot of open API's and RESTful services, using OAuth one company can authenticate you with Facebook or Twitter. Sure all this connectedness adds noise but it also adds excitement.

Also the fact that these tools and ideas are resurfacing is great. Was it Isaac Newton who's quote was that he got where he did because he stood on the shoulders of giants who came before him? I feel like the computing power and the number of people using technology is at an all time high, this enables leveraging the knowledge of the past to do things that couldn't catch on so much in the past.

Even look at what you can do in a Web browser now with HTML5, JavaScript, CSS, AJAX. Its equivalent to native clients of years back. I know the first rendition I coded in was mostly about client side validation and custom hovers...LOL.

I feel like today you can go from an idea to a feature a lot faster thanks to the developments of the past. I agree that we aren't innovating completely, its more like a recycling and an evolution than a breakthrough.

Things like Kinect, Siri, and Arduino are cool too. Also the ability to provision machines on demand without buying hardware (AWS) opens up new possibilities to experiment.

Saying all this is funny though. The other day in an "old man" moment I mentioned to a colleague about Github being the SourceForge of this decade, so I am guilty of looking at things and seeing them as reincarnations of previous concepts. I think Github is great, and its nice to see new era companies being more transparant with the public.
Greg
Thursday, February 02, 2012 1:15:06 PM (Pacific Standard Time, UTC-08:00)
In my opinion the problem of this industry is, is too much based on young people, mature and experienced people are discouraged to doing software, yes I know is crazy and stupid but this is the way most of industry runs.

This is the reason most of people see something new in many things and why reinvention is so typical in software.
Friday, February 24, 2012 1:02:30 AM (Pacific Standard Time, UTC-08:00)
Programming in itself has become a standard tool like a knive or
a wrench. Not too many people get excited about a knive or a wrench nowadays.
So it is time to use this tool and create something exciting that
integrates and interacts with the physical world
(use arduino, autonomous vehicles, expand the possibility of art,
interactivce sculptures ... ).
Just don't repeat the ever same shitty boring business and web crap
ad nauseam.
Just me
Comments are closed.