It’s ok to throw away your code. You will write it even better next time.

code

Being a software developer is not easy. When I say it’s not easy, I do not only mean its technically challenging, but its also emotionally challenging.

We as a developer can get attached to our code. We write it while our mind thought of creative ways to solve complex problems. The solutions we have are like our brainchild. However we work in a world that is constantly changing. Change happens around us and its inevitable. You can do scrum, mocks, freeze the product specification but a change will always happen and it can happen to an extent that the code you have written for a problem would not be applicable anymore. As far as that product is concerned, you may as well trash that code.

Despite of all that, I am here to tell you that its okay. It’s okay to throw your code and write it again. Yes it requires time and it’s not always justified but every creative challenge you have solved while writing that code has made you a better developer already. It may not do the product any good anymore, but it has already done good to you.

Every time you discover a new or a better way to do something it makes the previous method obsolete. Developers would often create something and keep throwing away/updating their code until they are satisfied with its performance, neatness and efficiency. The earlier in your developing career you learn, that its okay to throw the code and write it again, the more happy you will be working as a developer.

I have had plenty of encounters where I had to throw away the code and write it again, but every time you come back to a problem after a while, you have a fresh point of view and possibly a different approach, which can be efficient and better than the previous approach. Even if its not efficient than the previous one, its definitely neat and organized than previous one. It’s because you have already solved the problem once.

Therefore my friends, if you find yourself in a situation where you probably have to trash your code – archive it, and if you happen to write it again, compare the archive with the newly written code. You will probably find that you have gotten better.

Share your thoughts in comments.

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.