The boring professional

I’m talking about professionals. Ones who just do their work without any fuss and get along with their lives.  Working with them is very uneventful. There are hardly any surprises. They seem to have all things covered, figured out. Its like a great Billiards player. They know which ball to hit and where to stop the cue. There’s no messing around there.

On the contrary, most of our software projects seem to be like a messed up puzzle. Few things hanging here, few hanging there. Gathering all the pieces together at the last minute. Get it in an wardrobe. Close the door of the wardrobe somehow. Get the damn product out the door. Repeat the process for every release. This seems to be an accepted norm.

The first company I used to work for had a delivery manager named Mr. Bali (name changed). He was this ultimate adventure lover. He could convert any normal project to a cliffhanger and then deliver it in crunch situation (mostly well past the delivery dates). He earned a reputation of the go-to man whenever the situation was tense and the management needed a ring-master. And, to be fair, he did a good job at that. After some point, it became a habit for all projects to lead up to this situation and managers/team members playing like superheroes. The whole account became a hub for super heroes. It almost resembled ‘The Avengers’ on every project.

Now our superheroes got into a habit of fire-fighting and would never strive to finish things off at a normal pace. Unfortunately for them, this kind of strategy doesn’t work for long and you’re sure to fail more often than succeed.

But its fun. Its a roller coaster ride for everyone involved. There’s emotion, tragedy, action, comedy.. all the masala that makes a blockbuster.

On the other side, there was this another delivery manager Mr. Semwal. He got into a habit of breaking down things, measuring progress, taking corrective actions well in advance. He’ll seldom get into such situations where he’d have to run around crazy to get stuff done. Most of his projects get done well in time ensuring full control on quality and well being of the team members.

But, of course, he’d never be a hero. He never provided the entertainment which Mr. Bali did.

Most management falter at this. They need to recognize calculated, methodical professionals too as they celebrate the heroic ones. Reward consistency and measured approach over heroic ones. This improves over time and keeps you away from heartaches. There are other ways of providing yourself with such cliffhanger entertainment.

Review: KiSSFLOW – the workflow as a service on Google Apps

Orangescape recently launched KiSSFLOW (workflow as a service) at Google I/O 12. I was privileged to see a demo of the app prior to the launch and tried it out for few days. Will probably be implementing it at our company too..

The value proposition is very clear. Many smaller and medium size companies use Google Apps account for their mail and document needs. Most of the organization processes happen over informal means, through emails or paperwork.  Providing a platform which allows company owners to set up easy automation flows to manage some of their processes will come in very handy. On top of it, if it utilizes the data already present, nothing like it. KissFlow comes across as one such platform where you can quickly automate some of the organization process without leaving the affordability and the environment of Google.

Some of the things I really liked about the app:

1. The User Interface

It has maintained a very consistent feel to the other google apps and is a pleasure to use. It didn’t need much of training or help to get started with the process creation, form creation or following a process from initiation to completion.

2. The Form designer

It is one of the better form designers around. Covers most cases for a typical company needs.

3. The workflow designer

This is the core of the app and lives up to the expectations. It allows you to add a step in the process and associate it with people responsible for executing that step. Again, all the users are fetched from Google’s repository. It supports different type of action like approval, input needed and also allows you to branch parallel processes.

It could easily represent some of the simpler processes like Reimbursement, Leave, and Procurement within the company. With some intense use, it could also be customized for some of the more complex ones like Sales Lead and complex Procurement flows.

It could be made better with pre-created templates and more help content to create the workflows. But, as it is, its pretty decent.

4. Query back and Follow request options

These are two nice touches. Query back allows for clarification related to requests and provides a nice discussion mechanism (would be nice if it displays all the conversations, though..).

Follow option allows people in the chain to follow a request till its completed. This enables other people to also be involved in whats happening with the request.

All in all, it looks a great app for smaller and medium size businesses who already use Google Apps for their company. Ability to attach documents from Google Docs, access it from within the google environment and feel like one too. Deployed to Google App Engine, it can get you started in minutes.

Its free for 10 users and charges post that. More on their price here.

On Orangescape, I’ve been following them since quite a few years and is one of the better companies that’ve come out of our place. Their contribution to the developer community in chennai and around has been inspirational to many of them. They recently raised a $1M fund from Indian Angels and would be raising some more very soon.

