Hello All, I would like to know what you guys are thinking about the following discussion.
I worked in a big MNC company few years back and we used to develop the application in a structured manner. We usually follow the Waterfall approach to develop the application. So each release can take upto 4-6 months. So I have some room to think, understand the problem and learn the technologies (if I am not familiar)
Later I joined in a company in US and we were developing a website for contact centers. The guy who worked with me in that team is so fast in getting things done and eventually the manager tends to like him more than me. I generally follow a structured approach (understanding the problem, designing and implementation). Also If I am not familiar with a language that is required by the work then I usually learn that and then apply it to my work. So it takes some time to give the deliverables. But for the other guy whatever the complex task is given he will have a solution in a day. He usually gets the information from google and get the task done. Even if he does not know a language he use to get the code snippet from google.
So I often wonder even he might have a solution in a day if a problem in rocket science is given.
Obvioulsy his strategy worked well and our Manager always rely on him and started to sideline me.
My question is that Do you guys think that his approach is the right approach in the developer's point of view ? Or is it the practice called "Agile" ? But I believe that even Agile approach has some standard procedures to follow.
Do you guys think that his approach always will work ? What will he do if Google all of a sudden removes the search capability or stop working ?
I am not saying that he is a dumb guy. He has good programming sense and he is good in certain technologies but not all. But he is very good in getting things done without the structured approach (even if he is not familiar with certain technologies).
I rely on Google and appreciate Google only after knowing or understand the basics behind the technology. I don't blindly always rely on Google.
Do I have to change my strategy to be an indispensible person in the company or to get excellent rating from my Manager? My friend in this discussion got excellent rating whereas I got only good rating.
What you guys think ?
Please let me know.
Thanks & Regards, Mohamed [ November 20, 2008: Message edited by: Mohamed Alla Pitchai ]
Could it be that he's just a better programmer than you (I say this as a very, very average programmer myself)? I find it hard to believe someone could patch together a non-trivial program from code snippets and have it run. Is your methodology holding you back? Do you find yourself doing work to implement this "structured approach" that's just busy work and not really helping to produce quality code?
It is not the question of who is better programmer. The thing is he always take the approach of finding solution first irrespective of the fact whether he knows it or not. Nowadays it is very easy to find the solution with the help of Google. I personally don't agree with this approach. In this approach, one is looking for just solution not learning. My approach would be learn and implement if you don't know certain technology.
The Management does not worry about the quality code. They worry about just the implementation. If there is a problem in the code, then they may revise it with a quick fix or they will fix it in the next release (in 1 or two weeks down the line).
For instance, he does not know language PERL. But he wrote medium complex code by taking the PERL code snippets from Google. It gives some sort of illusion to others that he know every thing which is not real. All I can say is that Google knows everything. not this guy.
My Question is, Is it the right approach ?
Yes my methodology is holding me back because I am taking time to investigate, design the solution and implementing the solution instead of just jumping into providing the solution.
He got an "excellent" review and the boss likes his work so it sounds like it's the right approach for him. Have you looked at methodologies like Agile or XP which may help you to increase your productivity? Have you engaged your coworker in some casual talk about what methodologies he uses (he CAN'T just be finding code on the web)?
Originally posted by Mohamed Alla Pitchai: In this approach, one is looking for just solution not learning.
Which leads to the goals of the company. The company's goal is to get a solution. Ideally a solution that will not fall apart or get them in legal trouble. (In other words, you co-worker better not be using copywrited materials.) Your goal is to learn and become a stronger developer. This often means learning just enough to get the job rather than too much.
For example, I feel quite comfortable with UNIX shell scripting. However, I wrote a great many scripts based on examples/tutorials/books before I got there. At that point, I understood just enough to complete the job.
You didn't say how much experience your co-worker has. If it is a lot, he might be taking "mental shortcuts." This is something else that comes with experience. If you've seen something similar, the solution goes faster.
I'm sure this guy isn't skipping understanding the problem. I can't say how much design or implementation he is doing of course.
I can't say whether I think it is right or wrong because I don't know what this guy is doing firsthand. I think understanding is important to creating correct code. Odds are exactly what you need is NOT on the internet.
I do agree with Joe's advice to find a process that works for you. Also, it is important to challenge yourself to do your best rather than compare yourself to others.
Originally posted by Jeanne Boyarsky: In other words, you co-worker better not be using copywrited materials.
I am not a lawyer, but I think this statement requires clarification: in the United States, a work (i.e. source code) is copyrighted by the author the moment it is written. It does not have to be registered (US Copyright Office FAQ). It is possible to use or reference the copyrighted work of others through a doctrine called fair use. For example, copying some code from Example Depot (� 2002 Addison-Wesley. ) for your own use is probably Fair Use, but publishing that same code in your own book would probably be a copyright violation. It would be up to you and your lawyer to determine if fair use applies What matters most is what license has been granted by the copyright holder to the reader/user. Many works, such as the Linux kernel, are released under a fairly liberal GNU Public License, which basically states that the user is entitled to a copy of the source for a program and if you make changes, you must make those changes available. There are many other software licenses and again, it's up to you and your lawyer to determine if they apply. [ November 21, 2008: Message edited by: Joe Ess ]
Originally posted by Mohamed Alla Pitchai: ...one is looking for just solution not learning...
Often there exists these 2 conflicting motivations:
1) Employer wants results in short term vs 2) Employee wants to deepen skill level.
These motivations don't always have to conflict, but very often they do. You will simply have to find the right balance between quick solution vs deep learning. Safest way is learn how to google for quick results like your co-worker, then deepen knowledge in off hours. I tend to use that approach. If you feel safe and secure in your job, then continue with deep approach and just realize it will pay off in future in perhaps another job.