<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>Programming and people watching.
This is the humble site of Sebastian Hermida.</description><title>Beards and Keyboards</title><generator>Tumblr (3.0; @sebastianlab)</generator><link>http://sebastianlab.com/</link><item><title>How to meet other craftsmen</title><description>&lt;p&gt;This is not about speed dating but I had the luck to meet a craftsman during these holidays. He is not a software craftsman. He does not work with computers, but with construction and repairs of homes and apartments. He is a master mason.&lt;/p&gt;
&lt;p&gt;During my stay in Spain, I had to interview and evaluate the proposals of three local constructions shops to almost rebuild from scratch an old apartment there.&lt;/p&gt;
&lt;p&gt;I observed a bunch of similarities with the craftsmanship movement of our software industry. This actually helped me make a decision to pick the right person for the job. If I ever jump into freelancing, I would  try to have all the attributes that made me pick this guy.&lt;/p&gt;
&lt;p&gt;The first thing before starting a project this big, is to get a proposal. You tell them what you want to do, leave them the keys of the apartment, meet again in a couple of days to review their proposals.&lt;/p&gt;
&lt;p&gt;All our proposals were a few pages long. They describe what needs to be done and the price for each of those items. Their language is sometimes technical. They describe the techniques and materials that they plan on using. So I had to learn a lot of new words and the whole process that goes into this “big refactoring” of the apartment.&lt;/p&gt;
&lt;p&gt;After getting all the proposals, compared prices, interviewed again with all of them, made revisions to their original proposals, we chose our shop. Here is what helped us made that decision:&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Referrals&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;A couple of friends and family had recent experience working with them. They were very happy with the results. They were even proud to show the work that they did for them and walked us through all the details.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Passion&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;When interviewing with him, it was obvious that he is passionate about his work. He does not only do it for a living. He enjoys what he does. He took the time to explain the techniques that he would use and why he would apply them.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Professional&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;He listened to us and provided advice, ideas and alternatives about what could be done. He was honest about what could be done within budget and what could increase the final price.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Portafolio&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Even though we did not ask for it, he was the only one that took the time to show his current work. We visited houses that his team is currently building and enhancing. We were also able to see his past work through the referrals.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Price&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;He was not the cheapest or the more expensive option. He was also upfront that sometimes his team is slower than others. He takes the time to finish his job correctly.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Payments&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;A very agile method of payment. Him and his team will work for you for a week. At the end of the week, review their work and decide if you want to continue working with them. You can then pay weekly, every 2 weeks, or monthly. You decide how long is the iteration (he did not call it that, of course). There is no contract, only a handshake to continue to the next iteration.&lt;/p&gt;
&lt;p&gt;The other 2 companies required a 30% up front followed by fixed payments on certain dates.&lt;/p&gt;
&lt;p&gt;He also agreed to send me weekly pictures of the progress through email and I am going to ask him to have regular phone calls to talk about the project. I guess I will secretly call it ‘a standup call’ or something like that ;)&lt;/p&gt;
&lt;p&gt;Of course, this made me wonder about ‘agile’. Why does it seems so easy for this 4 people construction shop to behave like the best ‘agile’ company I ever knew? They haven’t heard the term ‘agile’ and probably don’t care for it. They are craftsmen with a business model that makes sense and works for them.&lt;/p&gt;
&lt;p&gt;Something I admire and hope to copy someday.&lt;/p&gt;
&lt;p&gt;“People don’t care how much you know until they know how much you care” - Cavett Robert&lt;/p&gt;</description><link>http://sebastianlab.com/post/320578571</link><guid>http://sebastianlab.com/post/320578571</guid><pubDate>Wed, 06 Jan 2010 19:38:14 -0500</pubDate><category>craftsmanship</category><category>agile</category></item><item><title>Elevator pitch of why keyboard shortcuts rule</title><description>&lt;p&gt;A coworker asked me why I find important to learn and memorize keyboard shortcuts.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://sebastianlab.com/post/140286904/know-your-editor"&gt;I wrote about it some time ago&lt;/a&gt;, but this time this person wanted my elevator pitch, so it came out like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If I have to use the mouse to reach a certain menu to perform an action, a simple refactoring like extracting method, or inlining a variable for example, I am likely to get lost in the menus trying to find the right option. I know I am not the only one…&lt;/p&gt;
&lt;p&gt;If I am more likely to get lost in the refactoring menus (taking up my precious time before that urgent deadline), I am less likely to use the menus more often.&lt;/p&gt;
&lt;p&gt;If I am less likely to use the menus, I am less likely to refactor my code often (because doing it manually is hard). And if I don’t refactor, my code sucks.&lt;/p&gt;
&lt;p&gt;On the other hand (bad pun here), if I don’t have to leave the keyboard to refactor, typing and refactoring become part of the same flow. No extra effort in grabbing the mouse, giving it a couple of shakes because the pointer does not want to move exactly where I want and then finding the right option under the right menu.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;My coworker nodded and smiled. The conversation drifted to another subject so I am not sure I was convincing. What would you have changed to make this a better pitch?&lt;/p&gt;</description><link>http://sebastianlab.com/post/259903317</link><guid>http://sebastianlab.com/post/259903317</guid><pubDate>Fri, 27 Nov 2009 17:09:44 -0500</pubDate><category>keyboard</category><category>editors</category></item><item><title>"Mark my words, if you want to stay relevant and competitive in the coming years — I..."</title><description>““Mark my words, if you want to stay relevant and competitive in the coming years — I don’t care if you’re in sales, tech, finance, publishing, journalism, event planning, business development, retail, service, you name it — you will still need to develop and grow your personal brand. Everyone — EVERYONE — needs to start thinking of themselves as a brand. It’s no longer an option; it is a necessity.””&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;From the new and awesome book from Gary Vaynerchuk “Crush it!”&lt;/em&gt;</description><link>http://sebastianlab.com/post/245346463</link><guid>http://sebastianlab.com/post/245346463</guid><pubDate>Sun, 15 Nov 2009 19:21:50 -0500</pubDate></item><item><title>My pomodoro experience</title><description>&lt;p&gt;I have been using on and off the &lt;a href="http://www.pomodorotechnique.com/"&gt;pomodoro technique&lt;/a&gt; since earlier this year. It works great when pair programming but I have also used it alone.&lt;/p&gt;
&lt;p&gt;In a nutshell, this our loop:&lt;/p&gt;
&lt;pre&gt;10 Agree on the goal for the next 25 minutes
20 Start the timer
30 Work towards the goal until the time is up.
40 Take a 5 minutes break
50 GOTO 10
&lt;/pre&gt;
&lt;p&gt;After 3 loops, we take a longer break.&lt;/p&gt;
&lt;p&gt;We use it for story work, prototyping, designing, team presentations, email, etc…&lt;/p&gt;
&lt;p&gt;It seems easier to use pomodoros when working with a pair. Agreeing on the goal removes misunderstandings, puts us back on track if we went off on a tangent, and makes it easy to keep each other honest to stop typing when the clock goes off.&lt;/p&gt;
&lt;p&gt;It requires &lt;i&gt;a lot more&lt;/i&gt; of my energy and discipline to run pomodoros by myself. Distractions and shortcuts are all around me.&lt;/p&gt;
&lt;p&gt;Focusing is like doing push ups. The more you do, the easier it gets.&lt;/p&gt;
&lt;p&gt;After a couple of months working almost by myself, I wasn’t using pomodoros that much, I moved to a new team where we decided to use the technique on day one. The first few iterations were difficult for me to keep my focus since I was no longer used to the time constraint. The tomato would go off and I was just starting to get into the groove. Or I could not wait for the timer to finish because I wanted to check twitter, my email, etc …&lt;/p&gt;
&lt;p&gt;A few days ago, a coworker that popped into our area commented on the noise level in our room. He was surprised that we could get any work done: a meeting was happening at the other end of our table and we were surrounded by 2 conference calls on speaker phone.&lt;/p&gt;
&lt;p&gt;We run 5 to 9 pomodoros a day (yeah, meetings suck). When the timer starts, the whole room disappears, there is no noise but our conversation. It takes milliseconds to get into the groove. We are also pretty good at locking the screen as soon as we hear the bell. It has become an habit.&lt;/p&gt;
&lt;p&gt;And at the end of the day, the sense of accomplishment is clearer. We can recall the different episodes where we reached our goal and how much progress we have done since we started in the morning.&lt;/p&gt;
&lt;p&gt;This post was written in 2 pomodoros.&lt;/p&gt;</description><link>http://sebastianlab.com/post/241982321</link><guid>http://sebastianlab.com/post/241982321</guid><pubDate>Thu, 12 Nov 2009 19:27:07 -0500</pubDate><category>pomodoro</category></item><item><title>"I am sure a lot of you are frustrated at your colleagues, not being here at this conference. Not..."</title><description>“&lt;p&gt;I am sure a lot of you are frustrated at your colleagues, not being here at this conference. Not being passionate about code the way you are. And I am sure you are trying to teach them. You are talking about design patterns, test driven development, refactor your code making it readable.&lt;/p&gt;

