Article

Articles

tagged with learning  Show All

4 articles tagged with learning

The Firehose by Dave Hoover.

Categorized as 4. Perpetual Learning. Tagged with learning.

I am wrapping up the manuscript for this book (deadline on 10/17) and just wrote the first pass at a "Perpetual Learning" pattern named "Expand Your Bandwidth".  I ended the pattern with my 3 experiences using it. I thought it would make sense to post my stories here:

 

When I was given the opportunity to learn my first programming language by my employer in late 2000, I began Expanding my Bandwidth immediately. I felt like I had a lot of catching up to do, so after I read a couple Perl books, I looked for any possible opportunity to learn more. I was determined to reach the next level as a Perl developer as quickly as possible and knew that just taking one book at a time wasn't going to be fast enough (I'm competitive, OK?). So I joined perlmonks.org, asked and answered questions on comp.lang.perl.misc, attended a couple Perl Mongers meetings, and started playing Perl Golf (yes, competitively). After about a year of this, I had to scale down my intake for the sake of my sanity and marriage. But I had made progress, and had many more resources at my disposal when I found myself stumped.

Then, in the spring of 2002 I read Kent Beck's Extreme Programming Explained and saw an opportunity to grow beyond Perl into the world of test-driven development, pair programming, object-oriented design, and design patterns. Once again I Expanded my Bandwidth and read a pile of excellent books, started attending a local agile software development user group, paid my way to XP/Agile Universe conference (thankfully held near my home that year), participated on the extreme programming mailing list, started reading relevant blogs, and subsequently started blogging. The outcome of this season of Expanding my Bandwidth won me a job at ThoughtWorks, a transnational agile consulting company. My career and apprenticeship were forever changed by the learning opportunities that ThoughtWorks presented me.

As I transitioned from apprentice to journeyman toward the end of 2005, I saw another opportunity on the horizon: Ruby on Rails was on the rise. I strategically Expanded my Bandwidth in order to take advantage of the market opportunity that this presented. This allowed me to join Obtiva, a local consulting company that better fit my lifestyle, where I founded Obtiva's Software Studio and kick-started Obtiva's apprenticeship program. Expand Your Bandwidth is an extremely powerful pattern when used strategically. Just remember to turn it off periodically. :)


Knowledge is Power by Dave Hoover.

Categorized as 4. Perpetual Learning. Tagged with generalist and learning.

When I started Obtiva's Software Studio at the beginning of 2007, I had a lot to learn. A lot. I had focused a lot of my learning prior to 2005 on Extreme Programming, Java, Design Patterns, and Object-Oriented Design. In 2005 I made a decision to put my writing about my apprenticeship experiences on hold and take advantage of the opportunities that Ajax and Rails presented. This led me to leave ThoughtWorks and join Obtiva in 2006, and start our Studio the following year. Starting the Studio meant I had to step outside my cozy world of objects, patterns, and process and into the messier, and unfamiliar world of SQL, web servers, CSS, performance tuning, and system administration. I also had to step outside my cozy world of corporate consulting where missed estimates meant little more than some slight disappointment to a middle manager and into a world where missed estimates meant serious problems for a small business owner. There is no better testing ground for your devleopment ideals than having to justify them to a small business owner whose livlihood is depending on your delivery expertise.

I've written a bit about this before, but I had lunch on Friday with Jay Fields and he was talking about learning the financial domain for his first post-ThoughtWorks gig. He said he was enjoying it but pointed out that it wasn't something that would be directly beneficial to him since he wasn't ever planning on being a trader. Thinking about this on the way back to the Studio, it drove home the power that a generalist possesses. Since I have Software Craftsmanship on the brain, it reminded me of a quote from McBreen's book:

"The step from apprentice to journeyman is very significant and represents the coming of age of the developer. It is a public recognition that the developer is a skilled generalist, able to undertake application development projects without assistance."

