Am I caught asleep at the console?

Everything in technology is changing faster than ever. Change is also in how we work with fellow developers, how we interact with our customers, and how we code. Don’t get caught asleep at the console. It will not be easier for developer to experiment things outside code and needs extra effort to come back to code.

Let me start with a brief. I started code with windows at school, moved to write code with command prompt in Unix during my master thesis. In first 12 years, I developed multi-layer, system, desktop, SaaS and web applications and the emphasis on user interface was less. In my start-up it development was in web(cloud) and mobile applications (hybrid  and native) and was back at command prompt and involved getting hands dirty with user interface for website and user interface for web and mobile. In last 15 months, I explored business side of my start-up involved in  product evangelism & customer facing and continue to be in touch with user interface.

Working in corporate, I used to observe change in what I used to code mostly every 5 years. In the start-up phase, I did not observe change being focused on developing mobile and web application and deployment on cloud. I have missed to observe the bigger change  with advent of cloud and HTM5 and the rise of JavaScript frameworks. I am happy that I learnt nuances of mobile application development(hybrid and native).

  • Continuous integration was niche in 2005 and has been norm today. I used to be involved with build script and make files, resolve parallels across version and run/follow based on daily builds(twice) on staging server. Today there are a array of deployment tools and staging server has migrated to cloud. A manager need not run behind infrastructure team to build a new server for urgent new project, developer will get it from cloud.
  • Very little programming begins from scratch these days.  I come from schooll where I started learning COM code and first windows code starting with void Main().  Today frameworks seem to rule ; the coding begins with Ext JS, ExpressJS, or some other collection of code that serves as a foundation. No tutorial starts with the basics.
  • I used to build HTML pages in notepad for my first blog. You do not start website any-more, you create account on someone’s website, buy template and customize template and put content. In addition, integration with social networks is needed to lure people to visit the website.
  • Writing COM and WCF interfaces was a lot of work with interface language. Today Interfaces have got a fancier name : an API. They are on a completely different machine and may be run by a completely different company that is charging us for every call.
  • Now everything goes through the browser. Once upon a time, I worked on web application hosted on IIS after removal of ASP.Net and does not send code to browser. IE used to be larger version of webBrowser control in Microsoft world.  There are still games that are custom made and do not need a browser. Change is coming for games to be on browser when JavaScript developers learn to write screen canvas object.
  • Knowledge of the library is as important as knowing the ins and outs of the language itself.
  • If it runs on our test machine, it will almost certainly run on the server. This is becoming more common with advent of VMs.
  • Raise of Node.js and JavaScript: Before some of you were born, Web servers spit out static HTML. Now it’s all done in JavaScript. The browser speaks JavaScript, and also the server layer (Node.js) and the database layer (MongoDB and CouchDB). HTML is generated by JavaScript code framework like Ext JS  at the client.

For me biggest change, it the way to monitor performance. Once you printed time when the code began and when it ended and added  subtraction for you. Now many of the problems don’t occur on one machine.  A profiler to your code would not reveal the real bottleneck caused by weird interconnection or a sluggish database. To understand what is going right and going wrong, you need to track the network calls for the network of software and performance of individual modules.

What I have learnt in cloud applications has changed. What was difficult to achieve like security integration with enterprise has been simplified and developers are more use to nuances of cloud. Mobile application that does not need offline capability can be performed using HTML 5 and become cross platform compatible.

I have not been caught asleep at console. I have been away from console.  There has been a change for sure in my absence at console and things have moved on. Let me ascertain the change at console and find reason fot the change to appreciate the change.

At the same time, I am worried how the excess dependency on tools and frameworks would impact basic concepts of students coming from college. My advise to them is to embrace libraries and frameworks. They need to move away from tools to use them and rather write program using simple editors like notepad or vi editor at command prompt. To learn basic, they need to take efforts by self initiative to setup single -instance application environment on their computers. Once they are strong in basics, they can move to tools. May be I would write basics as blog as part of my journey learning change.