Kudos to the team on the launch and expecting more exciting news from them in the days to come.

Bolo launched in 5 hours..

Bolo is a new app that I’ve created that helps parents record interesting voices to animal pictures and play them for their kids. Well, technically, the kids could do that too. So, all in all, fun.

It started on friday morning.. Was playing with my son and found some apps which make animal sounds. The sounds aren’t the best in most of those apps, to say the least. So I started making some noises myself and my son loved it. Well, the sounds were still not great, but he loved it being performed live. Hah, I’ve defended myself now.

Gave me an idea, why not make an app where parents could fill in for animal’s voices. Then start playing with their kid, making noises live and being played back. That’s how ‘Bolo’ started.

Bolo in hindi means ‘say’. So thats what it does.

Development started Friday night. Saturday Afternoon, it was pushed to the market. (Of course, I slept for a while too.)

Technical details :

Contains a simple ViewPager Activity and FragmentStatePagerAdapter. Recording and Playback is done using MediaRecorder and MediaPlayer apis. There’s not much to say apart from that.

It is available in Google Play Store here.

The pictures are taken from http://www.bigfoto.com and modified using Instagram’s android app.

Hope you have fun with it. Do let me know if some addition could improve the experience.

Here are some screenshots:

Useful tools if you’re starting an android app.

There are a host of independent libraries which help us write android apps more quickly and in more maintainable fashion. These apps range from accessing View elements to Event Handling to Security and Database access. Here are a few of them which rate high in my opinion:

1. An actual smartphone

There’s nothing like it. I’ve seen few people code on emulator. I’d not recommend it because of its speed and irregularities. Start using the phone for your development. The productivity benefits are huge.

One handset would do fine for development. 🙂

2. Robotium

Simple test framework on Android.

3. Robojuice

It has few good utilities like Injection of resources/views and pojos. Also has a basic event framework.

4. Sugar

[I’m the developer here]. But seriously, if you have more than a few tables, its better to go with a tool that provides you some abstraction. Sugar is an effort to provide ActiveRecord like access to database Objects. Few similar tools that offer this feature are listed here..

5. IntelliJ IDEA and MAT

IntelliJ IDEA is the best Java editor out there. Android support comes with its community edition. Memory Analyzer Tool is an obvious choice for analyzing the heap dumps.

6. GreenDroid

It has some readymade widgets for use in Android. The code is fairly mature and useful. Good addition to your UI development.

This in no way is an exhaustive list.. I’ll try to keep adding to this list with some specific libraries for specific purpose.

[Update]

7. ActionBar Sherlock

Action bar is a great way to present navigations and user actions in Android apps. It was started with Honeycomb and is well received and extremely improved in ICS and Jellybean. ActionBarSherlock provides an easy way to make this design available on prior versions of android. Its very popular and a must-have library.

8. Sliding Menu

Its a nice little library to add sliding menu (like Google+, Facebook, etc.) to your application. It is very easy to integrate with and adds a touch of style to your app. Along with ActionBarSherlock, it adds a great look and ease of navigation to your app.

Do share if you have some recommendations.

The Bargain

We always do that in here. Its a way of life. Right from milk, snack, groceries, tickets, electronics, apparels, dowry, corruption everything.. Some legal.. and some illegal. But yes, there’s bargaining everywhere. So, our software industry is not far away.

This draws a very thin line between ethics and business smartness.. though, there’s nothing smart about it.

This is a constant struggle most of us face in a software Job. So much so that, its now an expected behavior between employees and employers. So one asks a question.. If you’re one of those self-respecting and introvert-ish souls, how do you tackle this situation? Frankly, we do not have an answer.. yet.

But, hey.. this is not just an employee’s problem. Its as much an employer’s problem too. In our profession, many engineers tend to be introverts, who’d rather leave a company than get into an argument with lesser beings (managers). So both parties suffer in this situation..

Lets try to analyze the situation a little.. The primary items for discussion tend to be around:

1. Salary (of course, guess thats not india alone)

2. Designation (Yup, explains all the nonsense designations that exist)

3. You guessed it.. Going Abroad.

Lets try to look at them at greater detail.

1. Salary

This is a no-brainer. There’s been a time in everyone’s career, where he’s had to negotiate for the salary package. Its almost like a game of wits between the employee and the employer. This happens at primarily two occassions:

