All posts by Jeff Shelton

Episode 10 — Software Carpentry

Software is an important component in the toolkit of nearly every engineer. Chris and Jeff talk with Greg Wilson about how engineers and scientists can improve their programming skills.

  • Jeff’s first programming language was Pascal.
  • Intended to encourage good programming practices, Pascal gained wider acceptance as the basis for Borlands’s Turbo Pascal.
  • Programming in the 1970’s was not carried out at a terminal, but required punching data cards on a keypunch machine, then feeding the cards into a card reader. Yes, that huge stack of spinning “magnetic disks” at the 1:14 mark is an early hard drive.

  • Our guest for this episode is Greg Wilson, who is the founder and director of Software Carpentry, an outreach and training program that helps scientists and engineers be more effective by teaching them “best-practices” for software programming.
  • Greg’s work with Software Carpentry is currently funded by the Sloan Foundation in the United States, and he is an employee of the Mozilla Foundation.
  • Software Carpentry seeks to reach the majority of researchers, scientists, and engineers who build “small” data projects, rather than the relatively few that work on “huge” data sets using supercomputers.
  • A typical Software Carpentry workshop consists of a two-day course, with blocks of instruction addressing the Unix shell, Python, version control, unit testing and SQL. The two-day workshop is often followed up with about six weeks of online instruction.
  • Greg says that if participants come away with nothing else, they should learn the value of version control, so that the provenance of scientific data can be tracked and analyzed.
  • The Software Carpentry team has found screencasts to be “a lousy way to teach,” as personal interaction is an important component of learning.
  • Greg has found engineers to have a bit more “hands-on” experience than scientists, and to be more MATLAB-oriented, but perceives relatively little difference in their understanding of software issues.
  • Considerable empirical research has been conducted about programming effectiveness, but little of this information is shared with students in college courses.
  • Greg has co-edited a book about software programming practices, titled Making Software: What Really Works, and Why We Believe It.
  • One of the most critical indicators of how well individuals can work together in a corporate programming project is not their geographical separation, or language differences, but how far apart they are in the company’s organization chart.
  • Pair programming is an effective method for reducing software errors, but it has an important caveat: it only keeps working if you keep shuffling the coding partners.
  • The single most effective way to find bugs is code review. Don’t compile the code, or run it, but have someone else read through the code. You’ll find 60-90% of the bugs in the first reading. Review Board is an open-source web-based tool designed to help in such efforts. A commercial product for this purpose is available from Smart Bear Software.
  • Mark Guzdial has been using “worked examples” to teach programming at Georgia Tech, and has found it to deliver more learning in less time.
  • A flipped classroom has students watch instructional videos for homework, and then spend class time working problems.
  • In a 2009 blog post, Greg talked about “real” engineers becoming more like software engineers, rather than the other way around.
  • Greg believes that higher quality software is possible, if the right incentives are offered to programming organizations.
  • Even if we can’t review code line-by-line, we can at least verify the methodology and processes used to create it.
  • There is a comprehensive reading list available on the Software Carpentry website.
  • Greg is suspicious about the effectiveness of self-guided learning programs like Codeacademy.
  • On the horizon are programming tools such as Mozilla Towtruck, which allows for collaborative editing of web pages.
  • As an introduction to programming methods, Greg recommends the book Facts and Fallacies of Software Engineering by Robert Glass.
  • Greg can be reached by email at info@software-engineering.org. You can find more information about the programming workshops on the Software Carpentry website.

Thanks to Jon Lim for granting permission to use his image of Greg and a young programmer at the Hive Toronto Youth Hack Jam in February 2012.

Untitled Photo: Jon Lim © 2012, all rights reserved.

Episode 8 — Influence

