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.