Big Chimpin'
Avatar

Corey Haines

Vcard Download vCard   what is this?
Rss_icon

Recent Activity


Filter by:
All
  • Learn To Type Week - Day 3
    (interested in what all the fuss is about? Read the original post)

    Wow! Another day has gone by in "Learn To Type" week. I've had a great time watching people mark their progress on twitter (hashtag: #learn2typewk): everything from home row stats to switching to dvorak. I'd highly recommend putting a persistent search into your twitter client for #learn2typewk, so you can see all the people who are working with you. Tomorrow is Day 3! Almost halfway done, so don't despair, we're almost there!

    There are a lot of people putting their speeds and accuracy counts up; it is really neat to see the improvement. Now that 2 days have gone by, try to set a realistic goal for the end of the week. Speed isn't what it is about, though, perhaps you want to consistently type effectively for all the rows without looking.

    What to do today?

    As always, I recommend starting with a baseline: freetypinggame.net's 1-, 3- or 5-minute tests. Then, continue the practicing you started.

    I've noticed that when I'm doing practices, I find it easy to stay on a single one until I've 'mastered' it. So, I might be practicing the home row keys and find that I have them down, but maybe I could do them faster. Don't worry about the speed, just move on to the next exercise. Remember, speed comes once the techniques are in place.

    As always, don't forget to intersperse your practice with fun! Typeracer.com is a great way to reap the benefits of all that practice. I'm keeping the racetrack open at http://vurl.me/TEL, so feel free to post a challenge on twitter with the hashtag #learn2typewk. If you are registered on the site, you can create your own track too and put out a private challenge.

    Just think, no matter what, if you participate, you will win! Huzzah! That's more than can be said for a lot of things.

  • Learn To Type Week - Day 2
    (interested in what all the fuss is about? Read the original post)

    Good morning, everyone! I meant to have this up last night, but I misjudged my timing. Sorry to the people in Europe, already being long into the afternoon and all.

    Day 2! I've been excited to see how much the response and participation from people for "Learn To Type" week. There are people who are trying to learn to touch-type for the first time, people working hard to overcome years of bad technique, people who are moving from QWERTY to Dvorak, and loads and loads of racing on typeracer.com. But remember it isn't about your speed, it is about your technique. Speed will come, but technique and form is what we are practicing. Of course, everyone needs fun, so we meet on typeracer for some balls-out typing competition.

    What to do today?

    I would recommend starting with a baseline on freetypinggame.net's 1-, 3- or 5-minute tests. Then, continue with the lessons you started yesterday.

    If you have started some lessons, continue them. How are you feeling on the home row? Move on to the lessons that include other parts of the keyboard. I would recommend you keep on the path you started yesterday, as those lessons are built for incremental learning.

    If you already touch-type, but are working on your form, then I highly recommend doing a few 5-minute tests on freetypinggame.net; I like the fairy tales. My goal this week is to make it all the way through #26: the cobbler and the elves (not to be confused with the keebler elves).

    Don't forget to intersperse it with some fun. If you want to take a break, then head on over to typeracer.com. I'll be keeping the coreyhaines track open, so you should be able to use that as a primary meeting point if you want to race other "Learn To Type Week" participants. If you want to call some people into a game, you can post the shortened url http://vurl.me/TEL on twitter with the hashtag #learn2typewk; people might be up for a race. Otherwise, go on the open tracks and race away.

    And remember, it isn't about where you are today (no cries of 'I Suck!'), but about where you will be soon (only cries of 'I'm getting better!').

    Keep it up today!

  • Learn To Type Week - Day 1
    As I wrote in my last blog post, tomorrow starts "Learn To Type Week." What does this mean? I encourage you to read that post to understand the motivation. For now, though, let's talk about this week. We had a lot of fun over the past couple days with typeracer.com, and I hope to keep having fun with it, but now starts the work for the week.

    I will be writing a blog post every night with some ideas and encouragement to keep you going through this week, spending 30 minutes a day working on your touch-typing. Are you already touch-typing? Maybe you want to spend the time improving your speed. Or, work on the top row (numbers/symbols).

    On Day 1, first thing, here's my recommendation: go here and do either a 1-, 3- or 5-minute test. If you are just starting to touch-type, then do the 1-minute test; if you are an experienced touch-typist, do the 5-miute. But here's the catch: do it with a piece of paper over your hands: no peeking! The key for this is not to do it quickly, but to do it with 0 mistakes. This is your real touch-typing speed. So, do it a couple times, if you want, until you are satisfied. This is what you are going to measure yourself against over the course of the week. After you do that, mark it down. Why not put it on twitter or your blog? Let's do this together, and we will be more likely to keep it up and encourage each other.

    Now, choose your typing lessons (I have some links on the original blog post, and you can always google for them) and start. Are you just learning to touch-type with home row? Then start going through the step-by-step tutorials. Are you an experienced home-row touch-typist wanting to get better? Maybe do the 5-minute typing test a couple times, interspersing a few trips to typeracer.com. Go to this site and play some games: what's your best score at Keyboard Revolution? Gotta Love The Duck!

    Tomorrow, we'll reconvene and do some more.

    And remember, this isn't about where you are now (no cries of 'I Suck!' only cries of 'I'm Getting Better!'), but where you are going to be, where you'll be in a week. So, try to make positive comments about your status. Believe me, it will help.

  • Learn To Type Week!
    As I've traveled around and programmed with a lot of different people, I've noticed a really frightening thing: in general, programmers don't type correctly. I'm not sure why this is, but it makes me sad. Most of the people I meet that don't touch type still can bang away a lot of words a minute, but if you watch their heads, it is like a bobbing robin, constantly looking down to see where their hands are. What a waste of motion and context switching.

    Typing is a fundamental skill for programmers. We spend our days manipulating text, so it makes sense that you should have it mastered. In a way, it would be like hiring a carpenter and seeing them flailing around with the screwdriver, missing the screw sometimes, maybe poking their finger. What would you think? That's how it looks when you are hunt-and-pecking. Embarrassing!

    So, I thought I would put a challenge out there: Learn To Touch Type! For the most part, you know where the keys are, it is just a matter of quieting your hands down and learning the home row position. I wager that, for most people, it would take about a week of daily 30-minute practices. A Pomodoro! That's all.

    In fact, why not do it next week, July 12th - July 18th. I declare next week to be "Learn To Type Correctly" week (hashtag: #learn2typewk)! If we do it as a community, supporting each other, then it is more likely that we'll shed the baggage of bad typing skills. Come on, you can do it! Blog about it, twitter about it, get the word out. Everyone will feel better, and imagine your pride when you sit down at a keyboard and don't ever have to look at your hands.

    But, Corey, you say, I thought typing wasn't the bottleneck. No, it isn't, but ineffective typing can be. Having to look down at your hands disrupts your flow. When you can just let the words come out without thinking, you will be much more effective.

    There are plenty of online typing courses that you can use. Here's a couple I checked out:

    This one is very structured, using extreme repetition to push the positions into your head. Try it out.


    This is one of my favorites. I'm not sure about the actual lessons, but the games are a lot of fun (I like Keyboard Revolution).


    This is a step-by-step lesson plan. You have to register, but it keeps rankings and lets you print out certificates.

    This is just a short list. If you don't like them, feel free to use another.

  • Interview with J.B. Rainsberger and me When we were in Romania, teaching a TDD class and facilitating a coderetreat, Maria and Alex sat down and asked us some questions. The first part includes some of our thoughts on education and software craftsmanship.

    My favorite phrase: "Every 20-person software development team is a 6-person team trying to get out."

    Note: Okay, okay, perhaps 'scourge of the industry' was a rough turn of phrase that I used. :)

    Enjoy!

    I'm going to talk to Maria about opening it up, so I can embed it here, but, until then, you can view it on vimeo.
  • J.B. Rainsberger - On Coderetreat Since these videos with J.B. Rainsberger were taken after facilitating the Bucharest coderetreat, I thought it appropriate that we spend some time talking about coderetreat. J.B. was a participant in the very first retreat in January of 2009 in Ann Arbor. Since then, we've both been at many of them, both participating and facilitating.

    J.B. and I talk about the goals of coderetreat, how they've changed, what the future holds and what the benefits of them are. This is a great conversation about what is a fundamental technique for practicing basic software development principles.

    Enjoy! And, as always, thoughtful comments are appreciated, blog posts are better! :)

  • How to be a software craftsman While in London, I gave a talk to the London Ruby Users Group (LRUG). This was a shortened version of the talk I did earlier in the day at QCon. It is about one of the essences of software craftsmanship: being a better developer and how that relates to the terms 'apprentice' and 'journeyman.' LRUG is hosted at Skills Matter, and they put the video of my talk online.

    Plus, bonus: definitive answer to the question of how to be a software craftsman!

    I had a great time talking to them, and it was very encouraging to see the number of hands that were raised when I asked how many people practiced test-driven development. Thanks to various influences, test-first and test-driven development are pretty common when you talk to people active in the ruby community.

    After the talk, we went to a bar. Thanks to everyone for the great conversations and ideas.
  • Blaming your tools

    This blog post "Human-tool intellectual partnership" made me think on our own field. Here's some thoughts of mine.

    As long as I've been around, I've heard people bring up the phrase "a poor craftsman blames his tools." With the rise in the software craftsmanship movement and the associated (oft-misrepresented/misunderstood/misapplied) terminology, this happens even more often.

    When someone talks about how you are more productive with Rails than with some other frameworks, out comes the 'a poor craftsman blames his tools.'

    When you talk about how using a dynamic language offers affordances and design possibilities that a static language, such as C# or Java, doesn't you can hear the cries of 'a poor craftsman blames his tools.'

    How often would you see a professional, custom-furniture maker use a saw to pound in a nail, or use an awl to attach a screw. Could they pound in a nail with a saw? Sure, I bet they could. But they don't. They choose the right tool for the job. And therein lies the rub, I think: 'the right tool for the job.' Everyone has their favorite tool, but, for everyday work, I'm sure the furniture maker tries to keep their general toolset up-to-date, replacing older, less-effective versions of a tool with more productive ones. Having a manual screw-driver is great and very important for certain situations, but having an electric one can help tremendously when trying to be productive. A professional tends to have a whole slew of tools, used effectively at the right time.

    Why do we, as programmers, have a tendency to defend our possibly old, less-effective tools. Personally, in the past, I've fallen into the trap where I made judgements about a new tool before giving it a real shot, assuming I understand it before I've given myself a chance to become familiar with at least the rudimentary subtleties. Perhaps I held to the belief that 'all tools are equal, it is just a matter of how you use them.' Over time, with experience in different realms, it becomes abundantly clear that this is patently false. Can you do most anything with any tool? Sure. Should you? No.

    Does this mean that there is only ever one 'best tool for the job?' No, I'm not saying that. But, there are certainly a whole slew of tools/languages that are average-at-best with their appropriateness. Here's a statement: the more 'general-purpose' a language is, the worse it is for the majority of the tasks we use it for. This is why you see an significant increase in productivity in languages built on top of Ruby, such as Rails. They are fine-tuned to be effective and productive in a constrained set of tasks. This is why you often see people writing the solution to a problem in the language they wish they had, then implementing it in their underlying, general-purpose language.

    Snarky comment: ever notice how, in general, the people who like to chime in with 'a poor craftsman blames his tools' tend to be the ones who use crappy tools. :)

    As always, thoughtful comments are appreciated. Blog posts are even better.

  • J.B. Rainsberger - Value Objects As part 2 (part 1 was primitive obsession) in the 3-part series of interviews that I had the opportunity to do with J.B. Rainsberger recently in Romania, we talk about the idea of value objects and identity.

    Enjoy! And, as always, comments are welcome, but blog post responses are welcome even more!

    JB Rainsberger - Value Objects from Corey Haines on Vimeo.

  • Conversation with Gary Bernhardt Gary Bernhardt has a unique perspective, having spent significant time in both python and ruby development, as well as taking part in both communities. He spends a lot of time talking and writing about testing and design and their intersection on his blog, Extra Cheese.

    Gary did an incredible refactoring screecast, as well as his much-talked-about presentation at Northwest Python Day, called Python vs Ruby: A Battle to the Death.

    Gary organized the Seattle stop on my coderetreat tour 2010, and I made sure to get a chance to sit down and record a conversation with him. In this video, we meander a little bit, but focus primarily on some of the differences between the ruby and python communities, especially as it relates to testing habits and ideas.

    Enjoy! And please leave comments if you are so inclined. Blog post reactions on your own blog are also highly encouraged.

    Gary Bernhardt from Corey Haines on Vimeo.

  • J.B. Rainsberger - Primitive Obsession Note: I am in the process of working with the 5by5 network to begin a regular video and audio podcast. This podcast will contain the bulk of the interviews and videos that I'll be doing while I travel around on the coreyhaines coderetreat tour 2010. Until the details have been sorted out, I will be posting them on this blog, similar to how I did last year. fI you are new to the interviews, please check the archives of this blog to see other great content.

    While in Romania, facilitating the Bucharest Coderetreat, I had the opportunity to teach a Test-Driven Development class with J.B. Rainsberger. We've talked about teaching together for many years, and I'm honored to have finally had the opportunity. If you have watched the videos that I did last summer with J.B., you'll know that he has an amazing amount of experience and insight into the development process. He has an ongoing blog called 'The Code Whisperer,' which has consistently thought-provoking content on design, testing and other coding techniques. If you haven't watched them, I urge you to look through the archives for them, as his thoughts on test-driven development are enlightening.

    Whenever I have time with J.B., I do my best to get some videos recorded with him covering whatever might be of interest to us at the time. This past opportunity was a goldmine, as, not only did I get 3 videos, but we also used ustream to live-stream the interviews. While I was copying onto my computer, J.B. was kind enough to do impromptu Q&A sessions with the people viewing.

    This is the first of those video interviews, focusing on the often-mentioned, more-often-misunderstood topic of 'Primitive Obsession' in design.

    Enjoy! As always, constructive feedback is welcomed in the comments. If you are so inclined, please write a blog post with your thoughts.

    Coming next week: Gary Bernhardt discusses some of the differences between the ruby and python cultures.

    JB Rainsberger - Primitive Obsession from Corey Haines on Vimeo.

Next page