Developing with end users in the same room? Being proud about it and getting things done!

keep-calm-and-stay-proud-11Photo:http://www.keepcalm-o-matic.co.uk/p/keep-calm-and-stay-proud-11/

I am in general an aggressive (aggressive in getting my work done) software developer. I want to get things done as they come. I do not like a TODO items sitting around even though its small. This means working fast, taking quick decisions, using fail fast methods. It also includes continuous education to yourself from team members and web, educating team members, know the latest and greatest tools avail at your disposal and sometimes running an extra mile for team / organization.

I have had a privilege here at my job for being in the team that builds a continuously evolving website for almost half of the company. These people use this website as their day to day job. All the business that comes in, get entered in our system from this website.

That’s right. I work with my end users sitting 10 feet away from me.

We all know how its like to build a software and demo it to the client. This means often times there is criticizing, change in priority, new requests and more new requests. Sometimes on a good day, there is appreciation and respect.

With all this going on release after release, there can be a point where you can feel “This is what they ask for, that’s all they get”. Times when you know that the ask is not the best thing to do and there might be some other solution, but we keep mum because we are afraid of making the change. I have had these moments. You have had these moments. Everyone who dealt with a real end-user have had these moments. All these moments hinder motivation and our strive to innovation.

What we should (and our end users should) realize

  • They are not developers.
    • Developers tend to best understand another developers professional challenges. While something that appear challenging to end user might not be challenging for developers and what may not appear challenging to end users, might be challenging to developers.
  • Everyone is on the same side.
    • Everyone is working on a vision of a better product. Period. If you think this is not true in your case, then there are bigger problems.
  • Communication is the key.
    • Communicate, in your team, to end users and try and explain what you think is best and why. Paint the bigger picture. You may not always be right, but hey you may not always be wrong.

While it might not look that way, getting things done is sometimes hard in these circumstances. Here is what I try to do and recommend.

While it might not look that way, getting things done is sometimes hard in these circumstances. Here is what I try to do and recommend.

  • Have a vision of end product and work towards that
    • Without proper vision, nothing will go in one direction, Aim and develop.
  • Have a TODO list of what needs to be done. Every day.
    • goes without saying, organizing things is more productive
  • Think and design as much as possible before development.
    • You will always miss something. Its okay.
    • Update the design as things change.
  • Prototype key features / changes to my end users
    • Best way to avoid bad surprises at the time of demo and to keep everyone in the loop.
  • Share new ideas among team.
    • Brainstorming ideas with team members always helps, builds team.
  • Ask yourself, How can this be better?
    • Everything can be made better, its just the matter of how and when?
    • When you ask these things to yourself, the good software developer inside you will force you to do things the better way.
  • Take pride in your work
    • If you don’t take pride in your work, no one will.
  • Praise yourself and others on their hard work.
    • If you don’t praise yourself and your team, no one else will.

Obviously there can be more to it…

Do you work along side your end users? Be proud about it.

What do you do to make sure you are at your best everyday? Share in comments.

 

 

Solving the problem is the interesting part, providing finishing touches – not so much. What to do?

Developers are usually problem solvers, we solve problems and once we solve the core of it we have a tendency to call it done. However completing the rest of it, the finishing touches takes a looong time.
The 99% complete syndrome is a documented fact that aligns well with software development and developers.

I have noticed this in many people and not all are developers. Once they solve the hard part, rest of them is unexciting/boring/tiring to them. Do not get me wrong, that remaining part is also as equally important in a process of making a thing complete, but the drive is usually gone. I am guilty of this too, once I am done solving that’s challenging, solving that was new and interesting, the drive, the motivation slightly decreases.
Why is that? How do you stay motivated and driven to complete it completely?

This can really happen if you are working on a side gig, Once a thing is 99% complete and 1% incomplete.
Deep inside my heart, I wish that was it. I know it is not and I know I will eventually do the rest of it, but when is that eventually going to come? I do not know.
I also noticed that, if you are working in an office or a product driven by other people you may still have this feeling but then there is someone at your shoulders waiting for it to be completely complete and so you complete it. There you go, nagging works :)

I do not want to include everyone here, I know developers who will completely complete the product before saying its DONE, done whether its office or a project they do in their garage. I am proud of those guys and one can really learn from those guys. I hope you have seen or met some of these guys around you too.
Its good to have them around.