&lt;p&gt;I am saying that they are not ready for that. They are not aware that there is a need that could be filled by learning these things. And until we make them aware of that need, there is no meaning in trying to teach them.&lt;/p&gt;”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;&lt;a href="http://www.infoq.com/presentations/Good-to-Great-Developer-Chris-Hedgate"&gt;From Good to Great Developer&lt;/a&gt; - Chris Hedgate&lt;/em&gt;</description><link>http://sebastianlab.com/post/232902215</link><guid>http://sebastianlab.com/post/232902215</guid><pubDate>Wed, 04 Nov 2009 09:31:04 -0500</pubDate><category>code</category><category>craftsmanship</category></item><item><title>The bouncer pattern</title><description>&lt;p&gt;Last week, J.B Rainsberger talked at &lt;a href="http://agilephilly.com"&gt;Agile Philly&lt;/a&gt; about &lt;a href="http://www.infoq.com/presentations/integration-tests-scam"&gt;integration tests are a scam&lt;/a&gt; and explained to the audience the bouncer pattern.&lt;/p&gt;
&lt;p&gt;I am going to paraphrase the concept.&lt;/p&gt;
&lt;p&gt;Imagine you own a night club. It’s pretty big with 7 bars around a dance floor. Bartenders must ask for your ID before you get a drink. Some bartenders are pretty good at remembering faces, others not that much. It’s Saturday night and the place is packed. As the night goes on you start to get pissed off at the fact that you need to show your ID for almost every drink. Getting a drink gets slow and sloppy. People stop showing up at your night club.&lt;/p&gt;
&lt;p&gt;So you push that responsibility out of the bartenders and hire a bouncer that can check for IDs at the entrance of the club. Now, the bartenders understand that if you are the club, you pass the requirement for drinking. Not only this speed things up, it also minimize the possibility of something going wrong (null pointer if I don’t have my ID anyone?).&lt;/p&gt;
&lt;p&gt;So that’s the bouncer pattern. Instead of doing defensive programming all over the code base, check for basic correctness at the edge of the class/module/service. The code becomes easier to read and simpler to maintain.&lt;/p&gt;
&lt;p&gt;If we use constructor dependency injection to construct objects/module/service, we can help out our bouncer keep the junk out of our code.&lt;/p&gt;</description><link>http://sebastianlab.com/post/231425916</link><guid>http://sebastianlab.com/post/231425916</guid><pubDate>Mon, 02 Nov 2009 22:16:52 -0500</pubDate><category>code</category><category>patterns</category></item><item><title>My learnings from Code Retreat Philly</title><description>&lt;a href="http://coderetreat.ning.com/profiles/blogs/my-learnings-at-code-retreat"&gt;My learnings from Code Retreat Philly&lt;/a&gt;</description><link>http://sebastianlab.com/post/231389020</link><guid>http://sebastianlab.com/post/231389020</guid><pubDate>Mon, 02 Nov 2009 21:38:54 -0500</pubDate><category>coderetreat</category></item><item><title>sundayconf</title><description>&lt;p&gt;&lt;img height="323" width="279" src="http://s3.amazonaws.com/sebastianpublic/images/sundayconf/sundayconf.png"/&gt;&lt;/p&gt;
&lt;p&gt;For this sundayconf, I have a good selection of music, no, videos, no, code, no, music!&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Unclebob’s prime factors Kata&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Even though the video is called “Prime Factor Kata (Rough)”, the flow of the kata is perfect. The music matches Unclebob’s movement from the spec to the code and back. I had mixed feelings about the choice of IntelliJ but was surprised with the “introduce variable” popup. I wished I could have seen more refactoring tools. After hearing great things about this kata on twitter this week, the video lived to his expectations.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.viddler.com/explore/unclebobmartin/videos/2/"&gt;Here is the video&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Corey Haines’ Number to LCD&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Corey’s kata was more challenging that Unclebob’s and turned out to be great. The resolution of the video could have been a little better but it was easy to follow what was going on. The music choice was on target: crescendos and allegros kept me wondering about what was going to happen next. But I wish I could hear Corey’s narrative for some portion of the kata. Especially at the beginning. With 2 examples, Corey focuses on refactoring his code for a few minutes. He moves blocks of code, create structures, extract variables and keeps running the tests. The beautiful thing about all this refactoring is that adding the next 8 examples was a breeze.&lt;/p&gt;
&lt;p&gt;That reminded me of a &lt;a href="http://c2.com/cgi/wiki?SharpenTheSaw"&gt;quote&lt;/a&gt; I saw this week about sharpening the saw:&lt;/p&gt;
&lt;p&gt;&lt;i&gt;If I had eight hours to chop down a tree, I’d spend six sharpening my axe.&lt;/i&gt; - Abraham Lincoln.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://katas.softwarecraftsmanship.org/?p=12"&gt;Here is the video&lt;/a&gt;&lt;/p&gt;</description><link>http://sebastianlab.com/post/216594965</link><guid>http://sebastianlab.com/post/216594965</guid><pubDate>Sun, 18 Oct 2009 17:30:02 -0400</pubDate><category>sunday</category></item><item><title>Starting a code study group</title><description>&lt;p&gt;We are starting a new code study group at work. Here is the email that I sent to the group to kick it off:&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;
&lt;blockquote&gt;Starting a code study group&lt;br/&gt;&lt;br/&gt;What is it?&lt;br/&gt;A code study group is a bunch of people that choose an open source project or library and read it like a book. &lt;br/&gt;&lt;br/&gt;As they go through it, they take notes; identify patterns, critique techniques and post a report. &lt;br/&gt;&lt;br/&gt;They look at code with a critical eye. Various style of code will amaze them, amuse them and challenge them. They learn new paradigms that completely changes the way they approach problems.&lt;br/&gt;&lt;br/&gt;They study the work of masters to improve their skills.&lt;br/&gt;&lt;br/&gt;They meet twice a month and nominate 2 to 200 lines of code to study.&lt;br/&gt;&lt;br/&gt;Why study code? 
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://c2.com/cgi/wiki?SharpenTheSaw"&gt;To sharpen the saw&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;To use existing code to reflect on our own capabilities&lt;/li&gt;
&lt;li&gt;To understand new code quickly&lt;/li&gt;
&lt;li&gt;To identify code patterns quickly&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br/&gt;You can even learn from bad code.&lt;br/&gt;&lt;br/&gt;This is not something new. Musician, painters, poets get together to study the work of masters. They learn their work and quiz each other.&lt;i&gt;&lt;br/&gt;&lt;/i&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Since we are heavy on the java side, I created an online survey with 4 open source libraries that could be interesting to study:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mockito&lt;/li&gt;
&lt;li&gt;FitNesse&lt;/li&gt;
&lt;li&gt;Spring&lt;/li&gt;
&lt;li&gt;Jakarta Commons&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br/&gt;I can’t wait to see what are the results of the survey. I am going to keep it open until Monday.&lt;/p&gt;</description><link>http://sebastianlab.com/post/213974486</link><guid>http://sebastianlab.com/post/213974486</guid><pubDate>Thu, 15 Oct 2009 15:27:15 -0400</pubDate><category>code</category><category>study group</category></item><item><title>Philadelphia's code retreat</title><description>&lt;p&gt;&lt;img height="553" width="487" alt="code retreat" src="http://s3.amazonaws.com/sebastianpublic/images/code-retreat-04.png"/&gt;&lt;/p&gt;
&lt;p&gt;At code retreat, we retreat from the world to advance in our craft. We sharpen our saws, together.&lt;/p&gt;
&lt;p&gt;We retreat from production and business value to increase our production capacity, our quality, our velocity, our ability to produce business value.&lt;/p&gt;
&lt;p&gt;We retreat from immersion in deep technology issues to advance in our ability to learn and adopt to any technology well.&lt;/p&gt;
&lt;p&gt;We retreat from our fears, and embrace new practices and patterns.&lt;/p&gt;
&lt;p&gt;We retreat from our local ponds and swim in a larger pool. We connect with other passionate coders who we seldom get to code with. We make new connections and learn new lessons.&lt;/p&gt;
&lt;p&gt;At code retreat everything is about the journey and nothing about the destination.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Join us on Sunday November 1st, 2009 in Philadelphia&lt;/b&gt; at &lt;a href="http://www.indyhall.org/"&gt;indyhall&lt;/a&gt;. We will start at 9am and will be practicing &lt;a href="http://en.wikipedia.org/wiki/Conway's_Game_of_Life"&gt;Conway’s game of life&lt;/a&gt; in &lt;b&gt;Java&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;Here is a approximate agenda of the day:&lt;/p&gt;
&lt;p&gt;We’ll spend 15 mins introducing the event, drinking coffee, thanking the sponsors, answering questions and describing the game of life problem.&lt;/p&gt;
&lt;p&gt;We will break down into pairs and run an iteration of 45 mins.&lt;/p&gt;
&lt;p&gt;Take a 10 minute break and throw away the code (this could be hard!), switch pairs and get ready to start the next iteration.&lt;/p&gt;
&lt;p&gt;Run another iteration and throw away more code.&lt;/p&gt;
&lt;p&gt;We will be exploring new things to try: coding with no if statements, using TDD as you mean it. 1-line methods, interfaces everywhere, etc…&lt;/p&gt;
&lt;p&gt;We have lunch when it makes sense and see if we have something to demo.&lt;/p&gt;
&lt;p&gt;After lunch, iterations might run shorter switching pairs after each iteration and always throwing away the work.&lt;/p&gt;
&lt;p&gt;Finish the afternoon around 5pm or so and head for beers across the street to&lt;a href="http://www.nationalmechanics.com/"&gt; National Mechanics&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Be ready&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Bring your laptop with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Java 1.5 (minimum)&lt;/li&gt;
&lt;li&gt;Git&lt;/li&gt;
&lt;li&gt;An IDE (Eclipse, intelliJ, etc…)&lt;/li&gt;
&lt;li&gt;If you use Eclipse, consider getting J.B Rainsberger’s &lt;a href="http://github.com/jbrains/coderetreat-eclipse"&gt;game of life template for eclipse&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you use intelliJ, consider adding an empty template like JB’s.&lt;/p&gt;
&lt;p&gt;We will have coffee, soft drinks, and snacks available. Lunch will be supplied. However we are still looking for a food sponsor. Help us out!&lt;/p&gt;
&lt;p&gt;If you are going to attend, please RSVP at &lt;a href="http://coderetreat.ning.com/events/code-retreat-philadelphia-java"&gt;http://coderetreat.ning.com/events/code-retreat-philadelphia-java&lt;/a&gt; or at coderetreatphilly@gmail.com. We may be overbooked, so the RSVP is required to determine headcount.&lt;/p&gt;
&lt;p&gt;Please send any questions you might have to coderetreatphilly@gmail.com.&lt;/p&gt;

