Monday, April 16, 2012

A Taste of C++11

Herb Sutter has an example of what C++11 feels like. Here it is, from the video:

string flip(string s) {
   reverse(s.begin(), s.end());
   return s;
}

int main() {
   vector<future<string>> v;
   
   v.push_back(async([] { return flip(   " ,olleH"); }));
   v.push_back(async([] { return flip(" egdelwonK"); }));
   v.push_back(async([] { return flip("\n!rebmahC"); }));

   for (auto& e : v) {
      cout << e.get();
   }
}
Concurrency, futures and lambda functions... Moved objects, automatic type deductions and new for loop syntax...

A whole new language, isn't it?

Friday, April 6, 2012

About 'Making Things Happen'

I just finished reading 'Making Things Happen: Mastering Project Management', by Scott Berkun.

Rather than trying to explain why this is a really great book (although it is, and you can find reviews here, here and there), I thought I'd rather just mention a few ideas/topics/quotes I noticed while reading.  If you want to know more about these items, you know where to go...


p 11 - PMs have to balance several pairs of forces: ego/no-ego, autocrat/delegator, tolarate ambiguity/pursue perfection, oral/written, acknowledge complexity/champion simplicity, impatient/patient, courage/fear, believer/skeptic.  Depending on the phase of the project, or the situation at hand, PMs must balance these forces differently
p 16 - "PMs have to understand the advantage of their perspective and choose to make use of it"
p 25 - A schedule has a forcing function: people tend to try and stick with it
About schedules: a simple way to build one is to ask people in the team to provide an indented list of one liner tasks with estimates no longer than 2 days
p 137 - Specifications are needed to build a plan, and help define tests:
- ensure the right thing gets build
- create milestones to focus the team
- enable reviews and feedback
They should be in VCS (markdown format?) to allow others to check what changed.  PM should make it clear with the team what the goals for the specs are (p 138)
p 143 - "Remember that good feedback comes more easily if you ask for it than if you wait for it."
p 144 - Ask the readers of the spec 'Do you have what you need to do your best work?'
p 145 - When writing a spec, put the questions about the specs itself at the end, or in another document.
p 183 - PM is tough: you have to invest in relationships with people, regardless of how much they're investing in you
p 185 - PM should discuss, wich each person, his role, the other person's role, and the common parts.  This sets expectations.
p 186 - "What can I do to help you do your best work?"
p 215 - When an urgent issue arises:
- Calm down
- Evaluate the problem
- Calm down again
- Get the right persons in a room (and often, you don't belong to this group -- Offer help, but don't get in the way)
p 221 - "The challenge [of managing projects] isn't sailing in calm, open waters with clear skies. Instead, the challenge is in knowing w to juggle, prioritize and respond to all the unexpected and difficult things that you're confronted with".
"Taking responsibility for something doesn't make it your fault: it means that you will be accountable for resolving the situation"
p 224 - Getting to Yes, by Roger Fisher -- Know you BATNA (Best Alternative To Negociated Agreement)
p 232 - It's much more expensive to recover from burnout than to slow the project down
p 232 - Feelings about feelings
If someone says something to you that makes you sad ("You smell funny"), next that happens is a feeling (anger) about this first feeling (sadness) and one usually only can express the former (the feeling about the feeling). Cf Virginia Satir
p 233 - Living, loving and learning, by Leo Buscaglia
p 233 - Beware the hero complex (the person creates bad situations to be able to solve them)
p 234 - 'Always' and 'never' are not valid answers to the question of when a process is necessary
p 235 - Beware codependance between bad management and heroes, where the former creates the bad situation that the other saves
p 236 - Exercises for bad situations
p 242 - "To be a good leader, you must learn how to find, build, earn, and grant trust to others - as well as learn how to cultivate trust in yourself"
p 253 - Criticizing others
p 254 - What to do after a mistake, what to learn from your mistakes
p 255 - Never reprimand in real time
p 257 - Self-Reliance, by Ralf Waldo Emerson
p 261 - PMs do ordered lists of stuff
p 265 - Saying no.  "If you're asked something, say no and point them to me"
p 354 - Project Management Clinic (closed now, but archives available) - http://www.scottberkun.com/forums/pmclinic