The Pragmatic Craftsman :: Simplicity from complexity : by Stanley Kubasek ::

Archive for May, 2007

What is a Craftsman? May 31st, 2007
Martin's Object-Oriented Principles May 25th, 2007
Good Code May 16th, 2007
JBoss At Work May 2nd, 2007
Einstein on Complexity May 2nd, 2007

What is a Craftsman?

I found a great, pragmatic, and simple to understand definition of what a craftsman is from Dean Wampler, read below.

Am I a craftsman? No. Not yet. :-) But I work hard in that regard. Besides the first quality — being widely recognized — I think I can get good marks in the other characteristics. I strive to deliver quality; I am passionate about coding; and I continuously learn.

A craftsman is widely recognized by peersRino recently won an international competition in Italy, one of many times he’s been recognized nationally and internationally.

A craftsman is passionate about the craftRino says that if you are passionate about food, you will work on the presentation of even humble dishes. Pasta, as well as lobster, deserves an attractive presentation.

A craftsman delivers value to the customer while meeting business objectivesRino keeps the kitchen lean and efficient. He keeps costs low by relying on high-quality ingredients, keeping waste to a minimum, and constantly improving the skills of his staff, all without ever compromising quality. In the year Rino has been at Pazzaluna, costs have dropped, while business and profits have increased.

A craftsman knows that quality is the number one priorityRino knows that cutting quality today means less business tomorrow. He keeps quality high by keeping morale high. Morale is high because his staff is constantly learning new and better recipes. Also, as you watch him interact with his staff, you can see that he treats all of them, from his sous chefs to the dishwashers, with dignity and respect, while always holding them to high standards.

A craftsman never stops learningYou would think that he knows it all, by now. Yet, he has never forgotten a lesson his own mentor taught him, “you can learn something from even the worst cook, because he always knows something you don’t!” How many gurus do you know that think they have nothing left to learn?

Dean Wampler on Craftsmanship

What does all this have to do with software? Pretty much everything. Like cuisine, clean code is part art, part science. Clean code is created by passionate craftsman who are fanatical and fastidious about every detail. Clean code is the product of years of accumulated experience. The decisions a master makes moment-by-moment, whether test-driving the next feature or fighting a fire, reflect the wisdom and breadth of knowledge that produce high-quality results quickly and efficiently. Finally, a master leads by example, bringing the rest of the team up to his or her standards.

So, if you’re young and ambitious, latch onto the mentors around you. If you can’t find any, find another job. (Your organization is doomed anyway; so you might as well move on now.) If you’re older and wiser, seek out the promising junior people, teach them what you know, and learn from them as well! Oh, and if you want to taste real Italian food, make a pilgrimage to St. Paul. Tell Rino I sent you.

ReferenceWhat I’ve Learned from Master Chef Rino Baglio, Dean Wampler

Martin's Object-Oriented Principles

I have said it many times… programming is easy. It’s easy to just write a few classes, add functions and have a running program. Anyone can learn that. However, to program well, you have to be able to design classes that have good structure, are easy to modify, easy to understand, and are able to withstand business changes. Now, to do all of that well is hard. Very hard. Object oriented programming helped in that area. But to do it well is also hard.

To me, Robert Martin has had the most influence on the OO world. The OO principles/patterns he created are hard to understand. But they are timeless and fundamental. If you learn them, follow them, and can identify them in your code, then I think you are a good OO programmer. If not, keep learning.

I was happy to come across this site that lists all of Martin’s principles. Study them. Learn them by heart. And start using them. You will become a better designer. Only after you master them, I think, you can call yourself a good OO programmer.

If you have not seen the books I recommend, I truly recommend reading Martin’s book, Agile Software Development.

I also recommend reading anything Uncle Bob writes. You will not be dissappointed.

ReferenceObject-Oriented Design Solutions or Services

Uncle Bob’s blog

Good Code

Good code is easy to change.
–Manuel Klimek

I strongly agree with Manuel. Keep in mind that you write code for somebody else to modify. If it is not easy to do so, then your code is not good! Remember that maintainance is 70%+ of the project’s life. If you cannot make modifications easily, then you really are wasting time. It’s good to keep that in mind when you’re rushed and “hacking” instead of producing good code. In the end, you pay handsomely if you speeded initially. :-)

Some excerpts from Manual’s excellent blog entry.

Make the code easy to change. This means modularity, abstraction, low coupling and high cohesion and all the other wisdoms of software development that are known for ages.

Find the model that fits best for your team and make the code easy to change so that the poor souls that will maintain yourcode when you leave earth on your mission to Pluto are able to refactor it to make change even more easy for themselves.

An automated test suite makes it easier to change the system without breaking it. Even if you never implemented a newfeature and later realized that you’ve broken a different feature, remember that you write code not for yourself, but forother people who have to maintain your code.

Reference Blog Archive -> Good Code: A Value-Oriented Approach” href=”http://klimek.box4.net/blog/2007/05/12/good-code-a-value-oriented-approach/”>Manuel Klimek > Blog Archive > Good Code: A Value-Oriented Approach

JBoss At Work


JBoss at Work: A Practical Guide
by Tom Marrs & Scott Davis
ISBN 0596007345
Date Read 4/2007

My Rating


Good overall book on how to deploy J2EE apps to JBoss. It follows a step-by-step approach (which at times might be annoying, but it does the job). Not much theory, though. If you want to learn how to deploy to JBoss, then this is a good book. Otherwise, a good overview of J2EE and Hibernate, but the examples are very basic. The advanced topics like clustering and session management are missing. So, if you are new to JBoss, and are looking to deploy a J2EE app, then this book will help you. For a more detailed treatment of JBoss and J2EE, look elsewhere.

Einstein on Complexity

Any fool can make things bigger, more complex, and more violent. It takes a touch of genius — and a lot of courage — to move in the opposite direction.
–Albert Einstein

Favorite Quote

Topics

Tags

Archive

Currently Reading

Info

© 2001-2012 Stanley Kubasek About me :: Contact me

Me on Twitter

The key to performance is elegance, not battalions of special cases. — Jon Bentley and Doug McIlroy - 4 days agoThe ability to simplify means to eliminate the unnecessary so that the necessary may speak. — Hans Hoffmann - 9 days agoSo much complexity in software comes from trying to make one thing do two things. — Ryan Singer - 15 days agoGood code is short, simple, and symmetrical - the challenge is figuring out how to get there. — Sean Parent - 17 days agoSimplicity carried to the extreme becomes elegance. — Jon Frankli - 21 days ago

»see more

Recent Entries