&lt;p&gt;Hope to see you there!&lt;/p&gt;</description><link>http://sebastianlab.com/post/209531480</link><guid>http://sebastianlab.com/post/209531480</guid><pubDate>Sat, 10 Oct 2009 17:24:00 -0400</pubDate><category>code retreat</category></item><item><title>My learnings from AgileTour 2009</title><description>&lt;p&gt;94 people gathered for the first &lt;a href="http://www.agiletour.org/"&gt;AgileTour&lt;/a&gt; stop in the suburbs of Philadelphia. A good turn out for a mini 4 hours conference! &lt;a href="http://twitter.com/ravindar"&gt;Ravi&lt;/a&gt; and I welcomed the attendees and gave a little intro about &lt;a href="http://agilephilly.ning.com/events/agile-tour-at-philly"&gt;the conference and the speakers&lt;/a&gt;. After that, I spent most of my time in the Open Jam.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Agile assessments&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;We commented on the recent efforts to assess agility.&lt;/p&gt;
&lt;p&gt;Bob Martin, Ron Jeffries, Chet Hendrickson, Brian Marick and Jim Shore are working on a &lt;a href="http://xprogramming.com/blog/tech/developer-certification/"&gt;scrum certified developer program&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But wait! Ken Schwaber and Microsoft are working on &lt;a href="http://www.scrum.org/scrum-developer-courses/"&gt;another scrum certified developer program&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Joshua Kerievsky started a &lt;a href="http://groups.google.com/group/assessing-agility?hl=en"&gt;mailing list&lt;/a&gt; to study more alternative assessments.&lt;/p&gt;
&lt;p&gt;A big surprise for me was learning more about Ken Schwaber’s and Microsoft alliance. Their scrum developer certification is &lt;b&gt;not&lt;/b&gt; language agnostic. I am not sure of the value of being a .NET scrum certified developer. It looks like they are matching practices like Continuous Integration or TDD to a specific Microsoft tool. I am not sure how this is valuable for the industry. As a side joke, I look forward to the MS pairing tool. That is, if pairing gets into their “approved list of practices”.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Certifications&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;We talked about the evilness of the scrum certification scheme and the false sense of thinking that when you are certified, there is no need for you to study more about the topic.&lt;/p&gt;
&lt;p&gt;We tend to blame certifications but is it maybe an organization or people problem? If we look at certification as the minimum basic knowledge to perform a job, why assuming that &lt;i&gt;basic&lt;/i&gt; is enough? &lt;i&gt;Basic&lt;/i&gt; barely makes the cut.&lt;/p&gt;
&lt;p&gt;Somebody made the point that Scrum is sold as a “silver bullet”, an all-in-1-box solution. Organizations or teams are not encouraged to look outside of scrum because they are told that scrum will solve all their needs.&lt;/p&gt;
&lt;p&gt;I agree with that, but it does not matter what methodology you use if you (and your organization) aren’t continuously learning?&lt;/p&gt;
&lt;p&gt;Forget scrum, look at the technical field. How many of us (programmers) learn a new language every year? Let me lower the bar: How many of us are somewhat comfortable in more than 1 programming language?&lt;/p&gt;
&lt;p&gt;Since it seems impossible to avoid the birth of a scrum developer certification, I am embracing it. I hope that my company will jump all over it and mandates for all of us to become certified.&lt;/p&gt;
&lt;p&gt;If it takes a piece of paper to make my life easier, I am all for it. Not having to argue about the benefits of TDD, pairing, frequent checkins everyday is a welcome change. I don’t expect a big change overnight, but at least, it will be a starting point.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Wrap up&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;I got a lot of energy out of this conference. It was nice to see old friends and make new ones. I look forward to what we can do next with Agile Philly. We have plenty of new ideas.&lt;/p&gt;</description><link>http://sebastianlab.com/post/207109896</link><guid>http://sebastianlab.com/post/207109896</guid><pubDate>Wed, 07 Oct 2009 20:36:51 -0400</pubDate><category>agile</category><category>agiletour</category><category>conference</category></item><item><title>My learnings from Concept Camp 2009</title><description>&lt;p&gt;I quickly checked the weather before packing for ConceptCamp2009. “Mmmm… rain Saturday night. It won’t be that bad.”&lt;/p&gt;
&lt;p&gt;Well…There was a lot of it but it did not stop us from having fun, talk about code, patterns and play some team building exercises like beer pong and twister. Yep, twister.&lt;/p&gt;
&lt;p&gt;After a good camping breakfast, we protected ourselves from the rain and started the conference.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://s3.amazonaws.com/sebastianpublic/images/conceptcamp2009/IMG_0330.JPG"/&gt;&lt;/p&gt;

