Here’s what Ben Rady, who calls himself software craftsman, states under his Statement of Values. I value similar things: I can sign my name under this statement. Excellent summary.
As a technical leader, I value:* Talented People* Rapid Feedback* Individual Relationships* Facilitation over command and control* Continuous Improvement* Frequent Delivery
As a programmer, I value:
* Working Software* Clean Code* Rich Communication* Flexibility over efficiency* Sustainable Pace* Simplicity* Failing Fast over hiding errors
As a human being, I value:
* Courage, not cowardice* Humility, not hubris* Compassion, not callousness* Curiosity, not apathy* Discipline, not carelessness* Honesty, not deceit* Patience, not intolerance
ReferenceStatement of Values, Ben Rady
Object-Oriented Analysis and Design with Applications
by Grady Booch and others
ISBN 020189551X
Date Read 9/2007
My Rating
I am part of a book review team at Javalobby. I get a chance to get a free book, write a review, and get published. Not a bad deal. I am not the biggest fan of the long review template that we use, but I have to follow what the team leader decided.
This is a second book I reviewed for Javalobby. You can read the review at Javalobby.org here. Enjoy it.
One Minute ReviewPositives* Great use of abstraction* Excellent (concise) UML 2.0 tutorial* Filled with lots of useful ideas
Negatives* Reads dry at times* Too academic, too much theory
SummaryThe information contained in this book is excellent. It has everything that you will if you want to adapt the Unified Process, learn UML 2.0, and do object oriented analysis and design. However, it is a very theoretical book, which makes it hard to read – hard to stay focused at times. Nonetheless, it is a very important book.
ResourcesApplying UML and Patterns – in my opinion, the best book on OOAD
UML Distilled – the most popular UML book
Ajax on Java
by Steven Olson
ISBN 0596101872
Date Read 8/2007
My Rating
I’m published outside of my website! Hooraah!! I reviewed this book as part of a Javalobby.org book-review team. I get a chance to get a free book, write a review, and get published. Not a bad deal. You can read the full review at Javalobby.org here. Enjoy it.
One Minute ReviewPositives* Covers AJAX: a new way to do web applications* Simple examples
Negatives* Does not show best-practice implementations* Very light introduction* Only simple examples
SummaryThis is a decent introduction to the Ajax world and how it pertains to Java development. It’s just an introduction: a light treatment of the subject. If you’re new to the subject, and would like to find out what Ajax is and what types of Ajax frameworks exist, this book gives you a good starting point.
However, if you would like get a more detailed/complete information on Ajax, this book does not suit your need. What are the advantages/disadvantages of each framework, how should you use each framework? You are not going to find that information in this book.
In my opinion, this book falls short on teaching and aiding the reader what the right choice in the vast Ajax world is. The author falls short on presenting a well researched approach to the frameworks. The examples are too simplistic to fully get a good grasp on the frameworks. Also, the constant usage of bad practices made this book hard to read for me (see my Ch.7 review).
All in all, a good overview of Ajax on Java, but not much more.
ResourcesList of Java Frameworks
Constructing a good architecture is a tough task. In my developer’s career, I have not come across too many architects that really do a decent job creating good – cohesive – architectures. That just reiterates my point that architecting a system is not an easy task.
What is a good architecture, though? What are its characteristics? I found some definite answers to this question in a book I’m reading now, Object Oriented Analysis and Design with Applications, 3rd edition. These are some of the best definitions and views on software architecture I have come across.
“A system that has a sound architecture is one that has conceptual integrity. Having a “clean internal structure” is essential to constructing a system that is understandable, can be extended and reorganized, and is maintainable and testable.”
“There is no right way to craft the architecture of a given system.”
Architectures constructed in this way tend to be less complex and more robust and resilient. They also enable more effective reuse.
Here’s a great definition of what a software craftsman is. It’s also similar to the way I think. And this is also part of the Introduction in the book Agile Java.
I am a software craftsman. I have spent much of my software development career trying to quickly build solutions to problems. At the same time I have tried to ensure that my solutions demonstrate carefully crafted code. I strive for perfection in code, yet I know that it is unattainable, particularly with the constant pressure from business to get product out the door. I take modest pride in the code I build daily, yet when I look at the code I wrote the day before, I wonder, “What the heck was I thinking?” This is what keeps the craft challenging to me—the constant desire to figure out how to do things a little better the next time, and with a little less pain than this time.
ReferenceSafari eBooks – ACM – 0131482394 – Agile Java™: Crafting Code with Test-Driven Development
It’s been some time since we had an update to the HTML language. Actually, it’s been years! After such a long time, things are starting to heat up again. HTML 5 is the next worked-on version. By reading this article, below, I got a glimpse of what’s coming. What can I say? A LOT of changes are coming. Nice improvement, in my opinion.
Hypertext Markup Language (HTML) 5 introduces new elements to HTML for the first time since the last millennium. New structural elements include aside, figure, and section. New inline elements include time, meter, and progress. New embedding elements include video and audio. New interactive elements include details, datagrid, and command.
ReferenceNew elements in HTML 5
|
The best software designs look simple, but it takes a lot of hard work to design a simple architecture.
–Grady Booch
in OOAD with Applications |
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
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.
|
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.