Software Development


Software Development07 Jun 2007 11:40 am

You’re sitting down, basking in the glow of your computer monitor. Suddenly, a magical blue beam comes down from the sky and zaps you right on top of your head. It has a cooling, tingling feeling and then a bright blue light flashes before your eyes.

*ZAP*

You find yourself transported back to year 2000 in front of your Pentium 3 (or G3 Mac?) again, with no memory of the future where you came from.

“Oh oh!”

You see a new ICQ message on your monitor. Its from a mysterious person telling you that in the year 2007,

1. The Mac is going to steal developer mind-share from Windows, and you’ll also see a lot of “I deploy on Linux, but develop on a Mac” people.
2. Ruby is going to be one of the top 10 programming languages.
3. JavaScript is going to be one of the most important programming languages.
(3 statements above from Global Nerdy)
4. Flash is going to win the video streaming war and it’ll be the core technology used by a company that gets acquired by Google for US$1.65 billion. RealPlayer and all the others? Sunk into relative obscurity.
5. Java will be languishing as a language for desktop application AND client-side web development.
6. Perl isn’t cool anymore. None of the Cool Kids seem to learn or use it.

Would you have believed it? Or maybe even call it stupid? Those 6 points above really illustrate how unpredictable the software world can be.

I believe that in the next few years, the number of web sites devoting to the tastes of Alpha Geeks will increase considerably. In the past, we had sites like Slashdot. Now, we have sites like Reddit and Digg, which allows interesting new ideas, programming languages and paradigms to propogate through the entire community a lot faster than ever before.

As a result, the growth in mindshare for fringe technologies that are actually good, will increase dramatically.

So that everyone can laugh at me when I get it wrong in 2014, here are my bets for the changes that will be coming up for the next 7 years.

1. The Mac will get 20% marketshare of the global personal computer/laptop market. This segment of the market will also be the part that really matters to developers - the type that will actually upgrade their computers and buy after-market software. This will have a huge impact on the consumer software developers worldwide as cross-platform functionality can no longer be ignored.

2. Java will no longer dominate as the de-facto server-side programming language in enterprise projects and its importance in academia will be significantly reduced. Erlang, Python and Ruby (for web shops) will hit the mainstream consciousness and replace Java for server-side programming tasks. Python will get introduced in the curriculum of universities to replace Java as the main instructional language.

3. Client-side programming will be dominated by hybrid-apps. Many more apps will use Javascript/HTML/CSS/etc for front-end work and adopt a hybrid approach of using Python (or maybe even Lua) for the bulk of the code, and only leaving some portions in C/Objective-C/C++.

4. Functional programming languages will (finally) hit the consciousness of the mainstream developer. Functional programming will be taught to first-year computer science students.

It’ll sure be interesting to see which of these things I get right or hopelessly wrong in 2014! Here’s hoping this site even exists at that time. :-)

Software Development17 May 2007 01:35 pm

There’s this great post written by Mike Johnston called Publisher As Casino on how hard it can be to get a book published.

But.

Just replace the word “book” with “software” (or even better, “computer game”) in the article, and also replace “publisher” with “venture capitalist”, and you can get a remarkably accurate story about software product developement and computer game development too.

Two articles for the price of one!

As Mike has said, it takes *alot* of “front-loaded effort” before you can turn a few scratches on a napkin or an idea in your head into a finished piece of software or a publishable book. Like Mike and his unpublished manuscripts, lots of developers have tens, if not hundreds of tiny little scripts, project ideas and other half-finished projects just lying around the hard drive. Many of those could be turned into a potential product - if enough effort is invested in it beforehand. Its even more true for computer game development.

And just like book publishing, there *could* be a payoff, but its a long long way ahead and its *very* uncertain whether there will be a payoff at all even after all the hard work put in. Its a brutal industry.

The answer to this problem that many (especially students) have put up is to shout “Open source it!” and like some magic dust, the software will somehow come into being. The reality however, is far from it.

Open source software really succeeds when there is a common itch that many developers want to scratch, and a single developer (or perhaps a small team) needs to first produce some prototype and code for others to hack with before the project can even gain traction. Without this, the project will stall with just lots of talk and high-level design discussions that goes on for a really long time. All talk, no walk.

And this up-front development before a project can gain traction? That takes time - and in this day of commuting for hours and longer and longer work hours, this time is getting harder and harder to come by for developers with a Real Job. Add a serious relationship, or a kid, and you’ll be wondering where all your time went.

Like I said in my Mac switcher and indie developer story, its really fortunate for me that I have no mouths other than mine that I have to feed, nor a house or car to pay off. For Mike, who has a kid to feed, his life situation just doesn’t make it possible for him to do what I did and just throw down everything and work 9 months without pay to get the book idea off the ground.

Writing that book or software part-time after hours and on weekends? Sure. And you might just end up with a book or piece of software - 3 years later - if the book or software is still even relevant after all that time.

The answer for both authors and software developers for their ideas to become reality instead of being stuck as a simulation in The Matrix can be summed up in one word: funding.

For my case, I funded myself, by quitting my job, living cheap on my savings for 9 - 10 months before my idea became product. This route is probably off-limits for Mike.

Mike has this idea for his book:
“Game Theory for Photographers. A book exclusively devoted to how average-to-good photographers can get better and “improve their game.” A how-to book with nothing technical in it, but lots of commonsense discussions and many exercises that are concrete and practical rather than theoretical.”

Wow.

As an amateur photographer myself, I would love to see this book come to fruitation. So if you know of any book publishers that are willing to finance Mike for his book, point them to his blog at The Online Photographer and leave a comment with the words in the post “not for posting”, with an email address for him to reply to.