Software Craftsmanship: What is a Craftsman
A couple of weekends ago, I attended an Open Spaces developer conference in Austin, TX. The conference had a specific focus on the idea of software craftsmanship. While a nice fishbowl discussion on the open night of the event touched on a lot of ideas, I feel that some people missed the point at what a craftsman is, and where the desire to be a craftsman should start.
The main issue I had with many people’s opinions was that they were all targeted at explaining to managers, c-level folks, and others about why craftsmanship was important. They also focused heavily on how to explain to those people why they should hire someone that is a craftsman over someone that would (in most cases) be cheaper. I felt this was the wrong approach because it was outward rather than inward in it’s direction. How can you explain to a manager why hiring a craftsman is important when we personally don’t know what a craftsman is or why being one is important. I heard very little discussion about what a craftsman is or why you’d want to become one.
So today, I’m going to talk a little bit about what I feel being a craftsman is and how that idea can be applied to the development/creation of software. And to do that, we have to start at the beginning and define what a craftsman is.
What is a Craftsman
If we look up craftsman in the dictionary, we see something like this
A person who practices a trade or handicraft
So by definition, a craftsman practices a trade. Our trade is that of software development. When people think of the word “craftsman” they generally think in terms of woodworking. A craftsman takes a piece of wood and turns it into something beautiful. This kind of thing generally takes lots of practice and time. Time spent messing up, cutting a piece too short, splitting a piece of wood, and so on. You have to do a lot of things wrong in order to learn how to do them correctly. Eventually you become a skilled craftsman. You learn a lot of things to not do. In generally becoming a craftsman is more about learning what not to do than it is about learning what the right way is. But the main point here is that the craftsman spends time on his craft. He works at it daily. Looking for ways to improve and build a better whatever. Over time the craft is perfected, at least as much as it can be.
A Software Craftsman
When it comes to software, there are a lot of ways to do things. You can test, you can design, you can encapsulate, inherit, override, and continuously integrate. You can spend hours refactoring, changing bits of code until they’re just so tight that on occasion you can’t understand it anymore. All new software developers start out simply by trying to make the computer do something. Sometimes it’s just about getting it to show text on a screen. Eventually they graduate to automating tasks, very functionally (do this, then do that, then to something else) and without very little thought to re-usability. Then someone shows them how to make methods of common tasks, and then eventually how to break those methods into classes (if their doing object oriented programming). But it’s a slow process, some of these things can take years to master, many times they learn how to be better from someone else.
The general idea is the same though. To become a good programmer, you can’t just do it in a nine to five fashion. You have to practice it at home, spend time working on learning new things, finding those new ways to not do something. You’re not going to learn everything by doing it at a job day in and day out. The person learning to build furniture is going to learn how not to make chair by making the chair wrong a few times and so the same goes for someone looking to build software. They will go through a lot of wrong solutions before they start understanding why the correct one is, in fact, correct. Sure, someone could tell them, but then they haven’t experienced something for themselves and they don’t understand for themselves why it’s the right way. They only know it’s the right way because someone told them so.
Driving to be Better
Really it all boils down to a personal choice. Are you going to work to be better at your trade/craft or are you going to linger and stay in that little space that you are so comfortable in. Why is software craftsmanship important to you? Why should your manager care if you don’t? Why should anyone care if you don’t? In the end being a craftsman (in anything) isn’t about anything other than being the best you can be at your craft. If you are developing software then you will strive to create better software regardless of who it’s for. In the end, you’ll do the things that make you a better craftsman because they are why they make you better. Not because someone told you to do it that way. In the end, we all want to be the best at whatever we do. That to me is the sign of a craftsman. Someone who as a constant drive to be better at whatever it is they do.
Pablo’s Fiesta – Los Techies Open Spaces
Over the weekend I made a trip to Austin to attend the Los Techies‘ Open Spaces event entitled Pablo’s Fiesta. This was an Open Spaces Conference where the focus was on software craftsmanship. There were a lot of good sessions and I managed to be introduced to several new ideas, technologies, and even a new programming language. While I’m still letting a lot of what I saw, heard, and read while there sink in, you can expect some blog posts in the (near) future about some of the things that were brought up and demonstrated.
This was my first Open Spaces conference (I missed the one held in Houston last year due to the recent birth of my son), and I have to say I quite enjoyed the format. There didn’t seem to be quite as many breakout sessions at this one as I’ve heard Open Spaces can be known for, but maybe they happened and I missed them. The people doing the talks did a great job and the open atmosphere was great. I was in one session where the speaker had someone take over his laptop to give a demonstration on some areas of the topic he wasn’t too familiar with and it was great.
A wiki was set up for the conference, and people were uploading session notes, links, and even recordings of some of the sessions, so check out that wiki at http://pablosfiesta.pbworks.com/
Having attended this conference, I’m now even more excited about the Open Spaces that the Housotn Alt.NET group is working to put together for the first weekend in May. The fact that there are so many people that are willing to share their experiences and knowledge with others is great and hopefully I continue to surround myself with these kinds of people. So bring on the Houston Open Spaces conference.
gEdit Color Themes
I’ve been using gEdit (the default text editor in Ubuntu) to do some Ruby and Ruby on Rails programming the last few weeks. I was using the RadRails plugin for Eclipse but for some reason my computer slows down considerably when using Eclipse. The thing is, gEdit comes with a couple of nice color themes by default but the darker Oblivion theme wasn’t quite to my liking. So I a quick Google search later and I found a repository on GitHub that contains several nice gEdit color themes. I’ve currently settled on the DarkMate them (see screenshot below).
So if you’re looking for some nice gEdit color themes, check out mig’s repository.
Internet Privacy, It’s a PUBLIC Internet Folks
Earlier this week, Google announced a new product called Google Buzz. Google Buzz is one part Twitter, one part FriendFeed, and one part Wave. Even more to the point, Buzz is Google’s entrance into the social media space. This product launch isn’t without it’s uproar. Like the uproars caused by a Facebook redesign/feature launch, Google Buzz as come under fire for privacy concerns.
Now, I’m the first to advocate privacy. I think that you should never enter into something without understanding its impacts on your and information. That being said, I’m also an avid user of social networks like Twitter, Facebook, Gowalla, and so on. But I understand the implications on my privacy and look at how it’s handled once I’ve opened an account. Google Buzz was no different. They announced that you would automatically follow those you contact most via Gmail, it says so on the Google Buzz page. So right off the bat, you know what’s going to happen.
That hasn’t stopped some people from having issues though. Take this example here from the Fugitivus blog (warning: explicit language contained in post). The person here was using Google Reader, a RSS subscription reader application from Google. This is the part I want to focus mostly on for my point.
That point is, if you’re using an internet service, do not do something you wouldn’t want potentially shared with the world. I think we can all agree, the internet is a mostly public forum. Yes, there are walled services (like Facebook), but things happen, passwords get hacked, and companies make mistakes and privacy is destroyed (even if it’s only temporary). Yes, one’s Google Reader sharing/notes/whatever should only go to those it’s intended. But at the same time, caution must be maintained when doing something. You wouldn’t send a questionable email out, because you never know where it might end up. So why would you do something on a web application that you didn’t want seen by the public at large? If you are going to use the internet, you have to accept some breakdown in privacy. There is no such thing as a “PRIVATE INTERNET”. My approach to internet privacy is this: “Don’t do anything you wouldn’t want seen by the public at large” – that’s it, no more or less. If I don’t want the public knowing about it or fear that it might eventually see the light of day, well then I just simply don’t do it.
Now, before someone blankets me with a ton of statements about the blog post I linked to, let me note that I believe that the person has every right to be angry with Google, and I agree that Google Buzz needs to address many of its privacy concerns. There are some issues that definitely need to be ironed out and I think Google will get it all sorted out. In fact, Google has already announced some changes to Buzz’s privacy controls (it’s not a lot, but it’s a start). Google released Buzz early and it is still very much a new product, but Google is good about the “release early, release often” (or at least they have been lately) so I think most of the major privacy issues will be resolved.
But let me just reiterate, it’s a public internet. Even the walled sites eventually have cracks that let data out. It’s going to happen. So if your interested in keeping something under wraps, the internet is not the place to discuss it.
From Andy: Big Health Care Reform Should Start at the Bottom
Greetings,
As the Health Care debate around our country rages on, waxing and waning with each poll, I thought it was time to throw in some overlooked or outright discarded ideas. Bringing real access to health care to everyone without massive cost increases or symbolic coverage requires a total rethinking of how we do some things. Due to various regulations and liability issues as well as financial considerations most doctors now immediately after being in medical school go for specialty’s. Due to the cost of medical school and student loans it is not easy to make a livelihood as a doctor as a general practitioner of medicine. Now I realize that may be hard to believe due to prices that you are charged for going to a doctor but consider this first. Medical school can cost from 12-20K a year with books and other fees. This doesn’t include eating either. Now multiply that by 8 years to get a doctoral of medicine and you are looking at 96-160K in student loans cost. Don’t believe me google it and check. So you are fresh out of medical school with 100K in student loan debt. Now add whatever it costs to have a standard of living in your area. This puts most doctors out of medical school in a pretty big bind. Imagine having a house or apartment bill every month in student loans costs on top of all your bills. It doesn’t take much imagination to see why it is 50.00 or more just to see a doctor without insurance. Now add malpractice insurance to the equation. That can run from 20K to 200K depending on state and field the doctor is in. The point of all of this is we can pummel large health care companies as they are easy and in many ways justifiably part of the problem. But we are really only throwing a band aid on a gunshot wound if we don’t consider the entire system from college to hospital to managed care. So here are some suggestions or ideas for everyone to think about.
1.) Provide all or a portion of a pre-med students tuition to become a doctor up to General Practitioner with a few rules: they must maintain a suitable grade point average, depending on the level of financial help provided agree to work for a length of time at a government hospital facility or non-profit hospital for a standard wage, agree if they don’t maintain a proper grade point average or leave the position early they will be responsible for the loan or portion left that was given to them. If they fill the requirements they do not have to pay back the loan.
2.) Reform Malpractice laws. This can be done in a number of ways like setting a set percentage that lawyers can receive from winning a lawsuit while suing a doctor (in many cases lawyers take 40% area) to a realistic level, setting limits (reasonable) on how much a person could receive from a settlement ( I am in favor of this personally as long as the amount is fair and also if the injury or error causes permanent injury that the responsible party provides to have the costs of the injury for the duration of it.), reduce the timeframe that a patient can sue a doctor for an injury are all possible ways to do this.
3.) Streamline procedures involving medical practices and review them regularly with the heads of hospitals and doctors to ensure that the people doing the work are crafting the procedures.
4.) Enact Chargeback Rules. If you sue a doctor and your case is proven fraudulent or frivolous an award should be given to the doctor for the lost time and damage to his practice from the person accusing him.
5.) As lawyers have a rule that they must do a certain amount of pro bono work a year for people maybe adding in a rule of that nature may be worth looking at as well.
All of these ideas are just smaller pieces to a bigger puzzle but I haven’t read or heard of anyone in the “overhaul” of our health care mention anything close to this. We have spent so much time focusing on how big companies screw us we don’t or haven’t paid attention to how the actual doctor’s get pressured and screwed all the time. If we started with the fundamentals of health care at the bottom and worked up reforms may come in smaller packages but they would be real. Currently as it is we are trying to reform health care by replacing the board of a company not asking or listening to all the workers of that company what could be done to really change things for the better. Well writing about the entirety of the Heal care bill and debate would make a full time job I just wanted to throw in my two cents on it. See you all next time.
mkoby.com Adds a New Writer
Tomorrow you will see a new post from a new author here on this blog. The new author, Andy Snow, is a close personal friend of mine that I have known for many years (well over a decade at this point). He is probably one of the smartest individuals I know, and can bring a lot to a discussion, including alternate viewpoints, new ideas, and just plain old debate. Hopefully some of his ideas will bring open discussions to this website, and while I have always encouraged open debate on this blog I want to ask that it always remain civil (please, lets not be trolls).
Hopefully tomorrow’s post from Andy isn’t his last and we will see many more posts from him in the future.

