Good things come ... eventually 17
There is an old adage that good things come to those who wait, provided they work real hard while waiting.
I read a blog article today that made me sad. The blogger mentioned that they were doing TDD and using Clean Code techniques and building a working system. His company, apparently distrustful of the newness of his approach, hired a consultant to come and critique the team’s code. I like that the company lets the team try new things, and that they decided to check on the team’s results. So far, this is all good.
Here’s the sad thing: the consultant (allegedly) made a number of old-school recommendations based on practices that have been obviated.
He suggested having comments and name warts and other ugliness. It was almost like he was recommending regression based on the idea that “normal” programmers aren’t able to deal with good code, being accustomed to ugly code with apologies scattered throughout. That’s unfortunate, and I suspect it’s extremely good-intentioned. I would call it a “misplaced kindness.”
I don’t know the blogger’s company and wouldn’t ask, but in general I am always surprised at how slowly transition takes place in larger companies. Body inertia (in the F=ma sense) is hard to overcome so people are using expensive version control systems that are two generations behind the times, old-fashioned waterfall methods, code documentation practices that are completely obviated, a total sense of denial toward open-source tools, and rigid frameworks whose owners have abandoned them for more workable systems. It’s an ugly situation, but on the other hand countless fads and bad ideas have caught fire only to die out. Those companies nearer the trailing edge didn’t jump on the wagon only to jump off painfully later. There is an advantage to being a late adapter.
The trick in working with the slow transition is that we mustn’t confuse frustration with failure. Ultimately, the world does move forward and new practices are eventually accepted. It is an issue of patience with those who drag behind and perseverance in moving them forward. It’s primarily a matter of education and evidence and time.
Somehow OO and dynamic languages and version control and CM and all of various other breakthroughs eventually permeate the work-o-sphere. Few of us need to ask permission to use OO or to draw UML on a whiteboard or to use color syntax highlighting or “intellisense” or word processors or our favorite text editors, but at one time we had to fight about it.
If the Agile ways are better (and I think they are) then we’ll eventually see these techniques as the mainstream and the idea of naming warts, long functions with long comments, and test-last programming will seem laughable and quaint to the most conservative organization. Refactoring tools will be the least we expect from our IDEs, and open source servers and libraries will be prevalent. I think that day is coming.
Let me provide some more background on the case.
One that particular project I was a consultant (architect/tech lead) working with a customer’s team. Our customer itself was another consulting company working for an enterprise organisation. The project was to replace their legacy mainframe with a .NET application. The enterprise organisation had hired a code reviewer to check the project. He came from yet another consulting company.
We used standard, but modern techniques like TDD, an inversion-of-control container (Castle Project) and an OR-mapper (NHibernate).
The consulting company we helped learned to appreciate our agile practices – initially there was the normal resistance to change but in the end it is hard to argue against results.
For example, when we introduced the OR-mapper (NHibernate) the DBAs put up a fight since myth has it that Stored Procedures always perform better. Only when we measured and showed that it did in fact perform well and that it would free up four DBAs from writing SPs for many months did the resistance die out. It is hard to argue against facts like that.
The resistance from the code reviewer was basically due to his assignment. He was asked to review the documentation. The intention was to check the documentation to make sure that the enterprise organisation could hire someone else to work on the application afterwards. The underlying agenda was to avoid supplier lock-in. This, of course, is perfectly reasonable.
The problem was that the reviewer had almost fourty years of experience in application development but none with unit testing, mocks, inversion-of-control, OR-mappers and Selenium (automated web integration testing).
From that perspective, documentation is the green comments in the source code – the XML that can be extracted to a help file. And – since comments provide the only value from this perspective – no value was assigned to properly named methods or simple, readable code with tests that document the expected behaviour.
He actually managed to find one piece of code in the system that he liked. It had comments (apoligies!) – it was a complicated business rule reverse engineered from the legacy system.
To make a point I refactored it to its simplest extreme and removed all the comments and at that point it became apparent that the business rule was specified in a way that made no sense.
From my perspective that proved the case for readable code.
However from the perspective of the organisation paying for the project all they saw was consultants disagreeing about the right approach.
Eventually however some Asian consultants were in-sourced to the project to write a bunch of data export jobs and after we proved that we were able to get them up to speed quickly we did not have any more interference from the code reviewer.
So the story ends well.
There will be resistance to new ways of working, but it is possible to overcome it by showing good results.
The big lesson learned was that if code reviews or other external factors are allowed to interfere there is good wisdom to be found in the principles behind the Agile Manifesto – “customer collaboration over contract negotiation”. Focus the work on proving that the method is sound by showing good results.
For non-developers direct experience is much more powerful than quarrelling over abstract concepts of “good code”, so demonstrating that their concern about vendor lock-in was addressed properly removed the obstacles.
That’s another facet of agile development.
thanks for the extra detail – tim
I would think about this the other way around:
If some companies know how to do better and some companies are still in the stone age, this is good for the companies that know better.
Companies compete among themselves, so it is important that most of them fail for others to succeed. If they choose to use older practice, which has shown to make projects fail, that is good.
Just choose a company that is willing to succeed and to pay the price for success, which mostly means that it lets its developers learn new techniques and feel responsible for what they are doing.
i’m not so sure that day will come. what about the adage “if it ain’t broke, don’t fix it”? banks, for example, are notorious for having legacy systems. i can’t see them justifying the risks and costs involved in modernizing these systems unless it ceases to meet their business needs.
For non-developers direct experience is much more powerful than quarrelling over abstract concepts of “good code”, so demonstrating that their concern about vendor lock-in was addressed properly removed the obstacles.
There will be resistance to new ways of working, but it is possible to overcome it by showing good results.
While surfing Yahoo I clicked on your link…very informative! I enjoy staying up-to-date about this kind of info. I’ll definitely bookmark your site for additional review.
wowww very nice sentences. I like it …Thanks
Dünyan?n en büyük online okey oyunu bu sitede sizleri bekliyor. Gerçek ki?ilerle sohbet ederek Okey Oyunu Oyna ve internette online oyun oynaman?n zevkini ç?kar
These are the days in which it takes two salaries for each home,but divorces increase
Normally videos go viral when there’s something that’s happened or someone does something 1:5 RC Monster Truck amazing and shares it with the world. Other times videos go viral when people are goofing around with masses of food or setting historical figures off against each other in rap battles. This one however is slightly different, it’s probably one of the best geeky ways to try and get a girl without them actually seeing your goofy teeth, thick glasses, Star-Trek t-shirt and combed over hair!
At OSM we report on a wide Off-Road RC Monster Truck range of topics ranging from social media all the way through to technical advances and YouTube viral videos. Now we have another viral video to talk to you about, it’s titled “Geek Gets Girl Part 1 ‘Tonka Summit too’” and it features an RC car, a camera, a walkie-talkie and a few other things…
We really wanted to find out what happened next and thankfully, the video uploader (951rcguy) has filmed a second video where he returns to the same girl on the beach but this time he has gotten rid of his 26CC RC Monster Truck passenger and brought her a flower. The guy even manages to get the girl to follow the RC car back to meet him… I guess sometimes it pays off to be a bit of a geek eh? As always you can view the videos at the bottom of the article.
The video starts off with the RC car embarking on what can only be described as a long journey as the video lasts for around 6 minutes! It would also 4WD RC Monster Truck seem that the driver is somewhat picky as he goes round quite a few different girls before settling on one that he collides with. The girl takes it pretty well and talks to the guy over the walkie-talkie but ends up telling him pretty much that he couldn’t compete with the passenger, so he drives off.
it needs a bokmark so i can come back to it later ,nice stuff
Wear women jordan high heels in a split second sexy, charm and confident outbreak, twisting the waist is born swaying pose. High heels as if the women winning weapons, a pair of high-heeled heels, the increase absolutely is not only highly, but from the heart of the confidence and poise.
U may be interested in our http://www.ourhermesbags.com Hermes , if u like, contact us at any time.
nice stuff
disclose to you some, it’s named “Geek Gets Lover Voice 1 ‘Tonka Summit too’” and it features an RC car, a camera, a walkie-talkie and a few other things…
This is an excellent stake. I learned a lot almost what you conversation nearly. Not sure if I concur with you completely tho’.
ITS A VERY GOOF D SITE UI LIKE THIOYHG FGHFYG YHOFGNF H
I say this Monster is the hottest animatronic toy available on the market this year!It is high on each and every kids Christmas wish-list and it is flying off the racks faster than plaything stores can restock. Fisher-Price, the maker of this toy, have come up with a really good 1 this time. Standing high at two feet five, Big Feet the Monster continues to be described as the little monster with a big personality Beats Stereo Bluetooth can perform a number of Beats Studio – stroll, talk, chew, burp, physical exercise and throw the ball. All at Monster Beats By Dr press of a button on the foot-shaped remote.A foot-shaped remote, now how cool is that! And there are only icons on the remote, absolutely no writing, graphic representations that make for easy operation regard to little kids, recommended age group – 3 to 8 years old. Being so popular and full of features, you might think it’s prohibitively expensive, but rest assured, it costs a mere $100. limited edition colors beats expensive or inexpensive depends a lot on subjective opinion, but I would say $110 for this state of the art toy is certainly good value for money. Besides, you can’t put a cost on children’s joy.Big Foot the actual Monster is bound to keep the child engaged Dre Monster Beats well as fascinated for hours at a time and you can watch your kids squeal in delight as Big Foot the Monster walks and talks and works a wide variety of animatronic motions. Actually the well-designed toy can even tumble. Multiple measures ensure that monster ibeats canada with the actual Monster does not become boring or monotonous and kids don’t get bored stiff easily. Just keep pressing the many buttons on the nifty little remote and watch the Monster do his thing.