23 March 2014

What I learnt as a professional

At Applied Fiction Interaction Lab (now named Pors & Rao):

Applied Fiction is an Interaction Design company primarily specializing in innovation of electromechanical interactive devices and installations. The company is also involved in a broad spectrum of identity-design for prominent clients.

Working with people who have done their masters from Ivrea, Italy, is an experience in itself. Right from the first of my multiple informal interviews with them, I saw a passion for design and quality. The devices they made, the ambiance in which they worked, the way they spoke of the work they did; it felt different from anything I had been exposed to prior. Two years, I worked with them; a Danish and Indian designer pair who founded the company, created amazing interactive products and made me fall in love with their passion for quality.

Some skills I picked up here:
  • Using internet forums: As a person who had hardly used the internet at that time, I didn't actually believe that people in some other country would actually answer my question on Processing. But they did, and that encouraged me to contribute too, on the forums I joined. Interacting with developers world-over gives a person a lot of experience and exposure.
  • Attention to detail. Pixel perfect work: Over a period of time, I learnt to match up with their expectations of quality of an interface. Every pixel had to be perfectly positioned. Every colour had to be just right. Every movement on the screen had to be smooth. Once you get used to this level of quality, you won't accept anything that's below this quality. I learnt to communicate motion the way they did (it's fun): A fluttery animation of text would be described as "Frrrrrrr...stop".
  • Storyboarding: When proposing a design to a client, you don't just make a single design and thrust it down their throat. You understand the client, their style and preferences and create multiple designs (the process of storyboarding), so that they can choose what they like. I had to make my software prototypes that way. Extremely flexible to be able to create storyboards.
  • Interaction design in general: Nobody teaches an engineer how to design. We end up using colours and designs that a designer would consider "ugly" and would barely be able to look at it. At Applied Fiction, even I acquired the "feeling" that a designer gets, when they see something that has been poorly designed. I know what to change to make the colours better, the positioning better, the interface more intuitive and to refine the interface, so that it receives a better emotional response from the user. I have a lot more respect for designers and their work, after having worked in Applied Fiction.
  • Learning and implementing new languages: Ok this was a skill I already had, but  Applied Fiction gave me the chance to put this to the test. While I was still learning Flash, the company was consulting with another company where a developer with 8 years experience in Flash said a certain animation which my bosses wanted, could not be accomplished with Flash. My bosses asked me, and in 3 hours I created it better than even what they expected. Learnt PHP, MySQL, JavaScript, Actionscript, Processing and was also going to learn assembly language on my own. I enjoyed the time I spent at Applied Fiction. Absolutely loved the products I had the opportunity to create.
On my last day at Applied Fiction, just before I left, I was given an envelope with a surprise recommendation. I recently requested Aparna to put the same recommendation on LinkedIn, and she kindly obliged. Here's the screenshot of it (To view 100%, open in a new tab and zoom in):

At Tata Power Strategic Engineering Division:

Tata Power SED is a CMMI Level 5 defence company involved in indigenous design, development, production and supply of state-of-the-art defence systems (hardware & software) to the Indian Army, Air-Force and Navy.

Walking into the campus for my interview, I saw an army tank parked inside. "Wow", I thought. Next, a missile launcher. "Whoa! Would I get to program the trajectory of one of those?". Five years of working here taught me a lot, and there's something about the culture here that made me a better person too.

Some skills I picked up here:

  • A focus on efficiency: It wasn't just enough to get a program working. It had to perform well under load. No memory leaks. I went through the entire volumes of Effective C++ and Effective STL by Scott Meyers to familiarize myself with what was required, asked all kinds of questions on Stackoverflow to learn more. Achieved what I wanted too.
  • Studying algorithms from research papers and corresponding with researchers when stuck: I never knew scientists were such a helpful and friendly lot. They actually took the time to respond to my emails about their published algorithms. I was pleasantly surprised (and encouraged) when a very eminent scientist actually replied. Of course, the emails had to be well structured and concise, so as to not waste their time, and that was something I was extremely good at! :)
  • Going through open source code and building it: This is a skill I acquired both with my own ability and by seeing my seniors do it. Taking the source code of an open source project, downloading all related libraries and building it from source is not a joke. That too, to be able to do it in both Windows and Linux. I've been able to do it. When I joined the company itself, I learnt to build GCC from source. Since then, I've been able to build a lot of other softwares from source. Including OGRE and OSG. I've also learnt to go through other people's open source code, understand it, extract it and use it in my code.
  • Evaluating licenses: Going through the legal terms of licenses and evaluating whether we could safely use the library has been a regular job for me. Proprietary licenses and the GPL, LGPL, BSD licenses etc. There was one occasion I spotted a legal no-go for the use of a software which could have saved the project two months of evaluation if my word was heeded on time.
  • Evaluating and selecting technologies to use in a project: This was the reason I had to evaluate licenses. I've been responsible for the evaluation and selection of libraries and tools by performing a careful decision analysis and review involving weighted averages.
  • Having a mature approach to working with co-workers: I know places where people yell at each other and have fights. That's not the environment we have at the software division in SED. We patiently evaluate situations, understand problems and solve them together; putting aside differences to ensure the best for the project.
  • Trying our best to get the work done right the first time around: By clarifying things with the boss and co-workers before completing the work. The big advantage here, is it avoids the time lost on re-work.
  • Dealing with the outside world: Having initiated and led the volunteering team at SED, and being a novice at something like that, I've taken initiative to contact and obtain the help of eminent persons in the field of volunteering and social work. Also taking the guidance of volunteers of Tata Power and in interacting with authorities in SED, to formally introduce organizational processes for the volunteering team to be able to function in the company; running a team, making a lot of mistakes and learning from it in the process. Authorities in the company have been very supportive inspite of all the mistakes I made. Am grateful for that.

No comments: