We’re just getting started with touch apps..

Its yet another post on the touch based tools and apps, but I couldn’t resist. So here it goes..

We heard about the coffee table from gates (Microsoft) a few years back.. The idea was to change the way human machine interaction modes. In layman terms, move away from a mouse, keyboard based interaction to a more natural way of interaction.. (i.e.) through voice, body gestures, pen, touch, etc.

It got me thinking. What happens when people are presented with such technology. How would people react to that?

Well.. I haven’t heard about the coffee table much since. But recently we were presented with a more portable version of it by a gentleman named Steve Jobs. Apple presented iPad to the world. One of the better products that has greeted the market in the last decade and maybe even longer than that. The options of utilization are massive, limited by only one’s imagination.

Here’s a look at recent future with touch screens..

It presents expandable, transparent and easily connected touch based apps. Thats one of the direction they’d move.

Children and Education:

Other area of applicability are children and the whole education and learning space around them. Have you seen a kid with an iPad in hand? Have a look at these pictures and figure out the most natural interface in this:

Obviously the third one with iPad looks the most natural for kids. Kids learn a lot through touch and feedback. With right kind of apps, it can be very intuitive and can change the face of child learning.

Help with Autism:

This also opens up unlimited opportunities to enhance improvement in communication especially for kids with communication disorders. There have been many stories where this interface has helped families communicate better with their special kids.  Have a look at this amazing heart-warming video and see for yourself..

Rural reach:

Owing to its size and intuitive interface, its again a natural choice for apps/services that reach out of rural areas in different parts of the world with low literacy rates. I’m sure with mass production and subsidized rates from government, this can be made available to huge population and large number of people can benefit from this.

Industries like rural healthcare, micro-finance and different services and benefit from this too.. There has been a recent announcement from Indian HRD ministry to launch a 35$ tablet. It may not be a possibility currently but it shouldn’t be long before we reach that point technically..

Looking at the impact that mobile has created in the rural sections, this would be accepted instantly.

how to choose software projects to work on..

[tweetmeme source=”snarayan” only_single=false]

Some time back, I had finished up one of my pet projects and was looking for something new to work on.

It’s amazing to see the number of choices one has right now in terms of choosing a software project to work on. I primarily develop web applications and like to focus on Rich Internet applications. So was looking around for things in that section. Thought of checking out with people to what they tend to choose..

It went like this.. The choices were rails, asp.net mvc, python/django, grails, jquery, spring web, gwt, flex, silverlight, scala/lift, and a few more..

Wow. I mean, look at the list. and its not all.. we’re just getting started.

Each one of them have their own pros and cons, and choosing among them is really interesting and difficult too.. I started to compare some of these to decide where to start. After few weeks, I was still at the same point and had not been able to make any decision. I always felt like missing something.

Then I realized that I was doing it all wrong.

Nowadays, there are so many things that one can’t keep on top of all thats happening. So I started thinking about how I should approach this thing. Sometime later, in one of the podcasts from Joel and Jeff (from Stackoverflow), I listened to an interesting conversation about choosing what to work on, and I totally agreed and understood the concept behind it.

Technology is a means to get something done. If you’ve found what to work on, as in a domain (or) a problem to solve, it’s fine with what technology you’ve chosen.

One needs to find something worth doing, a problem worth solving and then choose the technology that should back that up. Thats the trick.

Frankly, if you’re doing something really good, it doesn’t matter even if its in php.. nothing against php folks.. 🙂

Ok, fantastic. So then I started looking for a good problem to solve. Found couple of interesting ones. Started working on them.

The technology chosen is grails, was a good fit for our kind of team and nature of the project. Well.. lets see how it goes.

working for vs. working with Customers.

[tweetmeme source=”snarayan” only_single=false]

Customers are always right.

Customers know what they want.

In my career with customers ( and I’ve met a few), I’ve concluded that both our previous statements are not entirely true.

One thing that is true is, Customers have a problem to be solved. And When they hire consultants or vendors, their plain expectation is that they’d solve it.

Most of the times, customers can define their problem fairly clearly. Other times, they don’t. But lets ignore the latter ones for this post.

Ones who’ve managed to define the problem, also seem to have an idea of a solution. A solution that would work, not necessarily the best solution to the problem.

This is where consultants/vendors come in.

There are two approaches that are possible from this time on.

1. Consultants can try to reach the actual problem, and propose multiple solutions either supporting or contradicting customer’s idea.

2. Consultants can just help in executing the conceived solution for the customers.

This is the crux of the title of this post. First point is what I would like to call “working with” and the second one as “working for”.

I’ve always believed that if you have a part in designing the solution for the problem, it becomes dear to you. The level of dedication goes up a notch. This doesn’t necessarily mean that your design has been chosen as the one, it’s just that you’ve been part of the process of arriving at a solution is the key. You tend to relate to the problem better. You tend to feel a part of the solution. End Result, you perform better.

