New year! New (aka renewed) resolutions

Last year was wonderful. I switched my job to play a developer role! I was a developer previously. But my designation forced me to do non-development things. Leading people (alone) is not my cup of tea, coffee or whatever.  At least, not for now.

My problem is, I like many things to learn. Juggling between various likeliness ambitions I would say. I dug object oriented principles initially. And then more and more and more of Javascript especially Node. And then functional programming with Haskel! I should be consistent, continuous in ONE thing. “Person who chases two rabbits catches neither”, a Russian proverb. Am trying to catch many and took rest for the past two months (I was just seeing many movies and was waiting for the new year to start over again)

Okay. Here is my plan for this year:

  1. To continue my learning of Node JS and NOSQL to work on a practical solution which I could use for the future mobile app development maneuvers for server side
  2. To learn the functional programming with either Clojure or Haskel
  3. To learn Windows and Android mobile application development

Enough for this year. I should have a habit of taking one step at a time and not to deviate from the plan.

PS: This blog post is just to serve as a written document for myself. If am not following my learning schedule this will make me feel guilt.

My first ever codeproject article!

My first ever codeproject article!

My current reading list!

  1. Head First Design Patterns by Kathy Sierra, Eric Freeman, Elisabeth Freeman and Bert Bates
  2. Professional ASP.NET MVC4 by Jon Galloway, Phil Haack, Brad Wilson, and K. Scott Allen
  3. JavaScript Good Parts by Douglas Crookford
  4. CLR via C# Fourth Edition by Jeffery Ritcher
  5. Programming WCF Services by Juval Löwy
  6. WPF 4 Unleashed by Adam Nathan
  7. Microsoft.NET: Architecting Applications for the Enterprise by Dino Esposito and Andrea Saltarello
  8. Refactoring: Improve Design Existing code by Martin Fowler
  9. Code Complete 2 by Steve Mcconnel

Listen pals; it really costs nothing!

Code review! Many developers think that it is where the peers/senior people will always try to find fault on the world’s nicest thing ever written. Yes, you are a great developer like everyone in the team. And you are a human being too; who is prone to mistakes. There is nothing wrong in making mistakes unless we are learning something out of it.

The people who comment on the code shall be judiciously tell their command in such a way that it has been told as a constructive criticism. People who wrote the code, shall accept the comments that seems relevant or otherwise, shall explain why they did so and shall also explain what are the other alternatives they explored before going ahead with one approach that was questioned.

The whole purpose of doing code review is to inject an acceptable change that satisfies the requirement, that will not result in newer bugs and more than anything, the change should not be breaking the existing code. There is no point in doing nonconstructive arguments like, “We have similar code already and why questioning mine alone?”; “We can do it on the way you tell or the way it is, you decide and tell me what I should check-in.” Having the practice of maintaining a good and workable code is everyone’s to-do. Not doing so will spoil the project soon.

Practicing software engineering

Like law and medicine, software profession has to be practiced instead of mere working. As technology evolves day by day, it is always good for software professions to update their knowledge base. Not only for staying alive in the market. But to do the work effectively!

It is always good to have a learning plan and following that. In many cases, the current job may not give us opportunity to explore the technology we would like to work with. But, it is in our hand to create opportunities for ourselves to explore what we want. For that, we need to spend time.

The big challenge for many people is to manage time. It is good to spend scheduled amount of time on daily basis to do the things we love. Though it is late, I have the following things queued up in my study list for now:

  1. Design patterns(Almost done with HeadFirst Design Patterns :)) – going to practice the learning in all the work I do
  2. ASP.NET MVC
  3. WCF
  4. WPF
  5. Javascript
  6. JQuery and other javascript frameworks
  7. Windows 8 app development
  8. Windows Phone app development
  9. Python
  10. Ruby on Rails

If we kept doing our office work and not finding time outside office hours to explore other technologies, more than getting out of the market, we will regret in future for not exploring some great elements in our field. Life is too short even to just walk around the day by day improvements that are happening in our field.

I am planning to make use of Codeplex for working on some real time assignments so that I can get some expert advice too).