all bits considered data to information to knowledge

22Jan/100

Software Development Trends

Once in awhile I stumble across an article that raises questions I am chewing upon myself. Here is one, The Decade of Development  by Darryl K. Taft.

He proposes a Top 10 list of trends that had impacted Software Development in the past decade. And, of course, I had something to say about each of his points 🙂

1. Web Services/SOA

Yes, most definitely. This is logical evolution of distributed computing. And it is past its potty-training stage as well. Combined with platform as a service it would virtually (pun intended :)) guarantee interesting future.

2. Rise of Open Source Software

Yes... No.. Maybe.  Definitely not to the same extent as other trends listed

3. Web becomes #1 development platform

A bit redundant after Web Services/SOA , and hardly a major trend unto itself. Distributing computing, WOA (Web Oriented Architecture) would be more relevant.

4. The Emergence of Web Frameworks

Most emphatically - YES. Once we stop re-inventing the wheel things will began to improve. Take a hint from electronics: hardware engineers do not start designing ASIC from sifting sand, and yet their creativity still has room to flourish (most often heard complaint from framework-phobic developers). Component based approach and frameworks will lift software engineering from craftsmanship into industry. It goes down to a nitty-gritty technical detail such as unit testing and logging and all the way up to Application Life Cycle Management frameworks in context of Enterprise Architecture

5. Web 2.0

I believe that this is a hopelessly over-hyped buzzword. Yes, there are new tools for collaboration, but the idea is hardly new. Groupthink blown to epic proportions.

6. Simple Beats Complex

Any time, I mus add! Hardly a decade-long trend. I would argue that this goes back as far as human history (though not necessarily in straight line): arcane system of tribal lore and taboos gets replaced by a codified law system (though some might argue that it is no less arcane...) Also, one must beware of oversimplification. Albert Einstein once famously remarked: "As simple as possible but no simpler"

7. The Rise of Scripting/Dynamic Languages

I have to admit, this caught me completely off-guard at the beginning of the century. I used to regard these dynamic languages as second class citizens, even having witnessed power of the Shell (KORN, C, bash). I suspect that the major factor is increased hardware power which alleviated inherently slow performance of scripting languages. Another pet peeve of mine was that scripting languages used to be weakly typed; this either changed (Ruby), or was adressed through a variety of frameworks...[interesting discussion on (de)merits of weakly vs. strongly typed languages here) In retrospect it appears logical (de)evolution: compiled -> byte code -> script... I predict that pendulum will swing back, and we'll see resurgence of compiled languages, maybe self-compiled, JIT compiled etc. Just take a look at emerging EXI -  binary XML standard - one of the oft-touted features of XML was that it is "human readable"; apparently this ceased to be of paramount importance

8. The Developer Community Bifurcates

I disagree, I do not see it as a trend, but rather as a human trait. Once the entry barrier into the field was lowered (thanks a lot, Visual Basic!), the field was swamped with accidental programmers. Even before that, there were sloppy written COBOL and Algol code and atrocious pointer math (just look out there how many tools are created to detect memory leaks in C code)

9. Heterogeneity Rules

Yes, this is an unexpected twist on the old "best-of-breed" adage, and facilitated by inherently heterogeneous web. XML, Web Services and scripting languages complete the picture.

10. The Emergence of Team Development (and the rise of Agile development)

This is a biggie. Finally, we are at the dawn of engineering, with (emerging) body of knowledge and methods to tackle notoriously hard-to-pin-down software problems. Methodology and frameworks (yes, I do see Software Factories on the horizon!)

I would also add raise of Architecture, especially Enterprise Architecture; understanding of the ultimate importance of ecosystem in this inteconnected age.

21Dec/090

.Net turns 10 years old

Ten years of .NET - Did Microsoft deliver?

[... If the goal of .NET was to see off Java, it was at least partially successful. Java did not die, but enterprise Java became mired in complexity, making .NET an easy sell as a more productive alternative. C# has steadily grown in popularity, and is now the first choice for most Windows development. ASP.NET has been a popular business web framework. The common language runtime has proved robust and flexible ...]

http://www.theregister.co.uk/2009/12/17/dot_net_noughties/

 [... Job trend figures here show steadily increasing demand for C#, which is now mentioned in around 32 per cent of UK IT programming vacancies, ahead of Java at 26 per cent ...]

My own non-scientific trend analysis (both manual search on dice.com and using Google Trends) shows that demand for Java skills is tapering off, and that for Microsoft's .Net is rising steadily. I foresee approximately equal adoption rates for both, with developers feeling at home in both worlds while focusing on one. Or maybe Oracle makes Java an open standard, and Microsoft will be able to roll it into .net family of languages...:)

With the ever increasing levels of  cross-pollination, the technology is quickly becoming interchangeable, and so do skills.