Without assistance. While there are countless things that I appreciate about Obtiva's Software Studio, one of the most valuable assets I have developed there is my ability to undertake application development projects without assistance. Not that I have actually developed anything in the Studio without assistance. We are a team, and the Studio was started with apprenticeship in mind, so we strive to pair program and collaborate every day. But when I have a few days or nights to myself, perhaps a long plane ride, or a long weekend, I have the opportunity to quickly turn ideas into a reality. While there is nothing sexy about deployment scripts or web server configuration, the power of the knowledge to develop and deploy software without assistance is literally priceless.


Writer's Block and Introspection by Dave Hoover.

Not categorized. Tagged with block, congruence and learning.

I've officially declared myself "blocked" as a writer. Declaring this will hopefully help pull me out of writer's-block-denial-land and help me get back on the path to developing these patterns into a publishable form.  I should say that my editor, Mary O'Brien, has been patient, understanding, and supportive through this process, particularly when I've been slow to respond (or unresponsive) to her inquiries.

I just spent a week offline and on holiday with my wife and children. It was an important and well-timed retreat and an opportunity to reflect on why I'm out of flow. Just before I left, Kevin Taylor, my business partner, handed me The Art of Learning (by Josh Waitzkin) just after he finished reading it. It's full of deep insights on learning and performance. It's also full of compelling auto-biographical stories from the chess champion who was the subject of the book and subsequent movie "Searching for Bobby Fischer", who went on to become a Tai Chi Push Hands world champion. The book is all about mastery, but digs deeper into the mechanics of elite performance and what separates the good from the great from the elite.

 

Two thoughts keep coming back to me as I read the book.


First, Josh has a lot of time on his hands. To be fair, he has exactly the same amount of time that I do.  He has 24 hours per day, in fact he has less time than I do since I'm older than he is. But when I read about him spending several hours a day refining his forms and literally taking hours to move his arms six inches, I realize that his days have very different structure than mine. I am a husband and father of three who tries to spend quality time with his wife and children every day. I am a software developer, team leader, mentor, and business owner who has projects, customers, teammates, and apprentices who need my time and attention. When I was describing Josh to my wife, I told her to imagine my focus on excellence and multiply it by 10. Despite the demands on my time, I have always carved out time to learn about and improve upon what I am currently focused on. For a long time that was American football, and then it was family systems and narrative therapy, and now it is software craftsmanship. I've also taken diversions into the martial art of Kenpo and explored Texas Hold'em poker. Like Josh, I love to learn, and I agree that it's an art. I appreciate that Josh has been able to structure his life in such a way that he can throw himself so fully into the art of learning and then benefit his readers with what he has discovered. But we all must strike a balance in our lives, and when we sacrifice our responsibilities for the sake of learning and mastery, we have slid into obsession.  That said, if I was neither a husband nor father nor business owner, it would be unlikely that I would be as disciplined as Josh to focus so much of my time on learning.  It's too easy to say, "well, he's a genius" or "he only has to worry about himself", but in reality, there are thousands of Josh's out there who lack the discipline to do what he does.

A second thought keeps coming back to me as Josh touches on the importance of allowing your personality to express itself in your craft. For Josh, this meant he played best when he could create chaos on the chessboard and then thrive in that chaos, just as he did in his normal life. When I read this, it was immediately obvious that over the last few years there has been an aspect of my life that is not congruent with who I am.  This incongruence between the various aspects of my life has caused various problems for me. I'm obviously not going into detail about what the incongruence is, but I feel comfortable writing about the effects of it in my professional life. The effects are simple but powerful: I'm off my game and out of flow. When you wear a lot of hats (father, team leader, consultant, husband, etc.) being out of flow feels exponential, as mistakes in one arena spill over into another, and another, and cascade into a mountain of disappointment. These mistakes can be technical, such as rushing through a software feature and choosing not to write tests for your code, or these mistakes can be relational, such as ignoring a customer's needs and missing out on an opportunity to innovate. Recognizing this incongruence was the first step toward correcting it. It is too easy to focus on the symptoms and problems caused by the incongruence, rather than dig down to the root cause and solve the fundamental problem. For example, if an alcoholic wants to overcome their addiction, they generally can't just focus on drinking less alcohol, they need to address the underlying issues that drove them toward alcohol abuse. Likewise I am in the process of digging deep to address my incongruence and turn things around.

