10 things you need to do as a programmer

Computer Engineer? Software Developer? Programmer? I have been in those shoes for quite some time, and I thought that I might share these tips with you folks. The article was originally published on Crazyengineers, but I have added to those and edited the article a bit.

  1. Read: Not only technical textbooks, but also other material. It gives you a good break from the programming, and it also builds your capacity to read and interpret long business requirement sheets.
  2. Cogitate: Before jumping into any program, think it through. Do you know the exact logic to be written? Do write down on a piece of paper what you intend to do. It may sound trivial but writing down helps clarify the problem.
  3. Communicate: Talk with your team mates, friends, colleagues, seniors, clients (if you get the chance) … talk about the project, talk about the technology involved … it helps solve problems that you could be stuck, it also helps you in understanding the subject matter better.
  4. Collaborate: Offer to help your team mates, understand what they are working on. There is a deep satisfaction in helping your friends and colleagues. Not only do you learn new things, but also you earn the respect of those colleagues.
  5. Why?: Do not be afraid to ask this question. Sacred cows can be slaughtered when you ask questions. One who asks a question may seem a fool, one who does not remains so forever.
  6. Revisiting: Do not cringe from revisiting your own code. It gives you an opportunity to improve your work.
  7. Change: It is constant. Businesses change, systems change, people change, requirements change, and scopes as well change! Do not for once think that a static view of applications is acceptable. So when you work on something do ensure that it is flexible and open to change.
  8. Documentation: This is the key to your freedom. If you do not do enough of this, you will never be able to make your work independent of you. In this case, you will never be relieved of that task. Point number 5 becomes all the more important!
  9. Humility: Do not be ashamed for asking help. Help within the team, to seniors … even asking for help on public forums and IRC networks. Most people are more than happy to help someone who asks nicely.
  10. Disconnect: Sometimes you need to stop the fast pace of work, and take breaks. Go on outings on the weekends, go out with your friends, your family. Connect offline and disconnect from work. It helps.

The Infinite Debate

There is a forum that I visit every once in a while, a place where a lot of youngsters flock for sharing ideas and seeking help on technical topics. As would happen due to my strongly felt statements, I recently got into a flaming match. Fortunately this is being conducted via IMs and not on the public forum directly.

I am finding it noteworthy because a decade back or so, I would have taken the stand that I am currently speaking against. The topic at discussion here is what should one do if one wants to build great websites. As always, I have chosen function over form and gone for learning design patterns, frameworks, understanding how logic is written and how algorithms can make you code better.

The youth (I am assuming that he is one, since his language reflects the brazenness of a college brat), has a simple argument. Since the end point of all websites is HTML, one should learn HTML inside out (HTML, CSS, JS, validations, the works). In all probability, I would have chosen the same answer … but that’s what decades are for – telling us our past answers were wrong :-)

As I was trading IMs, I realized that perhaps there is more to this question than a simple answer –

  1. Form V/s Function: Firstly, there is the age old looks v/s functionality argument.
  2. You have the what makes a website great topic (Purpose, Usability, Functionality, what?)
  3. Then there is the Purpose of a website tangent
  4. And if that’s not all, you have the you cannot teach creativity argument

All the aforementioned approaches can enable one to make websites. They are tools. But first, do you have an idea as to what problem are you solving with your website?

Get an idea.