&lt;p&gt;I did not take notes during the talks, being a small group, the interaction was more important than being head’s down try to type stuff.&lt;/p&gt;
&lt;p&gt;Note that there was almost no powerpoint use. We did not have a projector and this made for better sessions IMO.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Chris Ballance (@Ballance) “Design Patterns for Scalability”&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Chris’ talk was a nice warm up for the day. He walked us through the patterns to build a scalable web site (MVC, loose coupling, Stateless, Queueing, ..).&lt;/p&gt;
&lt;p&gt;Using twitter and facebook as references, he gave examples on how the 2 sites scaled to what they are today.&lt;/p&gt;
&lt;p&gt;I found his love/hate relationship with the flyweight pattern interesting ;)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Steve Andrews (@SteveAndrews) “Community Speaker Tips and Tricks”&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Steve speaks at many user groups and Microsoft conferences. He shared with us ~60 tricks to make your technical talk more effective. From brainstorming, mind mapping, outlining, having 3 copies of your talk as backup, inspecting the stage before your session, knowing your audience, dealing with a difficult person in the audience, timing yourself and wrapping up.&lt;/p&gt;
&lt;p&gt;I learned that Microsoft TechEd has a “presentation competition” similar to “Programming with the stars” at the Agile conference. I thought that it was an interesting concept and a great way to get feedback from your talks even if you are not participating.&lt;/p&gt;
&lt;p&gt;If you are on Windows, a little tool called ZoomIt does what CTRL+ two finger scroll does on the mac: zooms where your mouse is. Download it here: &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb897434.aspx"&gt;&lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb897434.aspx"&gt;http://technet.microsoft.com/en-us/sysinternals/bb897434.aspx&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Matthew Podwysoki (@mattpodwysocki) “F# Parallel Programming”&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;I am not a .NET person but I was impressed with F#. Matt’s knowledge and presentation was full of great and simple examples that showed the power of this language. Sharing syntax with Haskell and Python, F# felt easy and fun to play with.&lt;/p&gt;
&lt;p&gt;Looks like F# is getting a lot of attention in the Bank and Insurance industry.&lt;/p&gt;
&lt;p&gt;Matt got me interested into giving F#, Haskell or Clojure a try before the end of the year. I promised to learn a functional language before 2010.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Sara Chipps (@SaraJChipps) “Choosing Your Patterns - Architecture and Design for the Freelancer or Hobbiest”&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Sara talked about her super dooper secret project that she’s launching next week. Shhh! Can’t tell you yet but it’s clever and awesome!&lt;/p&gt;
&lt;p&gt;She shared with us her troubles building this product, how she designed her software layers and how her mom gave her detailed feedback about her site ;-)&lt;/p&gt;
&lt;p&gt;Sara and a bunch of other guys recommended Balsamic, a screen mockup utility: &lt;a href="http://www.balsamiq.com/products/mockups"&gt;http://www.balsamiq.com/products/mockups&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It was interesting to hear how she outsourced some of her work. After reading the “4 hour workweek”, I am willing to give it a try.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Scott Allen (@OdeToCode) “Design Patterns for Victory!”&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Scott Allen gave an awesome closing keynote and I don’t want to spoil it for you so go and read it here: &lt;a href="http://odetocode.com/Blogs/scott/archive/2009/09/27/13241.aspx"&gt;&lt;a href="http://odetocode.com/Blogs/scott/archive/2009/09/27/13241.aspx"&gt;http://odetocode.com/Blogs/scott/archive/2009/09/27/13241.aspx&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ConceptCamp2009 was a success! Congratulations to Sara and Erika for making it happen! Will be back next year for more.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://s3.amazonaws.com/sebastianpublic/images/conceptcamp2009/IMG_0333.JPG"/&gt;&lt;/p&gt;</description><link>http://sebastianlab.com/post/198624532</link><guid>http://sebastianlab.com/post/198624532</guid><pubDate>Sun, 27 Sep 2009 18:29:30 -0400</pubDate><category>conceptcamp2009</category></item><item><title>GitHub setup in 13 steps</title><description>&lt;p&gt;I have used git in the past but I am a newbie to GitHub. Here are the 13 steps that I followed to get my first repository in GitHub.&lt;/p&gt;
&lt;p&gt;1. Upgrade to the latest git: &lt;a href="http://git-scm.com/"&gt;http://git-scm.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2. Open a github account: &lt;a href="http://github.com/signup"&gt;http://github.com/signup&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;3. Add GitHub’s settings to git: &lt;a href="http://help.github.com/git-email-settings/"&gt;http://help.github.com/git-email-settings/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;4. Generate a SSH key: &lt;a href="http://help.github.com/mac-key-setup/"&gt;http://help.github.com/mac-key-setup/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;5. Create a repository: &lt;a href="https://github.com/repositories/new"&gt;https://github.com/repositories/new&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;6. $ mkdir my-project&lt;/p&gt;
&lt;p&gt;7. $ cd my-project/&lt;/p&gt;
&lt;p&gt;8. $ git init&lt;/p&gt;
&lt;p&gt;9. $ touch README&lt;/p&gt;
&lt;p&gt;10. $ git add README&lt;/p&gt;
&lt;p&gt;11. $ git commit -m “first commit”&lt;/p&gt;
&lt;p&gt;12. $ git remote add origin git@github.com:/&lt;your-user-name-here&gt;/my-project.git&lt;/p&gt;
&lt;p&gt;13. $ git push origin master&lt;/p&gt;</description><link>http://sebastianlab.com/post/186241841</link><guid>http://sebastianlab.com/post/186241841</guid><pubDate>Sat, 12 Sep 2009 13:42:22 -0400</pubDate><category>git</category></item><item><title>Right after the Open Jam session “Is scrum evil?” at...</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_kp5m4zHpOQ1qz6vqbo1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Right after the Open Jam session “Is scrum evil?” at Agile 2009, &lt;a href="http://benrady.com/"&gt;Ben Rady&lt;/a&gt; got me into thinking about my next set of stickers.&lt;/p&gt;
&lt;p&gt;Simple instructions: fill in the blanks with a marker.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;“Hello, my name is Sebastian and I have been scrum free for 2 years 7 months and 3 days”. &lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;“Hello, my name is Sebastian and I have been scrum free for eva”. &lt;/i&gt;&lt;/p&gt;

