2012 01 08

From TheCommandLineWiki
Jump to: navigation, search

Contents

Feature Cast for 2012-01-08

(00:00:17.253) Intro

(00:02:56.166) Listener Feedback

(00:04:53.622) Hacker Word of the Week

(00:06:21.322) Inner Chapter: At All Levels

  • If switching careers has taught me anything
    • It is that the ability to operate at multiple, even all, levels is crucial
    • You may be wondering what that means
    • As a technologist, as opposed to a software developer
      • I rarely can fully anticipate on what I'll be working
    • I do have some longer running projects
      • But they lack in terms of people
      • There aren't any large teams with specialized roles
    • On good days, I get to write some code, even if it is as a modest program
    • Other days I am writing and communicating based on my technical expertise and experience
    • There is a dash of public speaking, some community organizing
      • And a squidge of event planning
    • Much of the rest of the time, I am evolving
      • Into something of system administrator and network engineer
    • Not all of the work is strictly technology focused
      • But the value I bring is my deep understanding of many aspects of technology
    • To be effective at applying what I know to new challenges
      • I have to be able to understand what is being asked, what is required
    • Those questions may arise in any of those areas that I mentioned
    • Being fluent in coding, up to date on tech news
      • Or being able to diagnose an ailing server
      • Is not enough alone to get the job done
    • I have to act as a generalist but I honestly think it is more than that
    • The issues and tasks that I tackle often span different areas of my experience and work
    • Cultivating the ability to operate across several disciplines at once
      • For me is working at all levels
    • Even if you are on a more traditional development team or FLOSS project
      • Expanding your focus to multiple arenas is valuable
    • I think this ability to bridge produces useful context on each area of concern
      • And certainly eases communication across disciplines on a diverse team
    • Look around at the folks you know who have strong working relationships
      • Not just with other hackers of the same kind
        • But are also comfortable interacting with users, designers, business folks, whoever
    • Those are invariably going to be good examples to observe
      • Of working on multiple levels at once to the strengthening of each
  • Cultivating active listening helps
    • Tai Chi is teaching me another lesson
    • In fact, it was my teacher urging us to practice at all levels
      • That planted the seed for this chapter in my mind
    • To practice well, you have to start to understand each level on its own
    • The hands and feet sketch out the broad movements
    • The mind employs imagery to smooth out those movements, introducing subtlety
    • The core generates power and initiates all movement
    • An entire workout can be spent focusing on only one of these
    • Doing so has plenty of value on its own
      • And our weekly instruction often takes exactly this form
    • To perform the movements fully and correctly, though
      • You have to start integrating, understanding how each part fits with the rest
    • Subtlety and nuance starts to emerge both in your understanding and your movement
    • There is a saying in Tai Chi, that everything is connected
    • Generally it is taken to mean that all the moving parts of your body are connected
    • Contemplating the notion further, I think there is a more expansive meaning
    • Even the distinct layers of the art are connected
      • Usually in ways that are not obvious or easy
    • The movement of the core and the flexing of the hips
      • Informs the timing of the arms and the poster of the shoulders
    • Describing why is a little difficult to a non-practitioner
    • Some of it is because of the easier meaning of the saying
      • That the different parts of your body are physically connected
    • The harder to grasp part has to do with a synchronicity of intention
      • That some parts of the motion better enable and support other parts
    • Being more aware of these nuanced connections when you study and practice
      • Leads to a state of operating at multiple levels
    • The sense of it is related to an intuition I had early on about this kind of awareness
    • Every student is learning their own, unique Tai Chi by paying attention to their own body
    • How far any one person can turn their waist or flex their hip
      • Depends on the unique limits based on their level of comfort and distinct physiology
    • Studying different forms, like pushing hands and sword helps
      • As it provide a diversity of experiences while listening
    • In particular, when playing against a partner, you have to extend awareness
      • To the other person, to know when they are stuck and a push would be effective
    • I have been finding myself applying this kind of listening outside of Tai Chi
    • In a conversation where some decision is being made
      • Paying much closer attention to everyone else
        • Is often reward with insights about what it is they are truly after
        • And how to craft consensus or compromise with which everyone will be much happier
    • When coding on a particular difficult problem
      • Becoming passive and still often allows me to see another approach
        • That I might not have originally considered because I was so intent on my first attempt
    • Stepping back, being open to questions, suggestions whether you agree
      • Yields more opportunities than when you let your initial assumptions rule you
    • Doing so is a bit different than shifting to consider the big picture
    • Taking a strategic view often means setting aside the tactical
    • Being aware of all levels means trying to hold both in mind at once
      • As much as that may seem like an impossibility like a one-to-one scale map
    • I think we all can easily spot the big assumptions, the ones that inform Ford-Chevy arguments
      • Like why each programmer prefers a particular editor, OS or programming language
    • Day in and day out our work is equally informed by many smaller biases
      • Of which I think we are rarely directly aware
    • Occasionally zooming out to consider both the myopic and the far sighted and their interaction
      • May lead to an easier or more fruitful way of accomplishing some professional or programming task
  • BREAK
  • Understanding the leaking abstraction is just the start
    • The metaphor of the encapsulation within programs is limited
    • The emphasis is too much on the deep guts of software
      • Typically where an application meets a library or framework
    • To be truly effective even at traditional software implementation
      • Requires understanding all interfaces
        • Not just the code-on-code ones that are prone to leaking
    • I've already mentioned the strategic view which can take the form
      • Of a business plan or a project roadmap
    • The interface between the software and its users is just as important
    • Whether those users are actual end users, technical experts of some kind,
      • Or other programmers doesn't matter as much as the awareness
        • Of how those audiences will bring expectations and previous experience
        • To inform what they try and how they react to errors and unusual behaviors
    • If you get the chance to observe different kinds of users make use of your code
      • Then you can directly apply active listening, trying to empathize and understand
    • If not, making use of experts and tools from the field of interaction design and human factors
      • Can make up for the lack of direct listening a little bit
    • Even just trying to understand these non-coding disciplines
      • May help exposes questions and assumptions made deep in the guts of a program
        • That could have subtle and ultimately costly impacts later on
    • A great deal of software nowadays is hosted and run as a service
    • In my experience, a group of users sometimes too easily ignored
      • Are the operations folks responsible for keeping applications running
    • Simply thinking about manageability will help those supporting your code
      • Even if there are not full administrative interfaces
      • Including this level of operation in your thinking
        • Will ultimately make building such tools easier
          • Than if you ignore systems management altogether
    • Requirements analysis is the most common example of listening correctly
    • Done well, it is really all about paying attention to what is being said
      • As well as trying to divine what is really meant
    • Requirements gathered in a rush often reveal more about what we as developer think
      • Than the genuine problems with which users and stakeholders really need help
    • I think we all have our favorite anecdotes about some engineer who didn't listen
      • Hurrying to build some impressive and cutting edge bit of kit
        • That ultimately didn't really improve the circumstances it was supposed to
  • Each layer of comprehension can inform the others
    • Paying attention in a holistic manner need not be driven solely by problems
    • Talking about leaks in software abstractions
      • Limits thinking about the design and development of programs
        • To a particular class of problems that may be encountered
    • There is as much opportunity to use expanded awareness
      • When simply presented with alternatives in the way something can be coded
    • If at the lowest levels of code those choices appear to be the same
      • Thinking about the dependent levels should help suggest externalities
        • That may push some approaches to the fore
    • I suspect that hackers of a certain level of experience pay attention to their guts
      • About some way forward that may seem more costly in the short term
        • But about which they are convinced it is more right
    • Pulling in knowledge of broader contexts may help in better quantifying it
      • Beyond some nebulous and hard to articulate sense of being more right
    • Awareness across multiple levels and the ensuing interactions may change over time
    • I've said before that the best case is that code we write gets used
      • Prompting questions, support issues and feature requests
    • How people use some new bit of software may actually enable changes
      • In the sorts of things that they do, begging further evolution of that very code
    • A more complete view may better expose such changes
      • By more regularly pulling in the outside viewpoints I've discussed
    • Expanded awareness can be shared back outwards, as well
    • Understanding how non-coders reasoning about opportunities and tools
      • Helps provided at a minimum a vocabulary to more easily interact
        • But may also allow us to express that very hackish trait of asking what if?
    • As programmers, we are not the only ones who may be too focused
    • Building bridges for ourselves into other people's perspectives
      • Can help them also take steps away from their usual comfort zone
        • Engaging in more wide ranging creative thought
    • I've certainly seen programmers do this without first trying to listen and understand
    • Skipping those not only can be confusing but also frustrating
    • When you realize that everyone is talking past each other
      • That's a pretty strong indication that not everyone is listening as closely as they should
    • By contrast, when a collaboration between folks with varied interests and backgrounds
      • Flows more like a jam session, when each person gets the others
        • And offers ideas that genuinely build on what has been suggested before
        • Then I think you can conclude the exercise of listening has born fruit
  • BREAK
  • While it is challenging to operate at all levels, all the time
    • Looking for and taking advantage of opportunities to do so is well worth the effort
    • Like anything worth doing, it should get easier with practice
    • Greater awareness will lead to more effective use of your existing skills
      • Especially when you find yourself in novel or unexpected situations
    • You'll take more inputs into account
      • And have more opportunity for making broader and deeper evaluations
    • You may find surprising sources for inspiration when in need of ideas for new features or solutions
    • I am convinced regularly re-assessing our assumptions is a good idea
    • Opening yourself to awareness on more levels
      • Invites more input and ultimately increases the odds something
        • Will organically prompt such a re-evaluation
    • More importantly, that evaluation will naturally take into account more perspectives
      • Than just sitting down with a list of assumptions and reviewing them every so many months
    • Further, if consider multiple levels involves conversations and interactions with others
      • Then you gain additional sources for insight and knowledge to help
        • Rather than just having to brain through on your own
    • Having a rich network of contacts informed by their views and ideas
      • Is always a useful resource to cultivate, no matter what projects you undertake

(00:23:42.220) Outro

Personal tools