Here is what I do to keep me going on my side gigs in those times,

  • Try and set deadlines, real deadlines, the one that goes on the calendar.
    • Share deadlines with your close ones who keep you motivated.
  • Demo the product to people who can be nit picky.
    • Being nit picky is good. It leads you to become a perfectionist.,which is good. Most times.
  • If you have a TODO list, DO NOT check the item until is completely complete.
    • If you do not have it, have one. TODAY.
  • Credit yourself after completely completing it.

What do you do to stay motivated and driven after 99% completeness? I would love to hear

Interviewing: The other side of the table.

Hey Friends,

It’s been a while since I have made a post, I have a lot to write but I have been bit busy with work, family, friends and some side projects. Today I want to dedicate this post to “Interviewing“.

In my new job I have been given an opportunity to interview people for various roles. Not sure about you, but I still have memories of my interviews (all good and bad, stupid and smart) and therefore I know what it’s like to give a technical interview for a job and now I know what it’s like to take one. I feel I shall share my early experience with you. I have not counted them all but I have taken some tech interviews till now and overall I feel, I have collected some knowledge that I can share with you guys.

While all this is good and I feel esteemed to do so, It’s also bit of a concern, specially when I know that the person I am interviewing has twice the experience I have and sometimes is going to be designated a role higher than me. I mean, what do you ask a candidate like that? Are my questions going to be too easy for them? And this sometimes apply to guys whose resume and projects looks outstanding. So after some early experience for me It turns out that it does not matter. If your questions are reasonably sound and tests basic knowledge, you can test the deverloper/problem solver in them. I have had people from fortune 500 companies do massive blunders when they write code on board and yes I have had people write error free compilable code on white board for the same questions. No, the questions were not given from “Crack the coding interview” or similar :). Sometimes I see someone making mistakes that I made or may be still make and sometimes I see a totally different approach that I didn’t thought of and it gladly surprises me. I have also had some bad interviewers interview me and I try not to be one myself during the interview.

The point is, If in your job, you are trusted to interview some one, feel proud, feel glad that you are given an opportunity like that but prepare/spend some time thinking about your questions and knowing about the person. In an interview you sort of are the representative of the company to that person, It becomes your duty to give the best of yourself, they do not know the company yet, but your approximate forty five minutes with them can give a general sense of type of people working in your company.

In all, I feel every developer should get a chance to interview other people in course of their career, Doing it the right way can give you insights about your mistakes in the interview and it also gives you a chance to represent the name on the door that you walk in every morning, five days a week.

Share your experience and stories in the comments.
Happy Coding.

New Year, New Things, again.

Happy New Year friends,

2013 passed in blink of an eye and it was an amazing year for me. 2014 on the other hand brings so many new things in life. Before I go on about 2014, I would like to mention a few highlights about 2013.

Of Course the highlight of 2013 was that I got married to my girl friend and had an awesome time with family in India, but on the other hand I left Polaris Library Systems and snowy Syracuse, NY in Nov’13 and moved to sunny Mountain View, CA to work for a company called Adara Media.

2014, brings new challenges to me personally and professionally. Professionally- being a .Net nerd for so long, now I have decided to work in a “non windows” environment here in CA where I will be doing Java, MySql on a Mac instead of working with .Net, Sql Server, on Windows machine. This is not only just a technology change for me but an idea to widen my scope of technology that I can grasp and make better software on. Why did I do that? The heart wants what the heart wants…

Personally- Leaving Syracuse wasn’t easy, I have lived there for 4 years, had my masters there and worked in a company with awesome people making awesome software, It will always be a part of my life and in 2014 I will do my best to make this new place my new home.

Look forward to my upcoming posts, Happy coding.

Getting Started…

For all of you, as you may or may not have read in my profile I am Bhavin Surela. I call myself a Software/Web Developer and that’s what my designation says at the place where I work. If I had to judge myself I would call myself a pretty decent de…

For all of you, as you may or may not have read in my profile I am Bhavin Surela. I call myself a Software/Web Developer and that’s what my designation says at the place where I work. If I had to judge myself I would call myself a pretty decent developer with lot of scope to learn and grow. I have two degrees related to software development and quite a work experience which provided me wisdom for software development in big/mid range companies.

As I plan for now, this blog will be about some things which I found interesting across my programming practices, and some ideas on efficiency and life [ if I ever found a good one 😉 ]. If you are an experienced developer, you may have already attained expertise about things I will post. Your comments/ideas would be appreciated.. 

Recently I am working on Windows based application as well as Web based application for my company. Till now things have been pretty nice, I came across some interesting scenarios already, I will be sharing them with all of you soon…

Hope you will stick around…

later..