Friday, November 18, 2005

Evolution of software developer

Wednesday, August 03, 2005

Evolution of software developer

Life is becoming easier with technology, rather for the Application developer! About a decade ago, a good developer was one who invariably came from computer engineering background. Usual interview questions would revolve around order of an algorithm, traveling salesman problem or graph and automata theory! I was a proud engineer who reveled in all of these. Not for long. I slowly became witness to the software world leaning on the 'next door boys (or gals)'. No, not all jobs really needed brilliant computer engineers. We needed 'average' guys for jobs that did include development, testing, technical writing, sample writing, porting...etc. And sooner than later it was proved that all these guys who came with an MCA degree or Electrical engineering or Mechanical Engineering degrees were really valuable since they picked up stuff pretty fast. Of course, the job did not require them to know discrete mathematics and regular expressions.

The software world looked towards developers who understood the domain, who could quickly draw up screen designs using tools like Visual basic or Oracle Forms, who could rapidly write business logic using standard functions and packages and who did not have to bother about writing tuned and performant database queries because there were tools already for that!

Now, the situation has become even easier! Yes, with declarative development, all that the developer has to do is...'DO'! He (she) does not have to know the intricacies of code, syntax. If the application needs a calendar date to be picked up by a calendar, well no code needed. Use the Rich UI component library, drag and drop the calendar component. Do you want an on demand audio player to be developed? Who really needs to store media files (those songs) in binary format, retrieve those as streams, parse... Come on, are you in Stone Age? DRAG and DROP, rather DnD! Hey, haven't you heard of life cycle components?

Leave alone silly things such as changing colors, report layouts, page breaks- they are all done declaratively.

No, again, don't worry about memory consumption, bandwidth consumption - after all how will storage management and performance companies survive? Or router companies innovate? Give them a chance, write n-tier architecture code, compile them in a 'Team development' environment, and deploy them on a heavy web server and hog memory and bandwidth. No problems.

Okay, what the heck is the developer supposed to know? Well, he should surely know how to pick those exact tools he needs given that he is spoilt for choice. He should know usability and aesthetics and customer behavior patterns. For example, if you want the customer to install your software, are you going to ask hundred questions to fill up before that? Or would you err on the side of courtesy? Or on the side of security? Ease of use versus effectiveness? Do you provide a heavy rich client and provide him everything on the thick client or do you have to develop servlets to send the logic back to server and keep the client thin?

So, the developer has at once developed into a super developer. He has to think so many things ahead of design, which his geek-predecessors did not bother about. Let us give the devil it's due.

Did you enjoy reading this?

No comments: