Java Forum / General / November 2005
most software jobs are software maintenance rather than new development?
apngss@yahoo.com - 20 Oct 2005 08:13 GMT This topic should apply to software jobs regardless of the programming languages.
I want to know if most of the software jobs in the market are software maintenance (fix bugs, new feature enhancements on existing code) rather than new developments (from scratch). This is my first job as a Java programmer, but I really don't see I do much Java development, all I do is to fix bugs, and add some new features for new builds. Well, of course I need to understand the logic of existing code, but my standpoint is that even I don't know Java well, I still can do the work.
Is that normal in my case? Or I am just unlucky...
Please advise. thanks!!
John Harrison - 20 Oct 2005 08:35 GMT > This topic should apply to software jobs regardless of the programming > languages. [quoted text clipped - 11 lines] > > Please advise. thanks!! No its normal, at least in my experience. New development is much more interesting of course, but you likely to need a little more experience before you get given jobs like that.
Not relevant to you (I'm sure) but I heard a funny phrase recently, a newbie programmer was given a couple of Java classes to develop from scratch. After a while he delivered these new classes and promptly got taken off the project because his code had 'logic issues', he's bug fixing now.
john
Robert C. Martin - 20 Oct 2005 18:25 GMT >> This topic should apply to software jobs regardless of the programming >> languages. [quoted text clipped - 11 lines] >> >> Please advise. thanks!! From my point of view there is no difference between maintenance and new development except, perhaps, for level of intensity. As soon as the first line of code is written on a project, the project is in maintenance; or so it seems to me.
The older a system gets, the more skill is required to maintain it. Thus, it makes little sense to me to put new people into a maintenance role unless they are being mentored by very experienced people.
----- Robert C. Martin (Uncle Bob) | email: unclebob@objectmentor.com Object Mentor Inc. | blog: www.butunclebob.com The Agile Transition Experts | web: www.objectmentor.com 800-338-6716
"The aim of science is not to open the door to infinite wisdom, but to set a limit to infinite error." -- Bertolt Brecht, Life of Galileo
Daniel Parker - 22 Oct 2005 16:12 GMT > From my point of view there is no difference between maintenance and > new development except, perhaps, for level of intensity. As soon as > the first line of code is written on a project, the project is in > maintenance; or so it seems to me. Yeah, well let's say you were about to join Chrysler in 1995 or thereabouts, and were given a choice of two projects: a maintenance role on the existing payroll system, or a spot on Kent Becks's C3 project? Which would you have gone for? Decisions, decisions...
Regards, Daniel Parker
Robert C. Martin - 22 Oct 2005 19:27 GMT >> From my point of view there is no difference between maintenance and >> new development except, perhaps, for level of intensity. As soon as [quoted text clipped - 5 lines] >payroll system, or a spot on Kent Becks's C3 project? Which would you have >gone for? Decisions, decisions... Smalltalk vs. Cobol? That's a no-brainer. XP vs. Waterfall? That's also a no-brainer. Working with Kent? No-brainer.
----- Robert C. Martin (Uncle Bob) | email: unclebob@objectmentor.com Object Mentor Inc. | blog: www.butunclebob.com The Agile Transition Experts | web: www.objectmentor.com 800-338-6716
"The aim of science is not to open the door to infinite wisdom, but to set a limit to infinite error." -- Bertolt Brecht, Life of Galileo
Phlip - 23 Oct 2005 03:27 GMT >>Yeah, well let's say you were about to join Chrysler in 1995 or >>thereabouts, [quoted text clipped - 6 lines] > Smalltalk vs. Cobol? That's a no-brainer. XP vs. Waterfall? That's > also a no-brainer. Working with Kent? No-brainer. Greenfield vs legacy? Imagine if all else was equal...
Now instead imagine the decision between an average legacy project (test-free), and a legacy project built via clean and expressive unit tests.
No brainer.
 Signature Phlip http://www.greencheese.org/ZeekLand <-- NOT a blog!!!
Daniel Parker - 23 Oct 2005 04:25 GMT > Greenfield vs legacy? Imagine if all else was equal... > [quoted text clipped - 3 lines] > > No brainer. You mean like C3 today? Just kidding. But the choice that you'd like to see isn't usually the choice confronting a new entrant into the programming world. Maintenance programmers typically work on a branch off the main line and their job is to fix production bugs and address the needs of the day. The main development line is usually happening elsewhere.
I agree with the call to extend automated acceptance test coverage. Many IT shops are way behind there, and could benefit from that enormously.
-- Daniel
Robert C. Martin - 24 Oct 2005 00:01 GMT >>>Yeah, well let's say you were about to join Chrysler in 1995 or >>>thereabouts, [quoted text clipped - 8 lines] > >Greenfield vs legacy? Imagine if all else was equal... The trick to any software project is to keep the field green. Fields turn brown for lack of care. A well tended field will remain green for as long as it remains well tended. Brown spots in the field indicate carelessness.
What would I rather work on? It happens to be my chosen profession to help people turn their brown fields green again, and keep them green.
----- Robert C. Martin (Uncle Bob) | email: unclebob@objectmentor.com Object Mentor Inc. | blog: www.butunclebob.com The Agile Transition Experts | web: www.objectmentor.com 800-338-6716
"The aim of science is not to open the door to infinite wisdom, but to set a limit to infinite error." -- Bertolt Brecht, Life of Galileo
Phlip - 24 Oct 2005 05:16 GMT >>Greenfield vs legacy? Imagine if all else was equal... > [quoted text clipped - 5 lines] > What would I rather work on? It happens to be my chosen profession to > help people turn their brown fields green again, and keep them green. The distinction between you and the original poster is..
http://c2.com/cgi/wiki?TransformationEconomy
The OP currently works at the Service level; cleaning up code. They aspire to the "Experience" tier on the economic scale. The OP wants to create the "look and feel" of a program's internal API, hopefully to provide a better experience for its maintainers.
Your is the "Transformation" level. You provide a series of Experiences that transform teams. Not just their code.
(At least I suspect you do. I'm just going by these here posts;)
 Signature Phlip http://www.greencheese.org/ZeekLand <-- NOT a blog!!!
David Lightstone - 24 Oct 2005 11:34 GMT >>>>Yeah, well let's say you were about to join Chrysler in 1995 or >>>>thereabouts, [quoted text clipped - 16 lines] > What would I rather work on? It happens to be my chosen profession to > help people turn their brown fields green again, and keep them green. Nice metaphor/analogy/whatever where does laying down bull sh.t fit it. Excessive brown nosing and marketing perhaps?
> ----- > Robert C. Martin (Uncle Bob) | email: unclebob@objectmentor.com [quoted text clipped - 5 lines] > but to set a limit to infinite error." > -- Bertolt Brecht, Life of Galileo Patrick May - 24 Oct 2005 12:59 GMT > > The trick to any software project is to keep the field green. > > Fields turn brown for lack of care. A well tended field will > > remain green for as long as it remains well tended. Brown spots > > in the field indicate carelessness. [ . . . ]
> Nice metaphor/analogy/whatever where does laying down bull sh.t fit > it. Excessive brown nosing and marketing perhaps? Fertilizer, of course! The business champion has to prepare the field and keep the nutrients coming.
I much prefer gardening as an analogy for software development, rather than that of an assembly line.
Regards,
Patrick
------------------------------------------------------------------------ S P Engineering, Inc. | The experts in large scale distributed OO | systems design and implementation. pjm@spe.com | (C++, Java, Common Lisp, Jini, CORBA, UML)
adaworks@sbcglobal.net - 05 Nov 2005 22:32 GMT > I much prefer gardening as an analogy for software development, > rather than that of an assembly line. ... and can you cite the source of that notion? It has been around for a while.
Richard Riehle
Roedy Green - 06 Nov 2005 09:15 GMT >... and can you cite the source of that notion? It has been around for a >while. I suppose Kent Beck in the main proponent of that view, constant refactoring to keep the weeds at bay.
 Signature Canadian Mind Products, Roedy Green. http://mindprod.com Java custom programming, consulting and coaching.
Patrick May - 06 Nov 2005 14:51 GMT > > I much prefer gardening as an analogy for software development, > > rather than that of an assembly line. > > ... and can you cite the source of that notion? It has been around > for a while. Off the top of my head I was going to say that I first saw it in something that Robert Martin wrote, but a quick Google shows that Steve Mellor used a Japanese Garden as an architecture analogy in this newsgroup back in late 1995. I don't know if he was the first, though.
Regards,
Patrick
------------------------------------------------------------------------ S P Engineering, Inc. | The experts in large scale distributed OO | systems design and implementation. pjm@spe.com | (C++, Java, Common Lisp, Jini, CORBA, UML)
Mark McIntyre - 24 Oct 2005 20:54 GMT >The trick to any software project is to keep the field green. This is trite nonsense. Continuing the metaphor: as soon as you start to build on the field, you have brown bits. Nothing you can do to stop that.
>Fields turn brown for lack of care. They turn brown because you build something. Keep it green by never actually developing any code...
 Signature Mark McIntyre CLC FAQ <http://www.eskimo.com/~scs/C-faq/top.html> CLC readme: <http://www.ungerhu.com/jxh/clc.welcome.txt>
Phlip - 25 Oct 2005 02:50 GMT >>The trick to any software project is to keep the field green. > > This is trite nonsense. Continuing the metaphor: as soon as you start > to build on the field, you have brown bits. Nothing you can do to stop > that. I only get that problem when I allow any of my code to decay, even just a little. If it has no tests, if it's crufty, it goes brown rapidly. If I keep adding clean tests, and keep cleaning the code, the code's quality remains high, and new features get easier to add than the old ones were.
>>Fields turn brown for lack of care. > > They turn brown because you build something. Keep it green by never > actually developing any code... If you write the code without maintaining it, as it grows, it will grow tangled, like wild untrimmed gardens. Alternate growth with sessions of pruning and trimming, and you will remove the weeds, dead twigs, and suckers. The result is only long branches supporting healthy leaves turned to the sun.
 Signature Phlip http://www.greencheese.org/ZeekLand <-- NOT a blog!!!
Richard Bos - 25 Oct 2005 07:30 GMT > If you write the code without maintaining it, as it grows, it will grow > tangled, like wild untrimmed gardens. Alternate growth with sessions of > pruning and trimming, and you will remove the weeds, dead twigs, and > suckers. The result is only long branches supporting healthy leaves turned > to the sun. It is never a good idea to take metaphors more seriously than reality. That way lies Microsoft Bob.
Richard
adaworks@sbcglobal.net - 05 Nov 2005 22:30 GMT > What would I rather work on? It happens to be my chosen profession to > help people turn their brown fields green again, and keep them green. A good point. The real heros in a software organization are not those who write code for new systems. Instead, they are those who are able to keep current systems current, extend current systems with new capability while not breaking them, and solve problems created by those who originally coded those systems.
There is a reason why we put new programmers into maintenance jobs. It is largely about apprenticeship. Rare is the recent computer science graduate who has the skill, the knowledge, and the experience necessary for building good software from scratch. Rarer still is the a manager to take that kind of risk.
Consider someone who has graduated from medical school, served one or two years as an intern, and thinks himself ready to do open-heart surgery. Do you want that person as your surgeon? Software is no different. In our modern world, software flies our aircraft, operates our cardiac care units, and controls the switching systems on our rail transportation facilities. No development method, no amount of theoretical foundations, no experience writing toy programs for an academic environment, and no overblown sense of self-confidence will compensate for the skills acquired over a longer period of time; skills developed actually writing and maintaining such software. Too many things can go wrong, and even the most aware novice is probably not ready to understand what s/he does not understand.
On the other hand, those old-timers are no good unless they keep their own knowledge up-to-date. Some of them, instead of having ten years experience, have "one year of experience, ten times." It is important to listen to the newcomers, those with fresh bachelor's and master's degrees because they do have something to offer. Further, they will eventually take over when we are out to pasture.
Richard Riehle
ecky-l@web.de - 08 Nov 2005 07:01 GMT > The older a system gets, the more skill is required to maintain it. > Thus, it makes little sense to me to put new people into a maintenance > role unless they are being mentored by very experienced people. I think, maintaining an "old" system (old means probably "stable" and "reliable", doesn't it ;)) is a good opportunity to get accomplished with the code and learn how experienced people did it. Everyone should go through this, before (s)he starts to develop new code, IMHO...
Eckhard
David Lightstone - 08 Nov 2005 12:22 GMT >> The older a system gets, the more skill is required to maintain it. >> Thus, it makes little sense to me to put new people into a maintenance [quoted text clipped - 4 lines] > with the code and learn how experienced people did it. Everyone should > go through this, before (s)he starts to develop new code, IMHO... What I state may sound flippant ot silly, but it is correct.
Yes, once you know all the mistakes that can be made you actually can start writting good code.
> Eckhard Robert M. Gary - 08 Nov 2005 17:08 GMT Maintenance is much harder. I spent the first 5 years of my carrer working in "Current Product Engineering" for a major telco software provider. That was much harder than creating new code because you had to figure out what someone else (who had long since left) was trying to do. You also had to follow the existing coding style since mixing styles causes a huge mess. Most employeers look for people with real maintenance experience for a couple reasons... 1) It shows you can understand other's code and can incorporate your own stuff into it and 2) You have a better appreciation for the importance of good error messaging and stable code. You never learn to write really solid code until you've spent several years fixing other people's code.
-Robert
Phlip - 09 Nov 2005 14:25 GMT > Maintenance is much harder. I spent the first 5 years of my carrer > working in "Current Product Engineering" for a major telco software [quoted text clipped - 8 lines] > messaging and stable code. You never learn to write really solid code > until you've spent several years fixing other people's code. These are all rich arguments for aspects of a poor situation: Throwing good money after bad.
>I would say that it is exceedingly rare to write code from pure > scratch. I work on a code base that is several million lines long for a > large technology company. What's its ratio of unit tests to production code?
 Signature Phlip http://www.greencheese.org/ZeekLand <-- NOT a blog!!!
Robert M. Gary - 09 Nov 2005 20:01 GMT > These are all rich arguments for aspects of a poor situation: Throwing good > money after bad. Huh? Hiring programmers with maintenance experience is throwing good money after bad? I guess I'm really not following.
phlip2005@gmail.com - 10 Nov 2005 02:12 GMT > > These are all rich arguments for aspects of a poor situation: Throwing good > > money after bad. > > Huh? Hiring programmers with maintenance experience is throwing good > money after bad? I guess I'm really not following. If the code were written with copious unit tests, and if they still passed no matter how old the original effort, then you don't need such expertise to maintain it. You start by adding more tests and passing the existing ones, and that makes the maintenance much easier.
In theory!
 Signature Phlip http://www.greencheese.org/ZeekLand <-- NOT a blog!!!
David Lightstone - 10 Nov 2005 10:44 GMT >> > These are all rich arguments for aspects of a poor situation: Throwing >> > good [quoted text clipped - 6 lines] > passed no matter how old the original effort, then you don't need such > expertise to maintain it. Dubious at best. Obviously you only have read well written/refactored code
>You start by adding more tests and passing > the existing ones, and that makes the maintenance much easier. > > In theory! scottf3095@aol.com - 11 Nov 2005 14:56 GMT >> If the code were written with copious unit tests, and if they still >> passed no matter how old the original effort, then you don't need such >> expertise to maintain it.
>Dubious at best. Obviously you only have read well written/refactored code I think someone can only see the world through TDD glasses :) -Scott Frye "aut viam inveniam aut faciam"
Robert M. Gary - 10 Nov 2005 19:14 GMT Ok, I'm going to put on my MBA hat (don't worry, my undergrad is in Computer Science:) ) I think there is an arguable cost/benefit analysis that says it may not always be optimal to write such solid code, as you describe. While many quality theories (TQM, Six Sigma) etc claim that the cost of lower quality is always higher than the cost of quality, I think a more reasonable business view would say that is not always the case. As a development organization you need to look at what your Sales/Revenue limiters are. If quality is what is limiting you, than tools such as Six Sigma, unit testing, etc are vehicles to use. Often though, development organizations decide that they have other, higher priority inhibitors. Time to market is probably the most common, minimal resource, is another. If you need to increase your performance in Time to Market, than you need to take less time with unit testing, etc. In other words, there are a lot of variance in the extend to which you invest in high quality, not all result in better business rewards. In the RND shop I work in we do a far amount of documentation, we do peer code reviews and peer project reviews, but do unit testing an a per-project basis. Some projects are so integrated that unit testing is not a big "bag for buck" and functional testing is more beneficial. About 20% of what I work on is simply to develop Intellectual Property. Some of that code needs to work well enough to generate my Patent, I don't list my unit tests in the Patent.
Anyway, my 2cents.
-Robert
xpyttl - 12 Nov 2005 13:12 GMT > While many quality theories (TQM, Six Sigma) etc claim > that the cost of lower quality is always higher than the > cost of quality In Six Sigma, we figure out the cost of quality, and the cost of poor quality, and make economic decisions. This is one of the major differences between SS and earlier quality initiatives. Although there is plenty of statistics, Six Sigma is about "show me the money".
Based on many years of experience (I'm a really old fart), I agree that "optimal" code is rarely optimal. You should make an appropriate investment in the code. In today's world, that often means just barely working. But there are situations where you want good, solid maintainable code. It can be tough knowing the diffeence.
..
adaworks@sbcglobal.net - 10 Nov 2005 22:49 GMT > If the code were written with copious unit tests, and if they still > passed no matter how old the original effort, then you don't need such > expertise to maintain it. You start by adding more tests and passing > the existing ones, and that makes the maintenance much easier. > > In theory! In theory. Testing is not _the_ answer. Testing is one tool in the creation of dependable software. As software grows, it becomes impossible to run enough tests to ensure that there are no errors.
Reliance solely on testing is OK for smallish systems. However, this does not scale-up as the software becomes larger and more complex. Further, one can test for the errors one expects. In software there are likely to be a lot of errors no one could have anticipated. Those errors are often overlooked by the tests.
There are many other things one must do as part of the software process to arrive at a point where there is some confidence in the final software product.
This is not to say we should not test. It simply means that we should not be so naive as to put more faith in testing than is realistically warranted.
It is also important to understand that more tests will not necessarily make the code more maintainable. It might help a little, but more important is the way we structure the code, organize the modules, and design the architecture, among other things.
Richard Riehle
pete - 10 Nov 2005 22:57 GMT > <phlip2005@gmail.com> wrote in message
> > In theory! > > > In theory. In theory, theory and practice are the same. In practice, they're different.
 Signature pete
adaworks@sbcglobal.net - 11 Nov 2005 10:52 GMT > > <phlip2005@gmail.com> wrote in message > [quoted text clipped - 4 lines] > In theory, theory and practice are the same. > In practice, they're different. That was pretty much my point.
Richard Riehle
Robert C. Martin - 12 Nov 2005 19:23 GMT >> If the code were written with copious unit tests, and if they still >> passed no matter how old the original effort, then you don't need such [quoted text clipped - 7 lines] >becomes impossible to run enough tests to ensure that there are >no errors. This is true. More generally, it becomes impossible _by any practical means_ to ensure that there are no errors. Unfortunately the threshold size for this limit of practicality is very small.
>Reliance solely on testing is OK for smallish systems. However, this >does not scale-up as the software becomes larger and more complex. And I would say that "smallish" means "comp-sci 101 exercise". E.g. Write a program to calculate the quadratic formula.
>Further, one can test for the errors one expects. In software there are >likely to be a lot of errors no one could have anticipated. Those errors >are often overlooked by the tests. Again, this is very true, and the incidence grows with the square of the number of features. (if not faster).
>There are many other things one must do as part of >the software process to arrive at a point where there is some >confidence in the final software product. Agreed. You have to get your fingers and eyeballs on it. You have to torture test it. You have to let a million monkeys into the room to bang on it. You have to work hard to anticipate systematic weaknesses and failures, and probe them all.
Each one of these things helps; and yet none are completely sufficient. Spacecraft will still think they are on the ground when they are 100Y up. They will still overshoot orbits because of unit conversions. Billing systems will still send bills for negative amounts. Telephone systems will still randomly drop you. And (though it hasn't happened to my knowledge) airplanes will suddenly flip upsidedown when they cross the horizon.
>This is not to say we should not test. It simply means that we >should not be so naive as to put more faith in testing than is >realistically warranted. Agreed. Nothing gets rid of all the risk. All we can do is mitigate the risk. Testing is a *big* part of that, but is not the whole enchilada.
>It is also important to understand that more tests will not necessarily >make the code more maintainable. It might help a little, but more >important is the way we structure the code, organize the modules, >and design the architecture, among other things. It is remarkable just how much the test-first discipline helps in this regard. The act of designing your system around tests that you write first goes a very long way towards helping to organize and structure the code in a maintainable way.
Again, this is not a panacea. One should not depend on test-first as the sole source of good design and structure. But it *does* help a lot! ----- Robert C. Martin (Uncle Bob) | email: unclebob@objectmentor.com Object Mentor Inc. | blog: www.butunclebob.com The Agile Transition Experts | web: www.objectmentor.com 800-338-6716
"The aim of science is not to open the door to infinite wisdom, but to set a limit to infinite error." -- Bertolt Brecht, Life of Galileo
Andrew Thompson - 20 Oct 2005 08:47 GMT > Is that normal in my case? Or I am just unlucky... To have work? No.
Perhaps you are undeserving, ungrateful and extremely self-centered*, but unlucky? No.
* To think your problem is so important that it justifies cross-posting to such a wide range of groups.
Now GET BACK TO WORK.
Mark McIntyre - 20 Oct 2005 10:57 GMT >I want to know if most of the software jobs in the market are software >maintenance (fix bugs, new feature enhancements on existing code) >rather than new developments (from scratch). Theres a large body of existing code out there. Ergo there must be lots of jobs maintaining it. Its impossible, given the length of time that computing has been around, for new work to be larger than old work.
>This is my first job as a >Java programmer, but I really don't see I do much Java development, You're the new boy. Its commonplace for newbies to spend a lot of time fixing bugs, it lets them cut their teeth, explore their abilities and so forth.
 Signature Mark McIntyre CLC FAQ <http://www.eskimo.com/~scs/C-faq/top.html> CLC readme: <http://www.ungerhu.com/jxh/clc.welcome.txt>
Andrew McDonagh - 20 Oct 2005 23:17 GMT snipped.
>>This is my first job as a >>Java programmer, but I really don't see I do much Java development, > > You're the new boy. Its commonplace for newbies to spend a lot of time > fixing bugs, it lets them cut their teeth, explore their abilities and > so forth. Hi Mark,
( Please note this reply isn't so much to yourself, its to all of the posts that talk about 'cutting their teeth' - I'm not singling you out.)
You are (sadly) right it is common. Its also the worst way of integrating and using new people - especially newly qualified developers.
We are asking the to fix bugs on existing systems, where they typically won't understand the original designs or design trade offs that were used.
Its actually more difficult to enhance or fix bugs in existing code bases in a safe manner which doesn't introduce defects, than it is to create new 'green field' code, for most people.
However, the main problem is the mentality of it - " you are the new guy so your have to prove your worth scum-bag.."
Crazy.
Its not something I tolerate on my teams.
I employed a person who hadn't done any development for a year and half. They also hadn't done any Java - they are a smalltalk-er - but they know a little OO.
He started on the team and by the end of the first week was developing and being productive.
Now some of this is down to the teams principles and practices:
Collective Code Ownership - the new guy wasn't assigned an area or role, he is part of a team where everyone works on all areas, maintenance and greenfield.
Pair Programming - all development work being done in pairs meant that he didn't need any ramp-up time to become useful - he paired with one of the other team members and they worked together upon a single task, side by side, swapping the keyboard as and when they wanted. The knowledge transfer to the new guy is very quick this way and the other team person learned some new skills from the new guy.
TestDriven Development - as we use TDD to design our system, any changes the new guy and his pair make, are automatically regression tested by the suite of unit tests. Their own design artifacts (their unit tests) for the new code changes are simply added to the big pot of existing designs.
there's more I can add if you want...
Andrew
Roedy Green - 21 Oct 2005 03:47 GMT >Pair Programming - all development work being done in pairs meant that >he didn't need any ramp-up time to become useful - he paired with one of >the other team members and they worked together upon a single task, side >by side, swapping the keyboard as and when they wanted. The knowledge >transfer to the new guy is very quick this way and the other team person >learned some new skills from the new guy. It is quite amazing how even a rank novice can become quickly useful so long as he or she can type.
I would let them work first pretty well just as a typist as I went about my usual business of writing and maintaining code. Most of this was totally mysterious. But almost imperceptibly I could use a shorter and shorter set of verbal commands to get the text I wanted written. They learned much as a child learns a new language. You get to the point where you could say something like. Write me a class with fields x, y, z of the obvious types and do the usual constructors and get/set.
Validate with configurable bounds.
Now adays you would do this with an IDE template, but people don't need to be taught the template in excruciating detail, and they can do theme and variations with little trouble. They can also convert old code to a new pattern.
 Signature Canadian Mind Products, Roedy Green. http://mindprod.com Again taking new Java programming contracts.
Andrew McDonagh - 21 Oct 2005 19:05 GMT >>Pair Programming - all development work being done in pairs meant that >>he didn't need any ramp-up time to become useful - he paired with one of [quoted text clipped - 21 lines] > theme and variations with little trouble. They can also convert old > code to a new pattern. I confused by your reply - are you attempting to describe PairProgramming - if so you are way off.
Andrew McDonagh - 21 Oct 2005 19:14 GMT > I confused ... should have been 'I'm confused....'
Roedy Green - 21 Oct 2005 23:22 GMT >I confused by your reply - are you attempting to describe >PairProgramming - if so you are way off. What is it in your definition?
 Signature Canadian Mind Products, Roedy Green. http://mindprod.com Again taking new Java programming contracts.
Andrew McDonagh - 21 Oct 2005 23:29 GMT >>I confused by your reply - are you attempting to describe >>PairProgramming - if so you are way off. > > > What is it in your definition? what is what, in my definition?
David Alex Lamb - 21 Oct 2005 23:39 GMT >>>I confused by your reply - are you attempting to describe >>>PairProgramming - if so you are way off. >> What is it in your definition? >what is what, in my definition? I believe he means: What is PairProgramming in your definition?
 Signature "Yo' ideas need to be thinked befo' they are say'd" - Ian Lamb, age 3.5 http://www.cs.queensu.ca/~dalamb/ qucis->cs to reply (it's a long story...)
Andrew McDonagh - 22 Oct 2005 11:00 GMT >>>>I confused by your reply - are you attempting to describe >>>>PairProgramming - if so you are way off. [quoted text clipped - 5 lines] > I believe he means: > What is PairProgramming in your definition? Well, the small paragraph I posted describing how *my Team* actually do Pair Programming is pretty much how I'd define PP. Though there is more to it than that.
As for a more accepted definition...
"Two programmers working side-by-side, collaborating on the same design, algorithm, code or test. One programmer, the driver, has control of the keyboard/mouse and actively implements the program. The other programmer, the observer, continuously observes the work of the driver to identify tactical (syntactic, spelling, etc.) defects and also thinks strategically about the direction of the work. On demand, the two programmers can brainstorm any challenging problem.
Because the two programmers *periodically switch roles*, they work together as equals to develop software."
-- Laurie Williams North Carolina State University Computer Science
Chris Uppal - 22 Oct 2005 11:39 GMT > As for a more accepted definition [of Pair Programming]... > [snipped] Which does not, in fact, resemble what Roedy described at all. I'm puzzled by why you thought there was a connection ?
-- chris
Andrew McDonagh - 22 Oct 2005 12:30 GMT >>As for a more accepted definition [of Pair Programming]... >>[snipped] [quoted text clipped - 3 lines] > > -- chris I was puzzled by Roedy's description because I 'Thought' he was trying to describe what Pair Programming (as in the snipped definition) means to him.
Thats all - we are talking across each other..about different things that 'Just Happen To use two people working together in some form'
Andrew
Roedy Green - 22 Oct 2005 20:40 GMT >I was puzzled by Roedy's description because I 'Thought' he was trying >to describe what Pair Programming (as in the snipped definition) means >to him. > >Thats all - we are talking across each other..about different things >that 'Just Happen To use two people working together in some form' There are many cues missing you get with verbal communication that lead to foul-ups in newsgroup communication.
You don't have the voice print/accent/dialect cue on every word to remind you who is saying what.
You don't get the body language or cues of emotion, joking, anger...
With voice, you can tell immediately if someone is disagreeing or seconding or augmenting. In newsgroups that is not obvious and leads to all kinds of puzzlement when the wrong assumption is applied.
Everybody talks at once about everything.
The speaker does not get immediate feedback by quizzical looks when he is not being understood.
It is easy to mistake the age, sex, or intelligence of a newsgroup poster. This is particularly true when you add in people whose first language is not English.
In face to face communication WHO said something is very important. It is easy to lose track in newsgroups.
On the other paw, you can always get a word in edgewise no matter how long winded someone else is, and nobody can shout you down.
Then there is the matter of stage fright. People who would never say boo in public will fearlessly tackle anyone in a newsgroup even in front of hundreds of readers.
 Signature Canadian Mind Products, Roedy Green. http://mindprod.com Again taking new Java programming contracts.
Roedy Green - 22 Oct 2005 02:39 GMT >>>I confused by your reply - are you attempting to describe >>>PairProgramming - if so you are way off. [quoted text clipped - 3 lines] > >what is what, in my definition? Who's on first? It sounded to me you were trashing the only definition given of pair programming a while back. On digging through the threads I discover that it was your definition, so it is unlikely you were baldly berating yourself for being wrong without offering an alternate definition.
In my own post I was talking about an alternative way to teach programming, nothing to do with pair programming other than it involves two people sitting at the same computer.
 Signature Canadian Mind Products, Roedy Green. http://mindprod.com Again taking new Java programming contracts.
Andrew McDonagh - 22 Oct 2005 10:57 GMT >>>>I confused by your reply - are you attempting to describe >>>>PairProgramming - if so you are way off. [quoted text clipped - 12 lines] > programming, nothing to do with pair programming other than it > involves two people sitting at the same computer. right now I understand your comment....
its certainly one way for a new person to learn - *I* doubt its very effective.
Roedy Green - 22 Oct 2005 11:01 GMT >its certainly one way for a new person to learn - *I* doubt its very >effective. Since you have never experimented with the technique, you should know.
 Signature Canadian Mind Products, Roedy Green. http://mindprod.com Again taking new Java programming contracts.
Roedy Green - 21 Oct 2005 03:39 GMT >Theres a large body of existing code out there. Ergo there must be >lots of jobs maintaining it. Its impossible, given the length of time >that computing has been around, for new work to be larger than old >work. I heard one estimate that a program gets ten times as many hours spent maintaining over its life that it does getting originally written. So obviously maintenance predominates over initial coding. :There must be many more maintenance jobs.
You may have noticed that programmers tend to be unusually egotistical. This is part of the reason they generally don't like modifying other people's code. They have to leave most of it "ugly" by their personal scheme of aesthetics. It is a cause of stomach wrenching unhappiness. They want to write virgin code so they can do it "properly" or "their way" depending on your point of view.
I bugs me that languages don't seem to take maintenance into consideration in design. The needs of maintenance programmers are very low on the totem pole. The needs of the compiler writer trump those of the package writer trump those of the application code trump those of the maintenance programmer.
However, nationally advertised jobs tend to be the higher paying ones. Here they are looking for experienced team leaders, architects etc. not mundane maintenance programmers.
I think a bumbling incompetent could get by in a maintenance job simply because the deadlines are not as tight and nobody really knows how long it SHOULD take to find a bug or make some change. In theory it should be easier, but managers don't put nearly as much weight on efficient maintenance as getting the project up and going while the spotlight is on it.
 Signature Canadian Mind Products, Roedy Green. http://mindprod.com Again taking new Java programming contracts.
Martin Eisenberg - 21 Oct 2005 12:11 GMT > I bugs me that languages don't seem to take maintenance into > consideration in design. The needs of maintenance programmers > are very low on the totem pole. The needs of the compiler > writer trump those of the package writer trump those of the > application code trump those of the maintenance programmer. Can you please expand on that for someone without extensive exposure to old code?
 Signature Quidquid latine dictum sit, altum viditur.
timjowers@gmail.com - 21 Oct 2005 15:11 GMT JavaDoc. Design documents. Lots of self-promoters decry specifications and documentation because they never had to maintian a few 100k lines of code where they walked in cold with no knowledge of the code. Bug fixing in an OS is tough but at least OS theory is well studied and documented. Maintaing a huge corporate app where the requirements are often only verbally understood by a few people who may no longer be there is really tough.
Good logging of ALL errors. Ability to turn on DEBUG logging and preferrable at various levels of verbosity.
A large source base with an integrated unit test to test all of the code is very nice.
Elegant design. Repeated design when functionality is repeated.
BTW, newbies should be willing to perform maintenance for a time but if you have an MS CSci. then don't insult yourself or your University by maintaining some scrap code written by a hacker. Look for a company where legitimate software design and development is occurring. The market is far too overloaded with keyword programmers and architects who think every design looks like some pattern from a vendor's promo conference rather than consider design as part of the trade and apply an appropriate design to the appropriate problem. You're probably maintaining bloatware written atop some consultingware appserver or other infrastructure. The engineering mindset of solving the problem with the lowest cost effort is rare in this industry. That's why the term "Software Engineer" is no longer used. The managers prefer "Programmer" and "Consultant" because it hides the fact that good software development requires real engineering. Does your code represent the Unix mantra of Keep It Simple Stupid?
Best wishes, TimJowers
Roedy Green - 21 Oct 2005 23:30 GMT >The needs of the compiler >> writer trump those of the package writer trump those of the >> application code trump those of the maintenance programmer. > >Can you please expand on that for someone without extensive exposure >to old code? Let's say that an application programmer were in charge. He sets up listeners all the time. He would insist on doing that in at most a line of code, no matter how much work it meant for the compiler and library writers.
In your IDE you would right click on the component and insert the code right there.
If an application programmer were in charge there would be smart components for all the usual business objects, names, address, emails, website, zips, provinces, countries, .dates, phone numbers that worked for all countries. They would automatically format and validate all input. That would not be his problem any more than the strange rule of date calculation are. Low and high bounds checking and all manner of other common validation would be built into the declaration without any procedural code.
If an application programmer were in charge , components would know their labels, and there would be layout that would automatically insert such labels when there was sufficient room, and would at minimum divulge them with a hover.
If an application programmer were in charge, the integration of SQL and Java would be much more seamless, much like the new features for than in C#.
 Signature Canadian Mind Products, Roedy Green. http://mindprod.com Again taking new Java programming contracts.
BigBrian - 21 Oct 2005 14:20 GMT > You may have noticed that programmers tend to be unusually > egotistical. Isn't that the truth.
> This is part of the reason they generally don't like > modifying other people's code. Sad, but true.
> They want to write virgin code so they can do > it "properly" or "their way" depending on your point of view. .. and then leave the project ( They're off design another project ) to a group of other people how have to deal with the big pile of poop that they implemented, and do the real work of getting everything working correctly. ( No, I'm not bitter, LOL ) No, acutally, I like doing maintenance ( and new development ).
Roedy Green - 21 Oct 2005 23:43 GMT >> They want to write virgin code so they can do >> it "properly" or "their way" depending on your point of view. Young hot shots are a major problem in a team environment. They are so keen on doing something cool, they forget some lesser light will have to later figure it out to maintain it. These types often refuse to write any documentation at all, claiming their code reads like poetry and does not need it, at least if everyone scrutinizing every line lovingly.
These hotshots can still be useful. For example, I was team leader on the first MacIntosh commercial app written in Canada, the CSL Stock Charter, developed on the Lisa and wired over to the Mac for execution. Apple's docs and code were unbelievably bad. Lots of "to comes" and simply wrong information.
Our app was embarrassingly slow. The problem was obviously Apple's first cut at a software floating point library. I figured out that the scaling routines for the graphing were the major culprits. I handed the Pascal version of the code to a hotshot friend of mine, and said, "go to it. Do this same thing using integer fixed point scaling, assembler, any dirty tricks you can think of."
He came back a few days later with some Motorola 68K assembler that was about 2 orders of magnitude faster. Never would that code be maintained. If the code were ported, it would be re-optimised from the Pascal version, perhaps with hints from the 68K version.
 Signature Canadian Mind Products, Roedy Green. http://mindprod.com Again taking new Java programming contracts.
adaworks@sbcglobal.net - 05 Nov 2005 22:40 GMT > I bugs me that languages don't seem to take maintenance into > consideration in design. The needs of maintenance programmers are > very low on the totem pole. The needs of the compiler writer trump > those of the package writer trump those of the application code trump > those of the maintenance programmer. One of the key design goals of Ada was to enhance maintainability.
If 80% of the life of a program in maintenance, 80% of maintainance is often devoted to trying to understand what to maintain. Popular languages such as C++ are horrible for creating maintainable code. Java, while a little better, is not that much better.
A language that stresses readability and understandability over writeability is not likely to be popular with "greenfield" programmers. They often just want to get the code laid down so they can get on to the next project.
So, if you want improved maintainability, one of your first steps is to choose tools that support that goal. Ultimately, your maintenance programmers will love you for that choice while those writing new code will grumble. Those new code programmers represent a smaller part of your problem and they are the easiest to replace.
Richard Riehle
Ross Bamford - 20 Oct 2005 13:27 GMT > This topic should apply to software jobs regardless of the programming > languages. [quoted text clipped - 11 lines] > > Please advise. thanks!! It's normal. It's something of a privilege to work on a new project, and especially when you're new you'll tend to get stuck on the fixing jobs, simply because there are usually more fixes to be done.
 Signature Ross Bamford - rosco@roscopeco.remove.co.uk
xpyttl - 20 Oct 2005 13:31 GMT There probably is a lot more maintenance going on than new construction.
But I would hope that most shops would expect new programmers to do a fair bit of maintenance before they do new development. Its pretty easy to design cool new stuff without any consideration for what it costs to own that code. If you spend some time getting beat up by other people's mistakes, you are less likely to make those mistakes on your own.
..
> This topic should apply to software jobs regardless of the programming > languages. [quoted text clipped - 11 lines] > > Please advise. thanks!! Phlip - 20 Oct 2005 14:39 GMT apngss wrote:
> I want to know if most of the software jobs in the market are software > maintenance (fix bugs, new feature enhancements on existing code) [quoted text clipped - 6 lines] > > Is that normal in my case? Or I am just unlucky... Ideally, all software projects should deploy to real users as soon as possible. Then all further development is "maintenance", because you must preserve existing (good) features while adding better ones. That depends on clean code.
In your case, you are probably unlucky. Much software was written in a big rush, under the belief that the software can't deploy until it has enough features that customers will buy it and then use it through long maintenance cycles. So the code has lots of bugs and a poor design.
The next AntiPattern in our industry: Managers then put the new guys into maintenance, because it's slow burn. The hot-shots who wrote the bugs and the poor design get rewarded with new and more lucrative projects.
Install JUnit, and start these policy:
- capture bugs with tests. Write new test cases to capture every bug before killing it
- as you learn about the code, refactor - just a little - to clean it up
That effort allows the code to get better over time. When you fix a bug, do not throw away the knowledge that is fresh in your head write now. Invest that knowledge back into the code by improving its test resistance.
 Signature Phlip http://www.greencheese.org/ZeekLand <-- NOT a blog!!!
Walter Roberson - 20 Oct 2005 15:06 GMT >This topic should apply to software jobs regardless of the programming >languages.
>I want to know if most of the software jobs in the market are software >maintenance (fix bugs, new feature enhancements on existing code) >rather than new developments (from scratch). As others have noted, it is quite common to put new people onto maintenance.
One of the posters suggested that this was training so that people would learn the value of writing good maintainable code. Posters might also have suggested [but haven't yet in my timeframe] that it was an opportunity to give the new programmer a good understanding of the project as a whole.
These two factors certainly apply, but there is another factor which is often more important: maintenance is given to the new programmer because in most power relationships, you give the unwanted tasks to those who don't have the power to effectively refuse them.
In -every- programming environment i have worked in, the young new programmers have chomped at the bit, eager to *write programs*, and frustrated when they aren't given a program to write within a matter of days. I have often seen new programmers upset that they aren't creating new programs yet; often they would at least -say- that they were thinking seriously of quiting because "this isn't what I hired on for!" And most of them held that resentment of doing maintenance (or even real formalized design specs), and pushed their managers to rush into -new- -code-. Quite a few of them thereafter refused to do maintenance as soon as they had accumulated enough internal political capital to make it stick.
I've heard much the same thing from other people I know who are in the software industry: most programmers really dislike code maintenance -- even if it is their own code that is being maintained! Most do not even like to do feature or design changes to their existing code, not unless the change is clearly to add something "new".
Even to get someone to rewrite their code to make it faster can be hard to convince them to do, unless you can make the situation into a challenge to make their code run as quickly as possible... a situation which often results in unmaintainable code that would probably run slower on the next compiler over.
New programmers get stuck with maintenance because the more senior people don't like to do maintenance. I've heard intermediate people seriously tell their manager they would quit if they were not given a "real" programming project.
The flip side of this is that it turns out that relatively few people are actually -good- at maintenance. To be able to take existing code (often poorly documented) and not only figure out what it -does- do, but to figure out what it was -meant- to do, and to do massive revisions to get clean code that does what it -should- do -- this is a skill that I have rarely encountered. For a disorganized program of any real size, it requires someone who is patient and an excellent mental modeller, able to simultaneously hold in mind -many- program aspects and relate them all to each other, seeing the overview of what is logically consistant and yet able to pinpoint the minute details of what does not fit. My experience suggests that the portion of such people is less than 1 in 100 programmers; I'm not even confident that as many as 3 in 1000 are good at this kind of work.
 Signature "No one has the right to destroy another person's belief by demanding empirical evidence." -- Ann Landers
Roedy Green - 20 Oct 2005 15:25 GMT >The flip side of this is that it turns out that relatively few people >are actually -good- at maintenance. Chairman Mao used to insist bureaucrats spent a few weeks each year out on the farms. If he were in charge of the world's programming I think he would do two things:
1. make all programmers spend a few weeks a year maintaining code so they would learn what you need to do to write maintainable code and what makes code unmaintainable. See http://mindprod.com/jgloss/unmain.html
2. make all system programmers and language designers also spend a few months a year doing applications coding so they would stop designing to make their jobs easier and consider the application coder too.
 Signature Canadian Mind Products, Roedy Green. http://mindprod.com Again taking new Java programming contracts.
Andrew Thompson - 20 Oct 2005 16:00 GMT > Chairman Mao used to insist bureaucrats spent a few weeks each year > out on the farms. I guess that was after the incident where Mao had the bureaucrats direct (force) the rice farmers to plant the rice seedlings so close together that they all suphocated, resulting in widespread famine?
Maybe Mao should have been the one put out to pasture, ..errr, 'sent to the farm'.
"Ooh, Mao, M'Mao, Mao" Russel Morris - 'The Real Thing'
Greg Comeau - 20 Oct 2005 16:09 GMT >>The flip side of this is that it turns out that relatively few people >>are actually -good- at maintenance. [quoted text clipped - 11 lines] >months a year doing applications coding so they would stop designing >to make their jobs easier and consider the application coder too. When I was a manager years ago, I used to take Friday's off. That meant, in addition to meetings, design etc through the week, actually sitting with the programmers and doing the work with them. That meant I was approachable, not above them, and actually provided a mechanisn to ricochet stuff back and forth, learn some of the nitty gritties to make decision from, toss it back, etc. I always felt it made us all more efficient, in sync, etc. This also got newbies on board properly.
 Signature Greg Comeau / Celebrating 20 years of Comeauity! Comeau C/C++ ONLINE ==> http://www.comeaucomputing.com/tryitout World Class Compilers: Breathtaking C++, Amazing C99, Fabulous C90. Comeau C/C++ with Dinkumware's Libraries... Have you tried it?
Robert C. Martin - 20 Oct 2005 18:28 GMT >When I was a manager years ago, I used to take Friday's off. >That meant, in addition to meetings, design etc through the week, [quoted text clipped - 4 lines] >I always felt it made us all more efficient, in sync, etc. >This also got newbies on board properly. The craft of software development it taught by masters to journeymen and apprentices. It is not learned in school; and it is difficult to learn it without a mentor. So, Greg, I applaud the approach you took. Managers who have risen from the ranks should not leave the old job behind. They need to mentor and guide the newer people coming behind them.
One of *my* advisors (Dave Thomas of OTI fame) calls this the practice of being a "playing coach".
----- Robert C. Martin (Uncle Bob) | email: unclebob@objectmentor.com Object Mentor Inc. | blog: www.butunclebob.com The Agile Transition Experts | web: www.objectmentor.com 800-338-6716
"The aim of science is not to open the door to infinite wisdom, but to set a limit to infinite error." -- Bertolt Brecht, Life of Galileo
Mark P - 20 Oct 2005 18:30 GMT > When I was a manager years ago, I used to take Friday's off. > That meant, in addition to meetings, design etc through the week, > actually sitting with the programmers and doing the work with them. Your idea of taking the day off involves a lot more work than my idea of the same. :)
apngss@yahoo.com - 21 Oct 2005 07:20 GMT Most posters say that companies usually put new programmers, or less experience programmers to do the maintenance work.
One fundamental question that bothers me: How do we define "experienced programmer"? 5 years experience, 10 years? I mean, how many years of experience are considered as an experienced programmer?
Dag Sunde - 21 Oct 2005 08:08 GMT > Most posters say that companies usually put new programmers, or less > experience programmers to do the maintenance work. > > One fundamental question that bothers me: How do we define "experienced > programmer"? 5 years experience, 10 years? I mean, how many years of > experience are considered as an experienced programmer? How many years would you consider if I asked you about an experienced mason, carpenter, mechanic or electrician? or a woodenboat builder for that sake?
Its a craft, and is about the same thing.
 Signature Dag.
Walter Roberson - 21 Oct 2005 08:32 GMT :Most posters say that companies usually put new programmers, or less :experience programmers to do the maintenance work.
:One fundamental question that bothers me: How do we define "experienced :programmer"? 5 years experience, 10 years? I mean, how many years of :experience are considered as an experienced programmer? Depends on the company. I've been programming for more than 25 years, and the programming task that is waiting in the wings for me is essentially maintenance work. On the other hand, if they thought someone else could do this particular task well, they would have handed it on by now instead of waiting for me --- there are some things that effectively require very experienced maintenance programmers!
I no longer recall whether I was put on new code during my first work term; I believe I was by my second, and I was doing some pretty hairy work by my fourth.
But a lot depends on circumstances and skills and personality. If the organization is "pushing" the progress of a fair sized project, then the organization very likely is short of people who can readily visualize diverse parts of the system and piece those parts together, so anyone who displays an obvious talent in that field might find themselves doing integration code development that most people with 5-10 years experience would hesitate to begin. But the skills and temperment that make one a "natural" at that kind of integration code development are pretty much the same as those that would be displayed by a "natural" maintenance programmer/analyst.
So... in at least some organizations, you get to the top faster by being good at maintenance than you do by being indifferent at maintenance but good at creating new work by yourself.
 Signature Programming is what happens while you're busy making other plans.
Roedy Green - 21 Oct 2005 23:54 GMT >But a lot depends on circumstances and skills and personality. >If the organization is "pushing" the progress of a fair sized project, >then the organization very likely is short of people who can readily >visualize diverse parts of the system and piece those parts together, That is an important observation. When you write new code, you can focus 99% of your attention on the one class you are composing.
When you do maintenance, any change you make could potentially disrupt ANYTHING in the whole app system. The better it was originally designed, the less paranoid you have to be. You have to understand the app as a whole and mostly what it is safe to IGNORE for any sort of change.
In contrast, when you write new code, there are no interactions yet to worry about.
I am big on Christmas present comments of the form, "If you have to change X, or add a new Y all you need do is modify the tables/code at a, b, c."
So you need a very focused mind for writing new code, and a mind that can keep a million interactions in mind to do maintenance well.
I used to have a ritual for getting into heavy maintenance mode. It involved consuming pizza and coffee, being undisturbed for long periods of time, unusually late at night, re-rereading documentation and refreshing my mind going over crucial code till a model of the app as a whole was again fresh in my mind. Then I could make a great series of changes very quickly and accurately.
Maintaining your own code is much easier. I can trust myself not to pull a great many stupid stunts, and to thoroughly document iffy tricks, and any crucially important gotchas. I can't do that maintaining other people's code until I get to know them though their code.
 Signature Canadian Mind Products, Roedy Green. http://mindprod.com Again taking new Java programming contracts.
adaworks@sbcglobal.net - 06 Nov 2005 15:21 GMT > So... in at least some organizations, you get to the top faster by > being good at maintenance than you do by being indifferent at > maintenance but good at creating new work by yourself. I always placed high value on programmers who could solve difficult problems. In software those problems are often created by other programmers. When you can read and understand someone else's program, fix it, extend it, improve it, or solve the otherwise intractable problems left behind by the person who wrote it, you will be a valuable member of the team -- maybe more valuable than someone who knows only how to write "perfect" code.
Richard Riehle
Roedy Green - 06 Nov 2005 23:17 GMT >I always placed high value on programmers who could solve >difficult problems. In software those problems are often [quoted text clipped - 4 lines] >the team -- maybe more valuable than someone who knows >only how to write "perfect" code An analogy. Whose skill is more impressive. A top flight mechanic, or a top flight mechanic who can do his repairs while the car is racing at 140 MPH
 Signature Canadian Mind Products, Roedy Green. http://mindprod.com Java custom programming, consulting and coaching.
Benji - 06 Nov 2005 23:29 GMT In comp.lang.java.programmer Roedy Green <my_email_is_posted_on_my_website@munged.invalid> wrote:
> An analogy. Whose skill is more impressive. A top flight mechanic, or > a top flight mechanic who can do his repairs while the car is racing > at 140 MPH What kind of cars are we talking about, exactly? Is this the jetsons? If not, I don't think this is a very good analogy.
 Signature Of making better designs there is no end, and much refactoring wearies the body.
David Lightstone - 07 Nov 2005 00:11 GMT >>I always placed high value on programmers who could solve >>difficult problems. In software those problems are often [quoted text clipped - 8 lines] > a top flight mechanic who can do his repairs while the car is racing > at 140 MPH There is a difference between skill and fantasy.
> Canadian Mind Products, Roedy Green. > http://mindprod.com Java custom programming, consulting and coaching. Phlip - 21 Oct 2005 14:40 GMT apngss wrote:
> Most posters say that companies usually put new programmers, or less > experience programmers to do the maintenance work. > > One fundamental question that bothers me: How do we define "experienced > programmer"? 5 years experience, 10 years? I mean, how many years of > experience are considered as an experienced programmer? What will you do with the definition? "Allow" the programmer to write new code?
I think experience comes from eating your own dogfood - from maintaining the code you yourself wrote.
 Signature Phlip http://www.greencheese.org/ZeekLand <-- NOT a blog!!!
Roedy Green - 21 Oct 2005 23:55 GMT >I think experience comes from eating your own dogfood - from maintaining the >code you yourself wrote. Perhaps this is partly why there is so much outsourcing. People who maintain their own code write better code.
 Signature Canadian Mind Products, Roedy Green. http://mindprod.com Again taking new Java programming contracts.
"." - 21 Oct 2005 20:34 GMT > Most posters say that companies usually put new programmers, or less > experience programmers to do the maintenance work. > > One fundamental question that bothers me: How do we define "experienced > programmer"? 5 years experience, 10 years? I mean, how many years of > experience are considered as an experienced programmer? Experience comes with exposure to code and coding. You cannot define it merely by years.
I have seen people who approach their job as just a paycheque. They do just enough not to get fired. Advancement comes from knowing history and not being a good programmer.
On the other, some programmers love programming. When they go home they log onto the WWW and participate in some online community (e.g. open source project or reading newsgroups).
I would not be surprised to find a junior programmer with 5 years experience and a senior programmer with 3 years experience. Depends on the person not just the years in.
 Signature Send e-mail to: darrell dot grainger at utoronto dot ca
Keith Thompson - 21 Oct 2005 21:51 GMT [...]
> I would not be surprised to find a junior programmer with 5 years > experience and a senior programmer with 3 years experience. Depends on the > person not just the years in. Indeed. Some programmers have 5 years of experience. Others have one year of experience 5 times.
 Signature Keith Thompson (The_Other_Keith) kst-u@mib.org <http://www.ghoti.net/~kst> San Diego Supercomputer Center <*> <http://users.sdsc.edu/~kst> We must do something. This is something. Therefore, we must do this.
Cristiano Sadun - 21 Oct 2005 14:36 GMT >I've heard much the same thing from other people I know who are >in the software industry: most programmers really dislike code >maintenance -- even if it is their own code that is being maintained! This is odd. I dont know what "most programmers" do - and I'm not particularly questoning your assertion - but I think one of the best indications about how good a programmer is (or how well designed his/her programs are) is exactly how easy it is to maintain them - adding features, enhancing existing ones etc.
It would really be a sad world if most programmers wouldn't like/accept to do that..
|
|