This blog will get back on topic shortly! Please forgive my digression into self-improvement and introspection but it's an important step for me to overcome this blockage.


Favorable conditions never come by Dave Hoover.

Categorized as 4. Perpetual Learning and 5. Construct Your Curriculum. Tagged with learning, lewis and teaching.

One of the authors that inspires me most is C.S. Lewis. He is probably best known for writing The Lion, the Witch and the Wardrobe, which was read to me when I was young. Since then I've read most of his books and a good chunk of them over the course of 2005, when I was in the thick of starting the apprenticeship patterns. The essay/sermon that I found to be most relevant to what I'm focused on is titled "Learning in War Time" which contains this excellent quote:

If we let ourselves, we shall always be waiting for some distraction or other to end before we can really get down to our work. The only people who achieve much are those who want knowledge so badly that they seek it while the conditions are still unfavourable. Favourable conditions never come.

This quote resonates with me. The times in my life where conditions were most favorable, when the singular goal of my situation was to go to school and learn, were my most wasted years from an academic standpoint. I did learn during those years, but what I learned had little to do with books or classes. Yet, once I was out of school and had other things like getting a job and getting married to Staci at the front of my mind, I suddenly started becoming interested in learning. Since that time, the conditions for learning have steadily grown worse (3 kids), and yet despite this, I have had an insatiable appetite for learning that would surprise my college professors.

I can't explain why my interest in learning hibernated until I had left school. I'd like to think I can attribute it to my favorite quote from page 100 of A Pattern Language:

In a society which emphasizes teaching, children and students -- and adults -- become passive and unable to think or act for themselves. Creative, active individuals can only grow up in a society that emphasizes learning instead of teaching.

I'd like to blame the society of mainstream education, or simply being in an environment where someone is getting paid to teach, as opposed to being a member of a group of self-motivated, self-directed learners. Unfortunately, I don't think I can lay the blame for my wasted years of education entirely on my environment, but I do think there is truth in Alexander's emphasis on learning over teaching. And I think this is a critical point for apprentices.

For the vast majority of apprentices, your apprenticeship will not be formal. You will have to create it for yourself, in the unfavorable conditions of corporate IT. While it would make economic sense for your employer to allow you to read relevant books or blogs for an hour a day, this is discouraged because it doesn't look like you're "working". While it would make economic sense for your employer to allow you to sit near (or even pair program with) a more experienced colleague, the seating chart must be adhered to. There will forever be obstacles that hinder your attempts to learn and excel, but the successful apprentice is undeterred. Learning is your responsibility, it's not up to your employer to give it to you. You have to take it.

I'd like to hear from you how you've found ways to learn despite unfavorable conditions.


