Wednesday, April 02, 2008

Feeling left out of the software world

It seems to me that there is a hard barrier between the software development world and the systems programming world. I feel left out of the developments in software that have taken the world over. Agile/Lean programming, EJB, J2EE, .NET, .NET Remoting, JSP, JSTL, Web containers, EJB, MVC, Spring, OpenID, SSO, Indigo, WCF, WPF, Aspect Oriented Programming, Web services, CSS, XML, XSLT, XQuery, ADO, LINQ, AJAX, RSS, RDF, etc. are keywords I hear everyday from my other friends everyday and wonder where I've been while the world has been changing so dramatically?

In retrospect, I've been working on concepts that were quite well understood in the 60's and 70's - Virtualization, Resource Management, Processes, Threads, etc. Concurrency is very interesting, specially due to multi-core now being ubiquitous. My TODO list looks very dull - Python, Algorithms, Architecture of so and so processor, etc.

It seems like there is a hard barrier that prevents people stuck in systems from working in the layer above. I feel left and cut-out from the innovation in the application space. While, I am still finishing up on the basic design patterns, the world has already moved on to domain specific patterns. I do feel lost, but there is hope. Hope that someday, I'll take a look on the other side, where the grass seems greener; jump the fence; make sense of the new world; the world that seems to be moving at a rapid pace.

8 comments:

Anonymous said...

Atleast you know what you don't know! I don't even know that :D

Anonymous said...

You are not alone. I work in kernel space too and occasionally feel the same. However, I also felt having systems background, it is easier to get a hang of all these new technologies.

Balbir said...

I think system programmers can better understand the performance aspects, but we cannot do a good job with the process aspects (workflow). I look at a solution as having three aspects

1. Business processes
2. Software
3. Hardware

I think from my perspective, we can understand 3 better, but the real value is in (1) and (2) :)

Gops said...

OK, I don't know about business processes, but having worked in the application space for nearly as much time as you've worked in the system space, I can tell you that *most* of it is hype.

You should remember that practicioners have a vested interest in hyping up their stuff - you'd remember the hype around Java in the late 1990s - I know how I scrambled to learn Java and get hooked into the non-MS world. Ultimately, it is a nice language - but once you know the concepts, and know which library function to call, you are done.

The rest are not very different. .NET = JVM = your OS, mostly. .NET remoting = RMI = RPC, mostly. WCF = "fancy .NET remoting" WPF = "Fancy .NET GUI" = MFC++, which is mostly event driven programming. The fundamentals of everything boil down to a few concepts which systems programmers usually know well.

Of the things you've mentioned, I've worked on or used or written papers on Agile/.NET/.NET remoting/JSP/MVC/WCF/WPF/Aspects/WebServices/little CSS/XML/LINQ and AJAX - and I can assure you that none of them need any effort for a decent programmer to learn.

There is no hard barrier - trust me, the CS application field is just jargon. Hype. Jargon. Letdowns.

Ranjit Mathew said...

Being someone from the "other side", I can assure you that most of the technologies you mention are mere rehashes of the same set of things, just packaged differently.

If you have a strong grasp of the basics, it would be very easy for you to pick up each of these technologies.

I can also tell you that many folks are more into name-dropping and using a technology for its own sake rather than having a solid understanding and using a technology only if it actually helps solve the problem at hand.

Balbir said...

Mathew, I tend to agree with you, but I was more interested/keen in the focus on the business side and tools that enable business rather than technology.

When I started working, I asserted to my manager "I want to work on tools that enable computers and not tools that enable finance". It's a concious choice I made, that I do not regret, I've learnt so much.

I am curious to see what life on the other side looks like

Unknown said...

@randomwalkoflife...

what you don't know wont hurt u? :D
at least, we (i also dont know those i dont know) feel lesser pressure being leftout. :D

-monna

Unknown said...

I could see some obvious difference between Application and System Programming (I love to term them in this way :)), application development is more concerned about customer centric logic where as the system side development is mainly for enabling the application layer.

I personally believe that the system programmer can very easily learn the application side but vice versa is tough. The Application development is not only development but also all about understanding customer and their requirements and also the standards are not as striengent as the system programming is.

"
I am working on different areas of ERP like HR, Sales , Business Workflows and also worked on the Search engine side .... "

Ranking and Unranking permutations

I've been a big fan of Skiena's Algorithm Design Manual , I recently found my first edition of the book (although I own the third ed...