&lt;p&gt;Now, this will be cool on a t-shirt.&lt;/p&gt;</description><link>http://sebastianlab.com/post/174903109</link><guid>http://sebastianlab.com/post/174903109</guid><pubDate>Sat, 29 Aug 2009 15:58:11 -0400</pubDate><category>stickers</category><category>Agile</category></item><item><title>"If you are going to take into account stakeholder feedback, you cannot commit ahead of time to 100%..."</title><description>“If you are going to take into account stakeholder feedback, you cannot commit ahead of time to 100% of what you are going to do. You can only commit to 50% or 70% of what will be delivered in a release.”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;IBM leader about their biggest problem for Agile adoption: the governance system a.k.a product management. Quoted by Mary Poppendieck during her “workflow and schedule are orthogonal” during her Agile 2009 talk.&lt;/em&gt;</description><link>http://sebastianlab.com/post/171069835</link><guid>http://sebastianlab.com/post/171069835</guid><pubDate>Tue, 25 Aug 2009 01:24:00 -0400</pubDate></item><item><title>A breakfast story about Quality</title><description>&lt;p&gt;How’s that for a ambiguous and confusing sentence: “As an organization, we must focus on quality.”&lt;/p&gt;
&lt;p&gt;Sorry, I must focus on what? Oh, yes “quality”. And what is “quality” for you, dear Organization?&lt;/p&gt;
&lt;p&gt;Sit down and observe everyone running in different directions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Quality is the satisfaction of requirements&lt;/li&gt;
&lt;li&gt;Quality is the absence of bugs&lt;/li&gt;
&lt;li&gt;Quality is the number of features of a product&lt;/li&gt;
&lt;li&gt;Quality is the testability and coverage of the code&lt;/li&gt;
&lt;li&gt;Quality is the user experience&lt;/li&gt;
&lt;li&gt;Quality is delivering value to the customer&lt;/li&gt;
&lt;li&gt;Quality is being predictable and delivering on time&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That’s the problem. Quality is abstract and subjective.&lt;/p&gt;
&lt;p&gt;None of the definitions above are correct but if you look at them together, they are all correct.&lt;/p&gt;
&lt;p&gt;Picture yourself taking a knife and cutting a thin slices across all of them every time you start a new user story. Now, spread it in your toast. Mmmmmm….yummy…Quality tastes good.&lt;/p&gt;</description><link>http://sebastianlab.com/post/168129985</link><guid>http://sebastianlab.com/post/168129985</guid><pubDate>Fri, 21 Aug 2009 08:41:00 -0400</pubDate><category>quality</category></item><item><title>The circular argument</title><description>&lt;p&gt;“We’re doing the best possible job of software development.&lt;/p&gt;

