Learning in a Result Oriented Software Development environment
This article is being written in context of Software development, but should be applicable to all areas where ever there is human involvement.
Looking at the current scenario, all of us are becoming more result oriented. And in the process giving less importance to the learning. Its not our fault, but its due to the importance given to the results. No one looks at the path taken to get to the result, instead the result is what is considered as the ultimate achievement.
For example, you are assigned the responsibility of developing a feature and it requires you to explore certain new API. There are 2 ways I think one can get to know how to use the API- One is to learn about the API and then use it, or the other is to search on the internet for examples where the API is used and copy paste it. The latter approach saves you time and helps you build the feature faster than the former approach of learning. And the stakeholder of the feature would be impressed looking at the end result, they dont care how much of the API you have learnt. Because it doesn’t matter to them directly.
Everything looks good until the client/stakeholder (it can be your manager/customer) comes back with a change in the feature. So what does the Ctrl-C+Ctrl-V person would do? Yes of course, search for the solution and then again do Ctrl-C+Ctrl-V. Now if the API usage is not obvious and there isn’t much help on the web regarding that, what can the Ctrl-C+Ctrl-V person do? Sit and learn the API and can he do that? With the pressure from the client and limited time, it becomes hard to learn. What would the other person who learnt the API in the first place do? Just use the API as required to add the enhancement.
If you are not familiar with the code you have written, then for each of the enhancement or the bug fix you have to add, you need to read through the code again and again to find what is used where. And in the end the larger the codebase becomes, harder it becomes to fix a bug or add an enhancement. It shouldn’t happen that: “When you wrote the code only you and god would understand it and after sometime only god can understand it“. [Thanks to my teacher for this lovely quote]. What I want to convey here is that- time spent on learning is not a waste of time, instead it one step towards reducing the time spent in developing the software, one step towards improving the quality of code and the software developed.
I have been in this position quite a lot of times. And on all the occasions where I have Ctrl-C+Ctrl-V’d the solution, I have had to do the same when I encountered the problem again. But in places where I have learnt about the problem and the solution I have been in a better position to solve the problem next time.
The reason for writing this post is the popularity of sites like: http://www.java2s.com/, http://www.roseindia.net/java/, http://www.java-tips.org who just provide the solution to certain problems, for example: reading a file in Java or obtaining the hostname in Java and the like. There are lot more sites like this which are popular. Also on CodeRanch forums lot of people ask for direct solution to a certain problem. But the more experienced users, the moderators do not encourage anyone asking for answers. The main focus on forums like CodeRanch is the learning which is involved in the solving of a problem and not the solution itself.
Related to this is Software Craftmanship which is all about the developer and the skill of the developer. If you are not continuously learning then you are missing out of lot of things. I will write about it sometime in future as well.
What are your thoughts about the importance given to results than to learning?
No related posts.
2 Responses to Learning in a Result Oriented Software Development environment
Leave a Reply Cancel reply
Connect to us …
Some recommendations…
Recently added…
- Book review: Fitness for Geeks June 13, 2013
- Book Review: Learning Play! Framework 2 June 1, 2013
- Creating Internal DSLs in Java, Java 8- Adopting Martin Fowler’s approach May 30, 2013
- Book review: Core Java, Volume II–Advanced Features (9th Edition) May 29, 2013
- Factory Method pattern in Java May 27, 2013
Archives
- June 2013 (2)
- May 2013 (13)
- April 2013 (6)
- March 2013 (6)
- January 2013 (5)
- November 2012 (2)
- September 2012 (1)
- July 2012 (5)
- June 2012 (1)
- May 2012 (4)
- April 2012 (7)
- March 2012 (2)
- February 2012 (4)
- December 2011 (2)
- November 2011 (4)
- October 2011 (2)
- September 2011 (1)
- August 2011 (1)
- July 2011 (1)
- June 2011 (1)
- May 2011 (1)
- April 2011 (1)
- February 2011 (4)
- December 2010 (3)
- November 2010 (2)
- September 2010 (2)
- August 2010 (3)
- May 2010 (2)
- March 2010 (6)
- December 2009 (1)
- November 2009 (3)
- July 2009 (6)
- June 2009 (3)
- May 2009 (1)
- April 2009 (6)
- March 2009 (1)
- January 2009 (1)
- December 2008 (8)
- November 2008 (5)
- October 2008 (6)
- September 2008 (4)
- August 2008 (8)
- July 2008 (19)
- June 2008 (29)
- May 2008 (27)
- April 2008 (11)
- March 2008 (8)
- February 2008 (22)
- January 2008 (3)
Disclaimer
Some of the links contained within this site have my referral id, which provides me with a small commission for each sale. Thank you for your support.



I absolutely agree with you on the point: “If you are not familiar with the code you have written, then for each of the enhancement or the bug fix you have to add, you need to read through the code again and again to find what is used where.”
Same thing happens in every field; be it software development or some other type of manufacturing activity. Lots of people just love to “copy-paste”, they don’t want to learn.
Aamir, Thanks for your views.