The spirit of the tool and craftsmanship.
Part 1 - the tools and how they can give leverage our daily work.
Our tools that we use daily are programming languages, IDEs, scripts, bug tracking systems etc. How they boost our efficiency and productivity depends on 2 main factors: the worker and the tool itself. If the worker is apprentice, don't expect super productivity even if you give him the best tool available. And of course if the tool is crappy the craftsman will have much troubles performing just simple tasks.
As a convinced XP adherent, I all the time refactor the code and (try to) write as much unit tests as I can. In my office I use C++ and MSVC and at home (in my spare time) I use Java and few IDEs, so I can compare the results easily. So lets do some simple refactoring - lets take method rename. In C++ code this is a short (sometimes longer) walk in the hell. You can do this using 2 approaches: old, well known text search or using browse information. In the first case the search will give you probably hundreds occurrences in the files, but you have to open every listed file and to see the context (it could be in a commented code, if the method name is so common as GetName or GetID , only 20% or less of the references can be these that you are interested in) and then to do the renaming manually. This approach involves a lot of boring tasks - opening files, positioning in the right line, is this place really a call to my class or not, if yes - rename it, if not skip it, search next occurrence in the same file and do the steps again, and again and again ... until it's time for lunch. So half a day just for rename a method ( :-( tell this to your manager ). Ok, lets see other approach - it saves you a lot because it finds exactly the places of your class method, it's not so stupid as the text search. But anyway I have to do all manual work as well, just browse info is more precise tool and saves your time. But it's not for free - every time you compile the project, browse info is generated again ... and it's slow. I didn't counted this, but may be Compilations_count * browse_info_rebuild_time > time_spend_using_simple_text_search, so it's not clear which approach is faster. Note that I said faster, not better. There is no better, if huge amount of manual work is involved simply because it's error prone.
Now ... lets try the same in some Java IDE. It's just a developer dream. Right click in the method, choose from the menu Refactoring/Rename and put the new name. The IDE will find all references exactly to this method of this class and will ask you nicely - do you want to do the refactoring? And guess - if you say yes, it will do all manual work instead of you! Fast and not error prone! Big difference, you see. What more you can want? Hm, hay it was just a simple rename, what about more complicated refactorings like pull up method in base class, extract method, replace inheritance with delegation and so on. Guess again - there are some Java IDEs that can do all these refactorings for seconds and very, very safely. If you select a snipped and try to extract method for example, it will analyse the types of variables, the return value of the new method and will replace the snipped with a method call with appropriates parameters and so on. Don't believe it .... - so get JBuilder or JIdea (these are 2 that I'm familiar with) and try.
And this was just about refactoring. What about tests writing? There the situation is not better. In Java IDEs you can use almost the same approach as refactoring - right click over a class name, choose new TestCase and a dialog will appear to ask you which methods of this class you'd like to test. Again fast, intuitive and very, very friendly and helpful. Another page will not be sufficient to describe how painful is the same task in MSVC.
Now lets back on the topic. May be you think I sing spirituals for SUN/Java and curse MS/C++ and I'm trying to involve you in a technology/company war. Definitely NOT - don't get me wrong please. All I wanted to say is that some tools(languages and IDEs) can boost much more your performance and quality of work than others. Compared to old plain text editors that we used decade ago to write code and produce make files, MSVC much, much better, but compared to JIdea or JBuilder for example, it's .. you name it. I hear some angry voices: hay stupid guy, all these problems comes from the languages difference, C++ is much more complex and can not be refactored easy - use C# instead of C++. I'll tell you - I just don't care if C++ is more complex or not - my only concerns as a developer are to do my job properly(means high quality) and fast. If the tools help me in both directions, I will use them doesn't matter which company is behind. If they don't (help me), I don't (use them) too.
P.S. Try to guess which language and tools I'll use in my next project(s)?
insipred of these 2 publications:
The Spirit of the Tool
Aren't C++ Programmers People Too?
Our tools that we use daily are programming languages, IDEs, scripts, bug tracking systems etc. How they boost our efficiency and productivity depends on 2 main factors: the worker and the tool itself. If the worker is apprentice, don't expect super productivity even if you give him the best tool available. And of course if the tool is crappy the craftsman will have much troubles performing just simple tasks.
As a convinced XP adherent, I all the time refactor the code and (try to) write as much unit tests as I can. In my office I use C++ and MSVC and at home (in my spare time) I use Java and few IDEs, so I can compare the results easily. So lets do some simple refactoring - lets take method rename. In C++ code this is a short (sometimes longer) walk in the hell. You can do this using 2 approaches: old, well known text search or using browse information. In the first case the search will give you probably hundreds occurrences in the files, but you have to open every listed file and to see the context (it could be in a commented code, if the method name is so common as GetName or GetID , only 20% or less of the references can be these that you are interested in) and then to do the renaming manually. This approach involves a lot of boring tasks - opening files, positioning in the right line, is this place really a call to my class or not, if yes - rename it, if not skip it, search next occurrence in the same file and do the steps again, and again and again ... until it's time for lunch. So half a day just for rename a method ( :-( tell this to your manager ). Ok, lets see other approach - it saves you a lot because it finds exactly the places of your class method, it's not so stupid as the text search. But anyway I have to do all manual work as well, just browse info is more precise tool and saves your time. But it's not for free - every time you compile the project, browse info is generated again ... and it's slow. I didn't counted this, but may be Compilations_count * browse_info_rebuild_time > time_spend_using_simple_text_search, so it's not clear which approach is faster. Note that I said faster, not better. There is no better, if huge amount of manual work is involved simply because it's error prone.
Now ... lets try the same in some Java IDE. It's just a developer dream. Right click in the method, choose from the menu Refactoring/Rename and put the new name. The IDE will find all references exactly to this method of this class and will ask you nicely - do you want to do the refactoring? And guess - if you say yes, it will do all manual work instead of you! Fast and not error prone! Big difference, you see. What more you can want? Hm, hay it was just a simple rename, what about more complicated refactorings like pull up method in base class, extract method, replace inheritance with delegation and so on. Guess again - there are some Java IDEs that can do all these refactorings for seconds and very, very safely. If you select a snipped and try to extract method for example, it will analyse the types of variables, the return value of the new method and will replace the snipped with a method call with appropriates parameters and so on. Don't believe it .... - so get JBuilder or JIdea (these are 2 that I'm familiar with) and try.
And this was just about refactoring. What about tests writing? There the situation is not better. In Java IDEs you can use almost the same approach as refactoring - right click over a class name, choose new TestCase and a dialog will appear to ask you which methods of this class you'd like to test. Again fast, intuitive and very, very friendly and helpful. Another page will not be sufficient to describe how painful is the same task in MSVC.
Now lets back on the topic. May be you think I sing spirituals for SUN/Java and curse MS/C++ and I'm trying to involve you in a technology/company war. Definitely NOT - don't get me wrong please. All I wanted to say is that some tools(languages and IDEs) can boost much more your performance and quality of work than others. Compared to old plain text editors that we used decade ago to write code and produce make files, MSVC much, much better, but compared to JIdea or JBuilder for example, it's .. you name it. I hear some angry voices: hay stupid guy, all these problems comes from the languages difference, C++ is much more complex and can not be refactored easy - use C# instead of C++. I'll tell you - I just don't care if C++ is more complex or not - my only concerns as a developer are to do my job properly(means high quality) and fast. If the tools help me in both directions, I will use them doesn't matter which company is behind. If they don't (help me), I don't (use them) too.
P.S. Try to guess which language and tools I'll use in my next project(s)?
insipred of these 2 publications:
The Spirit of the Tool
Aren't C++ Programmers People Too?

98 Comments:
This post has been removed by a blog administrator.
I can just add, that there isn't any 'extract method' for an assembly language too - there aren't any methods indeed. Nor any testing framework similar to xUnit ( may be AssUnit ) I've heard about. And this is probably so, because the tasks that these languages are designed for are quite different than the ones we're on now.
And about the 'riddle' in the p.s. - many people know the answer. Even more are asking themselves the same question. But it's good that we can choose, isn't it?
I'd like to mention the negative side of the tool question too. A tool can be limiting and enslaving. A tool can make a developer more productive in the short run, and less or even unproductive in the long run.
Look at all the "easy to develop in" "visual" tools that alienate people from sound development practices. Each and every one of us has seen the ugly "thick GUI" antipattern over and over again. The main reason people do code like that -- Delphi, Visual Basic, Visual C# and other graphical designers.
Look at all the fancy debuggers inside the IDE-s! People make it easy for you to fix your code when they should be making it easy NOT to write broken code in the first place.
Ahh that was a good rant. I feel better now.
Yes, complex IDEs with GUI editors gives you false feeling that everything can be done with "just few clicks" (even they advertise it loud). There are difference between novice and experienced programmer - the former believes that this is all he needs to solve ANY development task and to complex build enterprise app for a month, while the second knows that such tool(s) could be just a precondition. Such believes are extremely dangerous if they are shared by the managers as well. The false believe that "a magic tool (usually complex and expensive CASE) will save the project", can ruin the whole company if the project is crucial. And it's not isolated case, a lot of managers share such believes even after few failures - they seek the reason for failure in the tools(language, IDE, technologies), but still continue to believe that next time they will find such "real_magic_box".
Anyway, my post was not about these blind believes and wishful thinking. And I didn’t mean that Java or Java IDEs are such magic tool. Purposely I didn’t mention GUI editors and wrote about refactoring and testing. My only concern is to make quality software and this software to be really soft. All tools have limits and we have to live with this. My main idea is that some tools are more mature and helpful than others. Such mature tools encourage me to do more brave refactorings and as end result I start really to believe in XP virtues. Thus, the dogma “if it works, don’t change it” loses it’s weight and software becomes really SOFT.
Hi sexy girls | sexy webcam videos | live chat xanax cheap xanax buy xanax online phentermine buy phentermine online phentermine cheap tramadol buy tramadol online tramadol cheap levaquin buy levaquin online levaquin cheap norvasc buy sex online
babe online casino online casino online roulette online blackjack online poker online phentermine online xanax xanax buy phentermine phentermine buy phentermine cheap | live chat
for fun
Hi all!. Alone on Valentine's Day? Adult Live Chat & movie pages Try to find partner in your area!
Enjoy
Hello. Use this search engine for best result: BD search Find all you need in your area!
for fun
Hi all!. Use these helpful search engines TFO search & sex and try to find all you need in your area!
for fun
Latest news. Viagra, cialis
viagra
cialis
tramadol
Hi. Use this search engine for best result: BDsearch Find all you need in your area!
Enjoy
http://www.adquity.com
Classifieds for our community. Buy, sell, trade, date, events... post anything. Adquity Classifieds.
http://www.adquity.com
Hey,
What is it with girls fighting?
BigMike
gross-videos.com
You won’t believe your eyes, see the World’s best girls HERE! ...... Try to find sexy partner in your area !
- JOIN FREE - After free registration you can have unlimited access to the huge adult source.
ATTANTION ! Adult only !...... http://searchchat0.tripod.com
Great article! Thanks.
Thanks for interesting article.
Nice! Nice site! Good resources here. I will bookmark!
I see first time your site guys. I like you :)
Excellent website. Good work. Very useful. I will bookmark!
FA89sq You have a talant! Write more!
4ggfdM Hello all!
nXY2aq The best blog you have!
GnCBj6 actually, that's brilliant. Thank you. I'm going to pass that on to a couple of people.
Good job!
Nice Article.
Good job!
Nice Article.
Good job!
actually, that's brilliant. Thank you. I'm going to pass that on to a couple of people.
Wonderful blog.
Thanks to author.
Good job!
yyGdXw write more, thanks.
Magnific!
Nice Article.
Magnific!
Nice Article.
Good job!
Wonderful blog.
Wonderful blog.
Hello all!
Good job!
Thanks to author.
Hello all!
Thanks to author.
Wonderful blog.
actually, that's brilliant. Thank you. I'm going to pass that on to a couple of people.
actually, that's brilliant. Thank you. I'm going to pass that on to a couple of people.
Build a watch in 179 easy steps - by C. Forsberg.
Ever notice how fast Windows runs? Neither did I.
Calvin, we will not have an anatomically correct snowman!
Friends help you move. Real friends help you move bodies.
All generalizations are false, including this one.
Good job!
The gene pool could use a little chlorine.
If ignorance is bliss, you must be orgasmic.
Give me ambiguity or give me something else.
Give me ambiguity or give me something else.
I'm not a complete idiot, some parts are missing!
Suicidal twin kills sister by mistake!
Suicidal twin kills sister by mistake!
Suicidal twin kills sister by mistake!
Energizer Bunny Arrested! Charged with battery.
I'm not a complete idiot, some parts are missing!
Build a watch in 179 easy steps - by C. Forsberg.
Calvin, we will not have an anatomically correct snowman!
Calvin, we will not have an anatomically correct snowman!
I'm not a complete idiot, some parts are missing!
The gene pool could use a little chlorine.
Clap on! , Clap off! clap@#&$NO CARRIER
Oops. My brain just hit a bad sector.
C++ should have been called B
Beam me aboard, Scotty..... Sure. Will a 2x10 do?
Friends help you move. Real friends help you move bodies.
Lottery: A tax on people who are bad at math.
C++ should have been called B
Suicidal twin kills sister by mistake!
Wonderful blog.
Save the whales, collect the whole set
Magnific!
Hello all!
Save the whales, collect the whole set
Wonderful blog.
Lottery: A tax on people who are bad at math.
Lottery: A tax on people who are bad at math.
Good job!
Give me ambiguity or give me something else.
Ever notice how fast Windows runs? Neither did I.
Good job!
The gene pool could use a little chlorine.
Lottery: A tax on people who are bad at math.
C++ should have been called B
Build a watch in 179 easy steps - by C. Forsberg.
What is a free gift ? Aren't all gifts free?
Save the whales, collect the whole set
Save the whales, collect the whole set
Save the whales, collect the whole set
actually, that's brilliant. Thank you. I'm going to pass that on to a couple of people.
Thanks to author.
Post a Comment
<< Home