&lt;p&gt;Therefore, if other people are doing better, their problems must be easier.&lt;/p&gt;

&lt;p&gt;Therefore, we never find out what other people are capable of doing in software development.”&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;G. Weinberg in Quality Software Managment: System Thinking&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This actually not only appears at a company level but also at the departamental level.&lt;/p&gt;

&lt;p&gt;Teams sitting accross each other fall into this pattern. Programmers sharing their practices are ignored by others because they believe their business domain is different. Even when the practice have nothing dependent on the domain.&lt;/p&gt;

&lt;p&gt;Usually, the more push back you get, the more desperate the team is. They know something is wrong, ask for advice and then discard it.&lt;/p&gt;

&lt;p&gt;Why?&lt;/p&gt;

&lt;p&gt;It’s time consuming to give it a try? Too intrusive? Too challenging? Fear of failure? No management support? Out of your comfort zone?&lt;/p&gt;

&lt;p&gt;I am sure glad I found the name for this: “the circular argument”.&lt;/p&gt;</description><link>http://sebastianlab.com/post/158803952</link><guid>http://sebastianlab.com/post/158803952</guid><pubDate>Sat, 08 Aug 2009 19:43:06 -0400</pubDate><category>system thinking</category></item><item><title>The Tao of Programming</title><description>&lt;p&gt;Reading Weinberg’s book of Systems Thinking, I ran into this excellent excerpt from the “Tao of Programming” from G. James. Probably my next read.&lt;/p&gt;

