Finding people that are interested in software as a craft is a great find. But
I'm trying to figure out concrete things as a community we can do. Here's a
couple of positions.
The Cynic
---------
Craftsmanship is nice, but it's expensive. Even if the actual practice of
craftsmanship isn't expensive, the transition of an organization towards
craftsmanship not only takes time and money, but it mired in politics.
Ultimately, craftsmanship deserves no special hand-holding. The market
will decide what works and what fails in a process of economic natural
selection. And the end of the day, craftsmanship may not win out; the
status quo will just plod along.
The Entrepreneur
----------------
Okay, so there's a problem, but we can solve it. Let's band together in
boutique consulting shops. We'll dodge some of the migration problems
larger calcified organizations have. And any remaining costs will either
amortize in time, or pay out in super nice dividends.
The Independent
---------------
I have no ties. I will wander, taking only jobs where I feel I'm connected
to the surrounding ecosystem in a healthy, productive way. Basically, I
will spend my own currency to get where I want to be.
The Struggling
--------------
There's an incredible risk with becoming an entrepreneur. Getting a steady
stream of contracts is no trivial matter. Not all of us feel like we're in
a position to do that.
And finding jobs with boutique shops that are already set up is just as
challenging as finding jobs with normal jobs with organizations that have
pockets of craftsmanship.
Also, I have a life that I can't really conveniently disrupt. I don't want
to fly around the world at the expense of time with my family and
community.
So those positions have largely motivated where I stand on things lately. The
economic impedance of craftsmanship is really frustrating. I don't have a
great solution for it.
But why do we need to solve an industry problem through only the channels of
industry? What about voluntary mentorship? Okay, there's time involved, but
far less money.
It seems to me that if there's economic pressures getting in the way of forward
progress with software craftsmanship, then we need to seed young developers
with good ideas and techniques so that they are empowered to change the status
quo.
I guess what I'm saying is that given the state of the world, if software
craftsmen want to preserve their craft, then they have a social imperative to
mentor.
So that leads me to my modest attempt to kickstart something local in Austin
recently. I'm trying set up a mentorship program targeting university
students. We've got a pretty nice school here (UT Austin), and I have some
contacts since I went to school there.
Thus far, I'm working on setting up a live demo for a class a professor has
been kind enough to offer me, but I want to do something more than just guest
sessions in classes, so I set up a Google Group to help organize mentors [1].
Also I'm trying to keep in contact with the student chapter of ACM, because one
of the next steps will be to organize students.
[1] http://groups.google.com/?hl=en
Here's some feedback I'd welcome:
- I doubt anybody will say "mentorship is bad," but I'm actually stating it
as something more important when I call it a social imperative. Any
resistance to this assertion? How flawed or incomplete are my arguments?
I'm wondering if mentorship should be more prominently integrated into
software craftsmanship rhetoric.
- Has anybody already come to these conclusions and tried something
similar? I'm interested in learning from other people's struggles and
successes.
- Please check out the Google Group, even if you're not in Austin, and let
me know if you have any other ideas.
Best to everyone,
Sukant
On Wed, Oct 7, 2009 at 9:20 AM, Sukant Hajra <33jl...@sneakemail.com> wrote:
>
> The Struggling
> --------------
>
> There's an incredible risk with becoming an entrepreneur. Getting a steady
> stream of contracts is no trivial matter. Not all of us feel like we're in
> a position to do that.
Often the greatest risk to achieving mastery is not taking risks.
> And finding jobs with boutique shops that are already set up is just as
> challenging as finding jobs with normal jobs with organizations that have
> pockets of craftsmanship.
Hm, I suppose. I'd say that normal organizations with pockets of
craftsmanship are far "riskier" than boutique shops, since the pocket
could collapse if the craftsmen left. Whereas if the boutique shop's
culture is based on craftsmanship then you'll get to live in that
culture for as long as the shop survives. Now, both are challenging
to get into, but boutique shops are often more open to non-traditional
entry points. For instance, Uncle Bob just referred someone to 8th
Light and Obtiva this week who is aspiring to mastery but doesn't want
to leave his current gig. Now he's talking with both companies and
his employer about an informal, part-time mentoring program.
> Also, I have a life that I can't really conveniently disrupt. I don't want
> to fly around the world at the expense of time with my family and
> community.
I'm sorry, but I really don't have much patience for this attitude.
If you want to achieve mastery, it's going to inconvenient. I'm not
sure what flying around the world has to do with it, but certainly one
will need to make sacrifices of time and energy and money in order to
get to where you want to go. If you're not willing to be
inconvenienced, that's totally be fine, but understand that you will
not be able to reach the goals you're aspiring to.
> But why do we need to solve an industry problem through only the channels of
> industry? What about voluntary mentorship? Okay, there's time involved, but
> far less money.
Sounds cool, though there is certainly going to be plenty of
"inconveniences" involved in a voluntary mentoring program. For me, I
preferred to combine apprenticeship with my day job so I was less
inconvenienced, and because I think apprentices learn best through
immersion. I agree wholeheartedly that mentoring and apprenticeship
are the only long-term way that software craftsmanship will spread and
I believe that any form of these activities is worth attempting.
Best,
--Dave
Excerpts from Sukant Hajra 33jlhrn02-at-sneakemail.com |Software_Craftsmanship|'s message of Wed Oct 07 09:20:35 -0500 2009:
>
> I set up a Google Group to help organize mentors [1].
>
> [1] http://groups.google.com/?hl=en
Silly me, copied a bad link. Try this. . .
http://groups.google.com/group/atx-sw-mentors
> Here's some feedback I'd welcome:
>
> - I doubt anybody will say "mentorship is bad," but I'm actually stating it
> as something more important when I call it a social imperative. Any
> resistance to this assertion? How flawed or incomplete are my arguments?
> I'm wondering if mentorship should be more prominently integrated into
> software craftsmanship rhetoric.
Also, I realized that I'm mixing the concepts of "mentorship" with
"volunteering". Of course, SC has mentorship baked in. What I'm really
driving at is volunteer-based mentorship.
-Sukant
Pitfalls Along the Path to Mastery:
* Conflicting way of life
* Obsessive goal orientation
* Over competitiveness
* Vanity
* Dead seriousness
* Perfectionism
Dealing with change and Homeostasis
* Develop a support system - no better support system than family
* Dedicate yourself to lifelong learning - no quick path
From "Mastery - The Keys to Success and Long-term Fulfillment" by
George Leonard which I was referred to from this list :) Thank you for
whoever suggested this book. Absolutely brilliant.
As to the pitfalls, I'm no monk, but I believe Buddha would summarize
the pitfalls as being out of balance, so one key to mastery not in the
book is to always be in balance with your life.
--
Curtis Cooley
curtis...@gmail.com
home:http://curtiscooley.com
blog:http://ponderingobjectorienteddesign.blogspot.com
===============
Leadership is a potent combination of strategy and character. But if
you must be without one, be without the strategy.
-- H. Norman Schwarzkopf
Also, I realized that I'm mixing the concepts of "mentorship" with
"volunteering". Of course, SC has mentorship baked in. What I'm really
driving at is volunteer-based mentorship.
If I had to recommend 2 books for software craftsmen to read, it would
be "Software Craftsmanship" by McBreen and "Mastery" by Leonard. It
is seriously good stuff.
> As to the pitfalls, I'm no monk, but I believe Buddha would summarize
> the pitfalls as being out of balance, so one key to mastery not in the
> book is to always be in balance with your life.
True that. Being in balance is fundamental. Sometimes we have to
admit to ourselves, though, that to maintain balance we need to step
off the path to mastery for a season. I've certainly struggled with
balance over the years as a husband and father of three young
children. Too many times I've stumbled over the pitfalls of
obsessiveness, seriousness and vanity. It's an ongoing effort to
balance these things... and sometimes downright inconvenient. :)
Thanks for bringing up the distinction. I was really thinking about a). . .
but honestly. . . there's something to be said for b) too. In my case, it's a
bit of both. I'm asking mentors to take time away from their busy schedules
for free. But the students are also taking time away from their busy schedules
for no immediate financial gain.
However, I put more burden on the mentors to provide something of value than I
do on students for find something value. Students are often just too caught up
with academia to know where to look for something better. How can we expect
someone learning how to programming in a new language to think "you know. . .
this is all wrong, I should be testing first." That takes enormous insight.
My current model for mentorship is that groups of "mentors" internally mentor
each other as well as they present. Expertise is almost alway imbalanced, so
it makes sense to actively help balance the expertise of the mentors. And
honestly, there's nothing really stopping mentees from being mentors in a very
fluid way.
The benefactor of the projects that are worked on shouldn't really be the main
focus. In my eyes, I'd prefer they were just open source projects. That way
no one feels unfairly treated. It's probably possible to get corporate
interests involved, but the mentorship experience needs to come first.
Otherwise, the whole experience can just end up pretty much the same as a
typical internship. Internships are great. I just feel they often neglect
mentorship (at least they did in my case).
-Sukant
I was going to reply to this comment, but I think the discussion you had with
Curtis fleshed out most of what I was going to say. If you have a wife and
kids, you know what I'm talking about.
> Sounds cool, though there is certainly going to be plenty of "inconveniences"
> involved in a voluntary mentoring program. For me, I preferred to combine
> apprenticeship with my day job so I was less inconvenienced, and because I
> think apprentices learn best through immersion. I agree wholeheartedly that
> mentoring and apprenticeship are the only long-term way that software
> craftsmanship will spread and I believe that any form of these activities is
> worth attempting.
I'm totally with you -- do what works.
Here's some comments, though.
- Finding a environment that supports apprenticeship might be more challenging
than building up a mentorship program free of some business pressures.
- Professional apprenticeship reaches one person deeply at a time. Voluntary
mentorship can do that too. But voluntary mentorship has the potential to
educate on a broader scale. There are a variety of activities (reading
groups, labs, chalk talks, etc.) that might not deeply immerse anyone, but
will open their eyes to what's out there.
-Sukant
Okay, this conversation is definitely going an interesting direction.
I don't think students will be motivated at all initially. They will likely
need some kind of push.
But even once pushed, we might not be able to get their "full effort". I
really won't know how bad it is until I'm in the middle of it.
> I wonder if the people have experience with this would chime in?
Absolutely. Me too.
> Also, Sukant, are you thinking something similar to the idea of a Software
> Craftsmanship School like I talk about here?
> http://programmingtour.blogspot.com/2009/09/software-development-school-idea.html
I guess not. This is not to say I'm not open to what you're talking about.
At the risk of perhaps reopening settled discussions you've already had with
other people, I do have some comments:
- I'm really not in favor of abandoning the traditional CS experience. I'm
tempted of laying forth my arguments, but I'm sure you've heard them.
- That said, I see two options. First off, we can try to influence
academic institutions to be more sensitive to craftsmanship. My take on
this is that it's totally possible to marry the two. Why shouldn't
classwork be steeped in testing, continuous build servers, and source
control? Why can't senior projects be managed with Agile methodologies?
- Secondly, we can tack on the school you're proposing as a second stage of
education after something more traditional like a BSCS. But then,
there's a huge question of cost. Will the apprenticeship be free? Or
will there be a nominal cost? Even if it's free, there's still a price
to pay because the student is deferring a full two years of normal
salary.
I think the difference between our two ideas is pretty much on where we place
the burden of responsibility and cost. I'm placing the burden on us -- the
working professionals. But your program might put more burden on the students.
-Sukant
My answer to this is pretty simple. Good teachers facilitate pull-style
learning. That said, orthodox teaching methodologies are really push-oriented.
Interaction is pretty key.
There's another point to make. One thing that school does that the workforce
rarely does is provide nice pedantic environments for an exploration of ideas.
Academic environments can provide a nice net to fall without sustaining much
injury.
-Sukant
I think there's clear benefits for the mentor:
1. All good teachers learn through the process of teaching. We'll run into
problems we hadn't thought of, and resolve them in new ways.
2. There's all kinds of networking benefits (nice to get out of the circle
of people you work with all day long).
3. Volunteering is rewarding.
4. Volunteering is fun.
Okay, but volunteers aren't getting paid. I get it. But there's a
fear-oriented reason that I'm compelled to give my time too. Without
volunteering time, all I see ahead of me is the status quo. Software
development has been plodding along for decades, and I think it's really folly
to believe that software craftsmanship hasn't been around long before the
branding.
The branding is great. It provides something specific that we can use as a
handle when talking about our ideas. But if we as professionals don't reach
out to students, I just don't see how we can get more craftsmen in the world.
-Sukant
Seth Godin wrote a nice post today about risk. Good food for thought...
http://sethgodin.typepad.com/seths_blog/2009/10/apparent-risk-and-actual-risk.html