In this episode, Chris and Jeff discuss the manner in which social influence affects engineers, how engineers can detect those who seek to exert influence, and how engineers can exert some influence of their own.

  • Jeff stumbled upon a variation of the Pomodoro Method, which was discussed last episode. In the Pelko Method, fear is used as a motivator. Hence, the tomato timer is replaced by one shaped like a hand grenade, and the task intervals are random, encouraging one to finish the task before their allotted time disappears.
  • A book by Robert B. Cialdini, titled Influence: The Psychology of Persuasion, presents six facets of persuasion: Reciprocity, Consistency, Liking, Authority, Scarcity, and Social Proof.
  • Jeff uses the pneumonic RCLASS to remember these facets (as suggested by reviewer Gale on Amazon).
  • While each facet represents a mental shortcut that is largely useful, individuals skilled in the power of influence know how to structure requests and situations to direct these biases and tendencies against those they seek to persuade.
  • RECIPROCATION – “We should try to repay, in kind, what another person has provided us.”
    • Benefit: We accept reasonable offers of assistance, because working together allows us to be more effective than we can be alone. Those who violate this tenet are known as “moochers”, or “ingrates.”
    • Downside: We are trained from childhood to detest obligation. Thus, we feel obligated to the future repayment of favors, gifts, and invitations, regardless of whether or not we actually wanted such endowments. This can lead to unfair exchanges.
    • Examples: Address labels, note pads, key rings are included in charity requests because they double the level of contributions.
    • The most highly valued favors are seen as significant, unexpected, personalized, and unconditional.
    • We must be aware of how our perceptions change when we accept favors: loaned equipment, nice lunches, tickets to the ballgame.
    • An even more powerful strategy: reciprocal concession, also known as “reject-then-retreat.” Under this scenario, a concession on the part of the requester creates an obligation on the part of the requestee to make a similar concession.
    • Defense: If initial favor was not sincere, recognize reciprocation ploy, and allow yourself to escape the sense of obligation.
  • CONSISTENCY – “Once we have taken a stand, we will behave in such a manner as to justify, and remain consistent, with our earlier decision.”
    • Benefit: A high degree of consistency is perceived is to be at the heart of logic, rationality, stability, and honesty. Being consistent keeps us from having to revisit mentally difficult and emotionally challenging decisions.
    • Downside: We can be led into making bad decisions by those who prefer that we not think too much about our actions. If I can get you to take a stand, I have set the stage for your automatic and ill-considered consistency.
    • Example: “Would you be willing to contribute time to a charity?” Just asking the question increases positive response seven-fold.
    • Those who exploit consistency often start small, as self-image is easily modified through seemingly insignificant actions.
    • Defense: If you have sick feeling in the pit of your stomach, evaluate the situation for enforced consistency. Tell people you are aware of consistency principle, and allow yourself to change your mind, or reverse your course of action, when it is rational to do so.
  • LIKING – “We like to do things for people we like.”
    • Benefit: We tend to like those who share similar backgrounds or interests, thus those who are most likely to share favors and honor reciprocity.
    • Downside: Our emotional response can be altered by clever influencers.
    • Example: “Would you be willing to contribute time to a charity?” Just asking the question increases positive response seven-fold.
    • Those who exploit consistency often start small, as self-image is easily modified through seemingly insignificant actions.
    • Why do we like?
      1. Physical attractiveness — often unrecognized bias.
      2. Similarity — dress, interests, backgrounds, age, religion.
      3. Compliments — we are suckers for flattery, even when it isn’t true.
      4. Conditioning — Familiarity combined with positive experiences.
      5. Cooperation — We must “pull together.”
      6. Association — Models, athlete endorsements, sports teams, reflected glory.
    • “Luncheon Effect” — We tend to become fonder of people and things experienced while eating.
  • AUTHORITY – “We are trained from birth that obedience to proper authority is right and disobedience is wrong.”
    • Benefit: Obeying authority figures normally keeps us safe and out of trouble.
    • Downside: Individuals who wish to take advantage of us can take on the guise of an authority figure.
    • Symbols of authority:
      1. Titles
      2. Clothing
      3. Trappings
    • Defense: Be aware of authority power and how easily it can be faked. Ask yourself:
      1. Is this person truly an expert?
      2. How truthful can we expect the expert to be in this situation?
  • SCARCITY — “We are far more sensitive to possible loss than we are to equivalent gain.”
    • Benefit: Things that are easy to possess are typically worth less than those that are difficult to obtain.
    • Downside: Our asymmetric response to loss and gain can be manipulated.
    • We are most susceptible when we have seen abundance, and it has been replaced by scarcity. We hate to lose freedom. Once granted, freedoms will not be relinquished without a fight.
    • Defense: Pursuit of scarcity produces an emotional response. So flag arousal and seek rationality. When we sense scarcity, ask why we want the item. Do we wish to use it, experience it, or possess it?
  • SOCIAL PROOF – “The greater the number of people who believe an idea correct, then the greater the likelihood that the idea is, in fact, correct.”
    • Benefit: Largely saves us from decision errors and social embarrassment with out having to re-evalute situation.
    • Downside: The influence of social proof is strongest in periods of high uncertainty. We can be led astray by those who can manipulate or fake evidence of social response.
    • Defense: Be aware of faked social proof. Look for people acting in an absence of solid data.