&lt;p&gt;Why are the programmers nonproductive?
Because their time is wasted in meetings.&lt;/p&gt;

&lt;p&gt;Why are the programmers rebellious?
Because the management interferes too much.&lt;/p&gt;

&lt;p&gt;Why are the programmers resigning one by one?
Because they are burnt out.&lt;/p&gt;

&lt;p&gt;Having worked for poor management, they no longer value their jobs.&lt;/p&gt;</description><link>http://sebastianlab.com/post/157402781</link><guid>http://sebastianlab.com/post/157402781</guid><pubDate>Thu, 06 Aug 2009 16:57:28 -0400</pubDate></item><item><title>"Quality is not the absence of error."</title><description>“Quality is not the absence of error.”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;I am enjoying &lt;a href="http://www.amazon.com/Quality-Software-Management-Systems-Thinking/dp/0932633226/ref=sr_1_2?ie=UTF8&amp;qid=1249432686&amp;sr=8-2"&gt;Gerald M. Weinberg’s “Quality Software Management”&lt;/a&gt; book. You should repeat this sentence in your head a few times and then chew on it for a little while.&lt;/em&gt;</description><link>http://sebastianlab.com/post/155997315</link><guid>http://sebastianlab.com/post/155997315</guid><pubDate>Tue, 04 Aug 2009 20:41:31 -0400</pubDate><category>quality</category></item><item><title>The fear of working in legacy code</title><description>&lt;p&gt;Over the past weeks, I have been lucky to pair with a bunch of programmers in a large legacy java application. As we were adding tests before new features, we made important design changes (mainly related to the Single Responsibility Principle, Law of Demeter, Inversion of Control and DRY). Here are some of the fears that we experienced when working in legacy code:&lt;/p&gt;
&lt;p&gt;&lt;b&gt;It’s not my domain&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Domain knowledge is always a plus but it can backfire at you when you get too comfortable in it. Especially if you are not willing to step out of it. Because I was working outside of mine, I told them to blame me if something did not look right during the code review with the experts. Most of the time, we just wanted to move behavior to the class where it belongs.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;It’s not my code&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Reading somebody else code can sometimes be a challenge. We all have different ways of attacking a problem. Heck, even reading your own code can be a problem sometimes. But in bigger corporations, this is about working in silos, “throwing code over the wall” and endless “steel threads”. Collective code ownership is accepted by some but refused by others. It all depends on the impact of the change that we are about to make. We checked with our “&lt;a href="http://www.martinfowler.com/bliki/ServiceCustodian.html"&gt;service custodians&lt;/a&gt;“ if we thought it could get messy but always doing the change and not throwing it to another group.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;There are no tests&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;You need to do a small change to this big method on this big class but there are not tests for it. What do you do? Put the whole class under tests? Put the whole method under tests? In some cases, after a few tries, we found that we were able to put the method under tests. Sometimes, we had to extract our new behavior elsewhere and add tests there. Not feeling overwhelmed and knowing that we can’t solve all issues in one morning was important.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;I am making the code uglier in order to test it&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;I always refer to &lt;a href="http://www.michaelfeathers.com/"&gt;Michael Feathers&lt;/a&gt; for this one:&lt;/p&gt;
&lt;p&gt;&lt;i&gt;“You can start to grow areas of very good high-quality code in legacy code bases, but don’t be surprised if some of the steps you take to make changes involve making some code slightly uglier. This work is like surgery. We have to make incisions, and we have to move through the guts and suspend some aesthetic judgment. Could this patient’s major organs and viscera be better than they are? Yes. So do we just forget about his immediate problem, sew him up again, and tell him to eat right and train for a marathon? We could, but what we really need to do is take the patient as he is, fix what’s wrong, and move him to a healthier state. He might never become an Olympic athlete, but we can’t let “best” be the enemy of “better.” Code bases can become healthier and easier to work in.”&lt;/i&gt; From &lt;a href="http://www.amazon.com/Working-Effectively-Legacy-Robert-Martin/dp/product-description/0131177052"&gt;Working effectively with legacy code&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;I don’t have the time&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;You just want to get there, add a method or two and get out quickly. There are simple techniques can you can use:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Extract a new method from the existing one and test it&lt;/li&gt;
&lt;li&gt;Extract a new class and test it&lt;/li&gt;
&lt;li&gt;Wrap the existing method and add new behavior you can test&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And what if doing that you leave the code in a better place? Simple operations like removing unused imports, changing a method name to clarify the intent can help. Remember, code is your house, you have to live in it.&lt;/p&gt;</description><link>http://sebastianlab.com/post/155272431</link><guid>http://sebastianlab.com/post/155272431</guid><pubDate>Mon, 03 Aug 2009 21:14:00 -0400</pubDate><category>legacy</category></item></channel></rss>