Arrow_down Hide comments
  1. Kevin Marshall said  

    I find myself in a sim. boat having not 'learned' much from school but rather teaching myself over the years as my interests and needs changed.  However, the reason I think that I have had better success on my own than within the educational system is due to a number of factors:

    1. Pacing: One of the problems I always had with classes is how SLOW they are.  I understand that it's a group evnironment, and they want to make sure everyone (or at least most) 'get it', but I've always had trouble wasting time on something once I 'get it'.  When I teach myself something, I can struggle with a concept as much or as little as I want until I 'get' it and then I can move on to something else.  I don't have to keep practicing it just for the sake of practicing.

    2. Material: The problem with a class setting has always been that you have to follow an outline of material that the teacher thinks (or wants) you to learn.  In my experience 90% of what they cover is stuff I'll never really care about or at least rarely use.  Rarely enough that by the time I have to remember what I learned, I've forgotten it and have to look it up in a book anyway.  When I'm learning on my own, I can skip to the parts that I really want to know (usually because I have a real problem I'm trying to solve and I think learning X will help solve it).

    3. Relevance: I think this goes towards the same type of thing I mentioned in point two, but it's important enough to be it's own point as well.  When I learn on my own, I can make sure that everything is relevant to my needs or at least I *think* it's going to be relevant to my needs and so I have the motivation.

    There are probably a lot more reasons I could think of as to why 'going on my own' has always worked better for me than 'taking a class', but those are the ones off the top of my head.  I would also say that, at least for me and in my experience, a large part of learning success comes from a person's motivation and passion - if you're at school because 'that's what you are supposed to do', or you're a programmer because 'it pays well' then you are going to have a tough time learning and improving.

    But if you're a programmer because you can't help but write code and build stuff, then you're going to find the learning path both fun and easy!


  2. Ken McNamara said  

    Can there be a successful apprentice without a master craftsman?  Where are the master craftsmen?


    Do the most successful software corporations provide an environment that encourages (or allows) the master craftsman to educate new programmers?


    Does the open source movement create an apprenticeship environment?


    Where can any apprentice go to get brutally honest assessments of their efforts?  To what extent have we damaged education by worrying more about a student's self-esteem than their ability to meet the highest standards?


    Certainly it is the responsibility of the individual to pursue their own learning - but doesn't the culture around them share a large responsibility in training them?


  3. Mary Treseler said  

    Great entry. The sooner we all get this one the more satisfied and successful we will be.

    I often tell those I work with who are faced with challenges that they need to fight for the issues they think are important. There will never be enough time to address all that we think is vitaland yet we owe it to ourselves, our employers, our craft, whatever that craft is, to find the pieces we are passionate about, or identify the problems and work on the solution. Achieving satisfaction from my job requires that I be a proactive member of the problem solving group. 

    But how do you strike a balance though between this and taking on too much? Overcommiting seems to be a common theme in all businesses today.


    This quote speaks to so much about what makes for a successful learning experience:

    “In a society which emphasizes teaching, children and students -- and adults -- become passive and unable to think or act for themselves. Creative, active individuals can only grow up in a society that emphasizes learning instead of teaching.”


    Teaching is passive and instructor focused, whereas learning is focused on the needs of the student. We learn by doing.  So listening to a lecture, reading a book, or talking to a colleague, while important, are only the beginning of the learning process. Once we are “doing” our brain begins to make connections and the ideas, concepts and theories start to stick.

    We can blame plenty of different folks for the passive learning that has been the de facto method since we were children, or we can focus on educating others on how to be better learners and better teachers.  I see this happening all around me, two examples: (Gary Pollice is doing some amazing work with his students at Worcester Polytech Institute, the learning principles Kathy Sierra has long talked about and made into a successful series of books (Head First)  – check out her presentation from a recent OReilly conference here: http://toc.oreilly.com/2008/02/video-of-tim-oreilly-and-kathy.html


  4. Dave Hoover said  

    Ken asked: Can there be a successful apprentice without a master craftsman? Where are the master craftsmen?

    Yes, I believe that there can be a successful apprentice without a dedicated master craftsman. Or at least relatively successful. The master craftsmen are few and far between because people tend to move away from the craft as they have opportunities for advancement. It's a rare person that opts to stay technical for the course of their career


    Ken asked: Do the most successful software corporations provide an environment that encourages (or allows) the master craftsman to educate new programmers?

    I would like to think so. I am not a master craftsman, but as a journeyman co-leading a software corporation, I am trying to create an apprentice-friendly environment. I wouldn't say I am trying to educate, though. I'm trying to facilitate their learning.


    Ken asked: Does the open source movement create an apprenticeship environment?

    I think the open source movement makes life easier on apprentices. I know I would not have been able to become a programmer at all without open source software. The things that open source helped me with the most were providing me with an easy to learn language (Perl) that was freely available, with free documentation and an endless supply of source code that I could download and read.


    Ken asked: Where can any apprentice go to get brutally honest assessments of their efforts?

    It is the apprentice's job to find a mentor, a peer, or a group to get feedback from. This is a key aspect of apprenticeship.


    Ken asked: Certainly it is the responsibility of the individual to pursue their own learning - but doesn't the culture around them share a large responsibility in training them?

    The culture should absolutely take responsibility for giving people the best training they can get. But this book is written at apprentices rather than industry leaders, so I focus on self-motivated learning. Apprentices can't wait for the culture to give them what they need, they have to go out and get it themselves.


  5. silv3r189 said  

    I'd like to say what a joy it has been to go through the current draft of Software Craftsmanship. 

    I'm currently in a situation where I found myself deeply yearning for a new career in web development.  The problem is I'm in an industry that focuses on business software, and for 40+ hours a week, I have a limited time to interact with what I have a true desire to learn.  I have a fairly good knowledge of programming concepts, but very little knowledge of the software development cycle.  I feel that I'm stuck in the 'apprentice category', which repels me from making the difficult decision that I'm currently stuck with: switching careers without enough knowledge of a particular language that a new company requires or sticking with in the current industry I'm in.  I certainly have the ability to learn any language, but I don't have a problem to solve aside from the mundane ones that the books I read in my personal time have to offer.

    So the point of the short blurb about myself is this - I have created a dillemma that expels the point of this blog, that favorable conditions never come (working 40 hours a week in an environment that does not promote learning what you desire).  Although my point seems unfair and slightly abstract, due to the fact that I could certainly switch careers and find somewhere else to work that involves web development - it goes back to the challenge I mentioned earlier - switching careers.  It is difficult when you lack confidence in the skills the new career requires.

    Before reading the first few chapters of Software Craftsmanship I lacked the proper guidance to make this decision.  Now I know better what I have to do to become a successful craftsman.


  6. Frederick Polgardy said  

    My first significant job out of college actually was an apprenticeship in many respects, even if it wouldn't have been called that.  The guys who started the company came from corporate telecom software, and wanted to jump on this newfangled World Wide Web bandwagon (it was 1995 after all).  They recognized eagerness and potential in me and were willing to bring me on board.  I read and studied a lot of great code, and really grew as a developer.  I was always encouraged to "think outside the box" to do my job.

    The other ingredient in that mix that I've learned not to underestimate, is that I really became good friends with the people I worked with there.  It really helps to create the kind of personal environment where you're not on the corporate carrot-and-stick, or trying not to ruffle the wrong person's feathers.  When personal tensions began to grow in the company soil, it changed the whole dynamic of everything, even the business model, and it became time to move on.

    Conditions have become much less favorable for learning in the intervening years.  When I started that job I was a single guy living in an apartment three miles from the office, with virtually no responsibilities beyond showing up for work and paying my bills.  Now I try to take advantage of some of the inflexible givens of my schedule.  Right now, one of those big givens is my commute -- an hour each way on the train.  So rather than waste that time sleeping or playing solitaire, I try to take advantage of it to do reading, writing, and various development projects that help me stay current and sharp.


  7. Dave Hoover said  

    silv3r189, I'm glad the material in this book has been helpful for you.  It's great to hear that you have found a career that you are excited about, though the switch is never easy.  Keep us posted on your progress.  Maybe even contribute to the career switch topic in the forum ?


  8. Michael Hunger said  

    I think one of the points Ken tries to make, the role of open source projects:

    Not just using available open source technologies, but actually participating in open source projects is a very powerful way to learn. Most open source projects resemble start ups (one founder and some enthusiastic contributors, agile practices, fast turnaround etc.). So there you have tons of projects to choose from, great developers, quite a lot of freedom to experiment, positive feedback mentality almost ideal conditions for being an apprentice. And the great thing about this is: you don't have to leave your work (staying on the safe ground financially - especially with wife and children). You can contribute to the projects in your spare time or perhaps take some time off work.

    And becoming an active contributor to an open source project has a lot of other advantages. Its quite positive on any C.V. nowadays, you get in touch with a lot of interesting people, you learn a lot and you can contribute back at least a bit of the benefits you gained from all the open source software you use.



 

Copyright O'Reilly Media

Powered by Near-TimeTerms of Services | Privacy Policy | Security Policy |