Thanks to the|G|™ for the intimidating photo, titled “you.”

Episode 7 — In the Zone

What is it like for an engineer to be “in the zone?” Are there any good techniques for finding such a “flow” in your engineering work? We discuss these issues in this week’s episode.

  • Chris likes the performance of leaded solder, but recognizes the importance of moving to a lead-free alternative. This transition in solder composition was largely driven by the Restriction of Hazardous Substances Directive (or RoHS).
  • The problem of tin whiskers has the aerospace industry continuing to use leaded solder.
  • Chris has slipped “into the zone” while soldering, and Jeff has similarly found the “flow” while working on CAD drawings.
  • Time seems to fly by when one is in the zone, and the process can be both physically and mentally exhausting.
  • Psychologist Mihály Csíkszentmihályi has theorized that moments of flow occur when we activate so many neurological functions that we can no longer maintain awareness of our own activities. Thus, we lose any sense of self, and become wholly engrossed in the moment.
  • A blog entry about creative flow, written by Everett Bogue, was recently published on the site Zen Habits. It is noted that achieving flow can be difficult.
  • Suggested steps for achieving flow are:
    1. Pick a enjoyable, challenging activity
    2. Eliminate distractions
    3. Think before you do
    4. Isolate yourself
    5. Let go
    6. Give yourself a time limit
    7. Keep moving
    8. Don’t think
    9. Practice
  • Gamification uses game design techniques to enhance non-game contexts.
  • In a recent YouTube clip, Slovenian philosopher Slavoj Žižek claims that happiness is rarely a driving desire in creative endeavors.
  • The topic of what inspires people to take action is covered in Daniel Pink’s book, Drive: The Surprising Truth About What Motivates Us.
  • We learn that Jeff will listen to (yawn) smooth jazz while working. Chris, on the other hand, can crank away while listening to techno music.
  • Clips of white, pink, or brown noise can be found online at SimplyNoise.com. These are useful for drowning out unwanted background noise in the work environment.
  • John Cook claims that Mental Context Switches are Evil. It’s tough to stay in the zone if you’re constantly having to think about the tools you are using, and the context in which they work.
  • Both Chris and Jeff have experimented with the Pomodoro technique, in which tasks are broken into 20 minute work sessions. Numerous apps are available for tracking tasks and interruptions, if you don’t like using pencil and paper.
  • Cubicles were created for office equipment manufacturer Herman Miller by designer Robert Propst.
  • Jeff’s additional suggestions for getting into the zone include:
    1. Start with a clean desk
    2. Use sketches to capture relationships
    3. Leave a foothold for the next day
    4. Take a power nap when struggling
  • Some companies provide napping rooms for employees to refresh themselves mid-day.
  • Today’s engineers have to maintain a creative edge, as routine functions and duties can be computerized or outsourced.

Thanks again to Ian for being on The Engineering Commons this week. To catch each update as soon as it’s posted, be sure to subscribe to the feed!

Thanks to loop_oh for the speed zone photo, titled “30 zone.”