What does it mean to be in today’s technological world?

C64 - CC by Martin Whichary

Looking back 20 years, the landscape was completely different. Even comparing 2000 with 2010 shows a significant change. Someone said that one will always overestimate technical change over a period of 2 years, but will always underestimate it over a period of 10 years. Having been active in this field for more than 20 years (I turned 40 at the end 2009, and have been busy with tech and computers since I was 14 or so),  I think that the previous sentence is quite accurate. As a kid, I remember that I was buidling fancy little boxes that looked like communicators, with a lot of buttons and functions. Well, I now have this thing in my pocket: my Blackberry Bold  smartphone. And there is also an iPhone 3GS around here, so I even have seen the future (okay, there is an iPhone 4 now as well but you'd better keep your hands off of it due some weird antenna issue).

What does today looks like?

Today, we have the following characteristics:
  1. complexity: complexity is a given. Be it the feature set, the network parts, the layers over layers, it just gets more complex. We are building on the shoulders of giants.
  2. shortening of cycles: a product is now designed with an obsolescence cycle of less than a year. Two years in mobile communications looks like forever. A framework will get dated after a month or two.
  3. competition: competition is everywhere and working in a commodity-looking like mode is a sure way to got shot in the head, in a cutthroat environment. Heck, even China talks about outsourcing too expensive people.
  4. scale: we talk thousands, or even millions of users at the same time. We talk smart metering with tons of devices calling home. We talk peer networks. We talk millions of images, or videos.  And it can be done. Google, Amazon, eBay, Facebook have shown that technology is not the limit. (Albeit funding may well be: ads are great).
  5. jump on the bandwagon syndrome only worsening: there is a lot of lemming-like mentality going on. Look at the mobile phone market. It just mushrooms like crazy, same story with the iPad and tablets. Wikis, CRMs, the framework or language of the day (did I said "Enterprise 2.0", oops): copycats and bandwagon effect is multiplicated by a huge factor. No way out, either go with the band and make your music, or see it pass and be left on the side of the road alone.
Ignoring these will only occur at your own peril. We are on a neverending learning treadmill. Do not invest in your continuing education, and you'll be made a dinosaur in less than 2 years (this is the optimistic estimate).

What is different from the past?

Comparing things with 1993 for example, where I was crafting interactive voice response systems for games and banks, there has been quite some progress. Gone are the days where you've got to program your own UART routines, or DMA Mod Player ASM code! Now we have:
  1. Zero Defect mindset: we'd better have better quality components if we want to keep up with the increase in complexity. Just considering that we can now have chains of more than 100 things connected together, just make the math: with a probability of success of 99% for a component, chaining 100 end to end will lead to a success rate of (0.99)^100 = 0.36 So, we need to have high quality tested components to keep on working, otherwise too much would break. That's why things like TDD (Test Driven Design) are quite effective. They do attack causes rather than consequences.
  2. Online stores: instead of chasing applications, we are more and more shopping online. To the point that some shops have the following issue: people come to look into the shops but do not buy there. They go back home, connect, and shop on line for a cheaper price point.
  3. Open Source as a program museum: this speeds the learning curve tremendously. Designers have the MOMA, coders have the Forges.
  4. Fragmentation is increasing: Java-Dalvik, PHP-HipHop, Android custom, OS X, WinXP, Vista, Seven, iOS4, WebOS, ... Get used to it, you'll have to pick your technology to the risk of being turned irrelevant. Expect to switch languages, platforms and paradigms several times in the course of a carrer.
  5. Mobile: the mobile is everywhere, there will be more people using mobiles than desktop and laptop machines. A smartphone with a bunch of small apps goes a long way in replacing a PC. It frees you from the desk. Social life is (somewhat) normal again.
  6. The Intertubes: The internet is a godsend. No need to hunt down mysterious documentation, no more need to travel like a migrating bird. Bandwidth is awesome, resources are plentiful. And affordable. We've got 15MBps in the house and it costs almost nothing!
  7. Globalization: the best thing. Services can be rendered remotely to all parts of the world. How cool is that? Teleconferencing, skype, outsourcing of work are a reality. I carried one of this year projet all over the web. Not even phone calls. Two meetings with the end customer: one for saying "hi" and the other one for getting a sheet of paper signed off as proof of project completion. How cool is that? The development was occuring in Bulgaria with one of my partners. Best of all, the full history of the project is on-line, fully archived and available for updates.
  8. Digital natives: Kids have always been exposed to tech that rocks and know how to manipulate it. Nevertheless, I doubt they know anything about double-linked lists and pointer dereferencing. So, in a sense they are able to use the technology, but not always grok how it works under the hood. I was surprised to see that some coders weren't able to use a command line at one customer's location! Wow.
  9. Speed: Things are getting faster. Adapt of fall into the darkness.That's why the art of letting go and moving on is of such critical importance today.
  10. Creative Commons: great licences to use content, images, resources. A culture of sharing and leverage.

How are we coping?

Pretty well actually. We have the most powerful machines of history, the faster communications, almost ubiquity. Several elements are emerging to help us.  Let's just look at some points in the software development field; - Frameworks - Convergence (e.g. Dynamic keyword in .net 4) - TDD : usage first - Practices instead of full process for adoption - Solutions: Tiki, Drupal, SugarCRM - Specialized devices (Blackberry, iPhone, iPad, .Videoplayers, Settop boxes - Making the grid/cloud the next level (eg Heroku, Rightscale, Azure, Amazon EC2/S3) -Safari On Line all of these make things much faster and of a much higher quality.

What I think the future is

I would like to share some trends I do see coming. It will be interesting to look back at them in a year or two (and it 10) to see how accurate these were.

CC image by bfishadow

- Growing divide between users and developers: developing solid innovative code will require quite complex integrated skills and the war for talent will make that worse. - Back to a proprietary model for innovation: look at Apple, they put a lof of conditions in their licences to ensure a iron clad control on their platforms. Who owns the platform own the ads revenue. And owns the ecosystem. - Commoditization of everything midrange: and midrange may well mean more than we think! - War for talent: the need for talent grows faster than the available people. Talent is what makes or break a given initiative. If talent is rare, talent will go where things are "cool", "fun to do", and "inspiring." If an organization cannot afford talent, it is going to be doomed into mediocre solutions that suck. - Social fracture: the education system that we currently have is building a social fracture between those who can have access to stellar education and the rest. This is going to grow worse. - Support communities on the web:  communities like http://www.5000bc.com for example are going to become the places where people can learn and grow. These are run by dedicated people who master their art. Success and e-reputation will make or break one's carreer. In a world of swift changes, the communities one is part of may well end up being the sole stable factor.

Parting words

We've come a long way and it is incredible how much was done in such a little time. We haven't seen nothing yet BTW. Neuroplasticiy and the ability to learn will require one to hone his best asset: his brain and its ability to grow its power, be it as a singular unit or hooked with machines and other people. The ecosystem of the future is already there.