a. During joining a company.. typically determined by the past salary, with a raise.

b. Salary review.. once a year, in most cases.

If you’re in one of those companies where Pay is determined by number of years you’ve served this army, well.. you can’t help much. Just got to serve your time or get out of there.

For others, typically, companies do not have a transparent and well-defined review processes. Lack of transparency means many questions are unanswered and things are manipulated around. This typically serves purpose of the Negotiators.

As a company, you need to be avoiding such cases. Let the recruitment and the review process be as transparent as possible. Always over-communicate in these situations. Do not leave a window for bargainers and negotiators to influence the decision.

2. Designation

Well, they found a solution to it. Invent a new one yourself. I believe companies would be going the route of “Invent your Designation” as an HR perk now. Lets leave this discussion before the Chief assistance Designation Discussion moderator stops us.

3. Going Abroad

This is pretty popular. Some do it coz they like to travel. Some, coz they like the extra money. I’m sure this is not the situation in Western Countries, but yeah..they have the reverse problem. No one wants to leave their place. Lets get back to the point.. This is one of the worst kind of discussions. There’s hardly any merit or logic behind this.

In a product setup, it’d make more sense when the engineers would like to get closer to a customer and understand the situations better. But, in other setups, its basically not related to work at all. In that case, its typically an arm-twisting affair. Or in some cases, act as carrots for the managers too.

Ideally, as a company you’d like to have your most appropriate person for the job to be sitting closest to the customer. That isn’t always the case. In some companies, they also have a round-robin way of selecting who goes next. The situation is rather sad.

As companies, you could make it fair by again making it a very transparent and objective decision. Do not use them as carrots. Do not advertise these things during recruitments. But it seems too ideal.

I understand that there’s no solution being suggested here. This is just an analysis of the situation. I believe it top companies want to attract and retain high quality developers and employees, they need to be solve it in their own ways and not let this nonsense creep into their culture.

As employees, well.. good luck.

The Job Resume Myth

Last year or so has been filled with interviewing developers. If I’m to summarize one learning from them, it has to be this: Resumes are useless.

There are very few carefully crafted resumes that I’ve come across. Even those haven’t been entirely true, once you have a chat with the concerned person. There are times when it gives you an impression that the guy knows a lot of things, turns out that he can hardly write any code. So then what are resumes for?

1. Filtering purpose (incase of large numbers of applicants)

Well, ask them to write some code. They’ll filter themselves. It needn’t be very difficult problem too. Just throw in a basic problem, and watch their submissions.

2. Pay more attention to code and less to stories.

One thing I like to discuss with people during interviews is their code. I believe a developer resumes should have some references to their code. Without that, its utterly incomplete.

Once you look at people’s code, you tend to have an idea of their style and maturity in that area. The presence of tests, clear separation of concerns, will clearly indicate the proficiency one has in coding maintainable programs. Then, the interviews could be filled with discussions on their design choices and alternate ways of achieving the solution.

Ignoring this, you’re left with a list of technologies listed in the resume. Most of it he’d have only heard of. Some he’d have actually written a ‘hello world’ in. And a small portion, which he would have really used and knows something about.

3. My HR doesn’t know any better.

You deserve poor candidates. Hire Them. Seriously, engineers can’t be hired without rigorous engineering sessions. HR role is book-keeping. Nothing less and nothing more.

These are my thoughts and not of my employer or associates.. Please share if you have any thoughts regarding this.

 

 

The thing about strong opinion..

.. is that its just an opinion put forth strongly. This doesn’t mean its more appropriate  or better than other opinions. Actually, it shouldn’t be treated any different than other opinions.

It generally depends on the personality of the person stating it. Some people are more subtle in their statements and some prefer to be more affirmative.

A correct and well thought out opinion, is slightly different. In the sense, it doesn’t only focus on the pros of the opinion. It also highlights certain drawbacks, and gives a logical conclusion where pros outweigh the drawbacks. They’re much more educated and the ones which should gain more attention.

Other thing about strong opinion is, its emotionally backed. Its a major drawback. Emotion doesn’t always go well with objectivity and reasoning. If the same emotion is not shared by others in the group, it generally goes unnoticed.

Its extremely important how you put forward your opinion in a group and how you appreciate opinions from other members. Give more weightage to objective ones. Try to avoid emotional ones and strong(loud) ones.