I’ve not been totally convinced with the second part. Its like a Hit-man at his job. He gets a phone call.. a picture of the person to kill.. and he goes kills him.. done. Engineering doesn’t work like that. There are many things that go into executing a solution. Morale and Passion are a big factor. If you lack that in you or the team you’re working with, be ready for mediocrity. That is what it would result in.

So you decide what you want to do.

Work with customers and relate to their problem. Deliver a solution to their actual problem (which may be better than they had thought. Exceeding expectations) or

Work for them. Deliver the solution they asked for (which may not be a solution at all). In this mode you’ll be doing great if you match expectations. Most times you’ll fail to do that too..

Modern organizations, work with customers. They’re much more concerned about customer’s investments, and most importantly.. they believe in delivering a solution that actually works.

My interactions at Devcamp chennai..

[tweetmeme source=”snarayan” only_single=false]

Wasn’t a regular saturday for sure..

Last week, on saturday, I was in NDTV office observing the shooting of a show on social media and its influence on the way we interact..  One of the arguments was that People have forgotten the art of social interactions. There are very less real-world communities.

Well, this saturday, this argument was totally written off. At Devcamp, we had 100+ programmers (creators of the virtual world) under one roof and discussing the thing that they love most. Technology.

This is not a recap of all the things that happened at devcamp. Its only restricted to my interactions there..

First mention to few people who I was meeting after a long time. Mr. Dorai Thodla(iMorph), Mr. Suresh Sambandham (orangescape) and Sriram Narayan(Thoughtworks). I admire each of them a lot and for different reasons. Was great to catch up with them and talk about various things..

Next, loved the self-organizing nature of the event. People were free to move around, talk to different people and discuss things the way they liked. Although, I felt the awareness level about Open Space Conferences was fairly low on the attendees. So at times it got a bit chaotic. But taking nothing away from the charm and enthusiasm, it was a nice show.

The presenters, I expected much more live code and variety of styles, which was missing. Most of the presentations were powerpoint stuff. Seriously.. in a devcamp you need to see more code. Editors, syntax, program, they were a little less. Guess, that will improve in the further sessions.

I had a presentation of my own along with Deepan, my colleague and friend, on “Code smells and Refactoring”. Got few techies interested and had a nice time discussing finer details of programming. (I had a full code session. No presentation.)

Next up was lightning talks/fishbowl sessions, which disappointingly had very little participation. So we thought, we’d change the style and invite people to talk based on topics we chose. It was an interesting little session, which really caught my imagination. Some really interesting topics discussed there.. Some of them are as follows:

1. Inspiration as a programmer.. Names starting from Larry Page to Joel Spolsky were mentioned as inspirations for being a programmer.

2. Products that we’ve appreciated.. Stackoverflow, Delicious, Winzip, Hibernate, Gmail, etc. were mentioned.

3. Products that’ll make future interesting.. Google Wave, HTML5 & CSS, Mobile apps, mobile/e-commerce. Here’s a post on it by Dorai.

Apart from these, there were couple of young Entrepreneurs (still in college), who are trying to change the world. Pretty neat stuff.

All in all, Devcamp was a step in the right direction. Though, there’s a long way to go still.

Check out few tweets here

How about interviewing as a service? – Part I

[tweetmeme source=”snarayan” only_single=false]

There are many parts of recruitment that are outsourced. Outsourced to people who have little to no knowledge of what kind of people are required for the job.

So the effects are, requirements like this:

1. Do you know Java?

2. We’re looking for a .Net person for this project.

Would a resume which has no such keywords like Java, .net, etc. be even filtered into our recruitment process. Imagine a resume which states things like Object oriented principles like Law Of Demeter, Tell don’t ask principle, Liskov’s substituition, Refined Unit Testing, Test Driven Development, etc. I’m sure 99.9% of such resumes will be filtered out.

In the previous example 0.1% of resumes escaped due to some mistake in the filtering software/process.

You’ve already lost some good programmers. Congratulations.

Next up is the interviewing process..

3/4 companies do not have coding as part of the interviewing exercise. That is fairly irrelevant, isn’t it? You can judge a person from his body language, confidence in his language ability, etc.. right? Right.

There are couple of reasons why this is happening.

1. Already our outsourced business principle has made programming one of the clerical jobs. Programming is a necessary evil you need to go through in your pursuit of becoming a manager.

2. All companies are virtually the same. You can hardly differentiate one from the other.

So interview is done. Wonderful. Our candidate has been hired.

Next up, he refers people similar to him for the job. In this revolutionary referral process, the only motivating factor is money/reward. So you mostly get people referring for reasons other than improving companies culture and stuff..

Well.. we’ve been extremely happy with such process till now. Since the demand has been high, we did not really care.

But for longevity this wouldn’t work. So the process has to be refined to not filter exceptional candidates. Move away from the sub-standard and mediocrity encouraging framework of recruitment.

For companies/people interested in solving this.. I’ll try to touch upon the solutions/theories in a series of articles. Your suggestions/case-studies are also welcome.