Monthly Archives: January 2009

Moving People Around

Effective Destabilization

Software practitioners familiar with the rules of extreme programming know that moving people around, or the process of continually appointing team members to work on different parts of the solution or to serve in different team roles, can effectively shuttle knowledge between team members helping to ensure a common level of understanding in both the problem and solution domains.

Moving people around serves as a force that effectively destabilizes the team and continually engages them  towards establishing a new comfort zone.  In the process, team members cross-train towards improving their skills, are deterred from complacency, become more aware of project status, while becoming more responsive to project risk.  In this series, Moving People Around, I’ll discuss the challenges and opportunities that resulted from my own experience with a similar destabilizing force as I moved from a colocated team setting in New York City, to a teleworking setting in Buenos Aires, Argentina.   I’ll discuss how our team overcame the resulting challenges and amplified the opportunities towards ensuring the successful delivery of our software projects.

Surging Ahead

Prior to my moving, our team was composed of 4 members, 3 superb programmers and 1 tech lead/hands-on project manager (me).   Our efforts were focused on delivering a .NET analytics platform which was in beta release.

We regularly incorporated agile software development practices including frequent software deliverable, daily meetings, daily interaction between business people and developers, continuous integration, no overtime, refactoring, and face-to-face team conversations.

Following the move it was clear that we had also improved our practice of collective code ownership while becoming better at moving people around.  We lost the benefits that come with face-to-face team conversations but overall our system had matured into a  production release and we signed our first customer.

The immediate impact following my move was surprising.  In these first few months, we experienced a team surge that saw us sprinting through 4 development iterations, invigorating the project and more importantly, introducing breakthrough features that singled out the product in the marketplace.

I believe this surge was directly related to positive effects that resulted from my move to a teleworking environment and I wonder whether the same intensity could have been achieved had the move not occurred.   The catalyst behind this surge included:

  • Eliminating commute time gave me more time to focus on developing the product.
  • The team raised its performance level in order to prove effectiveness in a virtual team setting.
  • Three hour timezone difference allowed us to benefit from “Follow the Sun” development.
  • Daily group chat sessions eased the recalcitrance and shyness that sometimes occurred in face-to-face conversations, empowering all members to speak up.  The result was continuous feedback that improved our team-intimacy, awareness to project risk and productivity.

Counter Balancing

After this initial surge and as the year progressed, some of the challenges facing teleworkers and virtual teams began to set in, specifically team intimacy began to suffer as the lack of face-to-face meetings, coupled with the transition of part of the team to separate projects began to disconnect and disorient us all.

To counter these effects, we:

  • Introduced a weekly meeting with business leads.
  • Transitioned my original role as tech lead to a colocated member, allowing me to better focus on clearing obstacles that were preventing colocated members from maximizing their productivity and brilliance.
  • Increased my visits to the office.
  • Decreased project velocity to achieve a more sustainable pace.

Subtle adjustments also helped counter the effects of my moving to a remote work environment.   For example, I could sense a collective relief from business leads (as well as increased call volumes) once my Argentine ring tone was changed to sound like the standard USA ring tone.

Conclusion

Looking back, I do believe the initial team surge was directly related to the benefits agile promotes in moving people around.   The intensity of this surge was largely a result of our response to the changing circumstances.   As challenges arose, it was critical to address each quickly and decisively.  In my new role as a teleworker, I can confirm the importance of continually reaching out to all stakeholders, make them feel comfortable that you are accessible during their work hours.  The move to a teleworking environment also gave me time to focus exclusively on writing code while transitioning my role as tech lead to a colocated member.  In the process we improved our practice of collective code ownership.

While this move served as an extreme case of the challenges and opportunities that result when you move people around, more traditional examples more would show team members owning different portions of the system or  fulfilling different team roles at different times in the development lifecycle.   When effectively managed, the benefits will be distributed across individuals, their team and the stakeholders they serve.

This concludes the series Moving People Around.

Tagged ,

Sergio Bogazzi

thumb_sergio_bogazzi
Describe your first computer program.
The first I remember was a tic-tac-toe Java applet back in the summer of 1995. My good friend John and I purchased O’Reilly’s ‘Java in a Nutshell’ book in March of that year. I voraciously read and tried the book’s examples all during a time when Java was still looked at as a revolutionary technology for delivery software applets over the internet. I remember the excitement as the tic-tac-toe squares lighted up at an increasing pace. This all in my Netscape browser!

Which programmers influenced you the most during this period and why?
My friend John for sure as well as many of the pioneers I discovered reading Programmer’s at Work.

How would you summarize your early professional years?
I started working at the height of the first dotcom bubble which gave me and other young twenty-somethings much more credit than we deserved.   My young age coupled with my lack of experience was, in reality, a forte in the eyes of hiring managers looking to ride the internet bandwagon themselves.  Knowing it was a unique period, I sought as much responsibility and diversity as I could.

What attracted you to the people and process aspects of software development?
I struggled to build software for the sake of building software.  While i didn’t know it early in my career, I came to discover that I was almost single handedly motivated by user needs.  I also realized that much of what hampered the quality of the software products I was involved with had very little to do with the technology being used but instead had a lot to do with the development practices that weren’t being followed or the poor hiring decisions that were jeopardizing team effectiveness.    During graduate school, I turned my interests away from strictly technology and more towards understanding the requirements elicitation process. I came to realize that identifying and building for the right user needs was the single most important step in the software development process.

What are the core values and principles you’ve acquired during your career?
Trust your team.
Continuously improve your skills and knowledge.
Know your talents.
Know the difference between efficiency and effectiveness.
Remember that your first day of work dates back to your job interview.
Be religiously unselfish.
Listen.
Avoid burn out.
Be unambiguous.
Write Things Down.
Always learn ‘something else’ from what your doing.
Leadership by example.

How do you stay productive?
Agile methodologies, my moleskine, innate discipline, a computer.

How do you see the software industry evolving over the next 5 years?
I’m still trying to catch up from all the changes in the previous 5 years. Big data, real-time social media, dynamic languages, nosql, mapreduce, HTML5, git, Ruby on Rails, Behavior-driven development, 32-core processors, Lean software development, and many more are helping us mature our way out of Web 2.0, out of the need-to-know and need-to-share culture towards one of maybe need-to-predict? Imagine the day when the oceans of heavily merged datasets allow us to introduce predictive intelligence to every aspect of the software development lifecycle.

Gastón Hillar

thumb_gaston_hillarDescribe your first computer program.
I programmed a character-based worm moving on the screen, written in the legendary Texas TI-99/4A Extended BASIC. A few days later, I could create my first sprites and I could detect collisions between them. Many years later, my first computer program for the x86 family was a database manager for electronics components. I wrote it in Turbo Pascal and I also created libraries in C for database access operations. Performance optimization was very important when clock speeds were less than 30 MHz (0,03 GHz).

Which programmers influenced you the most during this period and why?
Andrew Tanenbaum. He is the best explaining how different operating systems work using word pictures and code.
Charles Petzold. I learned to develop Windows software with his books.
Ray Konopka and Marco Cantu. I worked with Delphi for many years. I learned to create components with their books. I could use this knowledge whilst working with other programming languages.
Erik Gamma. Design Patterns. I cannot design software without thinking about design patterns.
Grady Booch and Ivar Jacobson. Object-oriented methodologies.
Steve McConnell. Excellent methodologies and experiences.
David Flanagan. Java.
Kent Beck. Agile manifesto.
James Strachan. Groovy.
Herb Sutter, Cameron and Tracey Hughes, and Joe Duffy. They are evangelizing concurrency and parallel programming in many different programming languages.
Bill Gates, Steve Jobs and Linus Torvalds. Business Intelligence using completely different models.

How would you summarize your early professional years?
I inherited my passion for computers from my father. I had the opportunity to learn about computers electronics “playing” in my father’s electronics laboratory. I could learn how chips worked. Then, I learned how to program them using many different programming languages. I learned reading books and I could create my first commercial software (when software was sold in nice boxes) before going to a University.
I wrote my first book about computers hardware “Estructura Interna de la PC / Inward PC Structure” and my professional career changed in that moment. I became an author and a computer science professional. I never stopped writing. However, I had to work in many ugly programming languages.
I became a project manager too early. However, I stayed tuned with new technologies, new tools and new programming languages.
I understood that it was necessary to be competitive in a very globalized profession. Luckily, nowadays I have 9 clocks in my desktops with different time zones.

What attracted you to parallel programming and multi-core?
I’m always researching about new technologies. I’ve always been fascinated with advances in hardware and in electronics. I have my own laboratory with many high performance workstations and servers.
I’ve always wanted code to run faster. I’ve been optimizing small and huge applications taking advantage of hardware resources.

What are the core values and principles you’ve acquired during your career?
Ethics.
Commitment.
Respect copyrights and licenses.
Research and development is always necessary.
Design, then code.
Organize, then code.
Comment your code.
Rewrite your code.
Test your code.
Re-test, your code.
Learn, learn and learn.
In this industry, there’s always something new to learn about.

How do you stay productive?
Staying tuned with new hardware, methodologies and products. Changing all the time. Making paradigm shifts as soon as possible. Hardware is very important. You need the best hardware to develop the best software and the best information systems. Nowadays, you cannot develop a competitive parallelized application using a single core microprocessor. I always need to improve designs. I read more than 20 books per year and specialized websites and journals.

How do you see the software industry in general and specifically parallel programming and multi-core evolving over the next 5 years?
The programming languages that don’t evolve to offer easy parallelization features won’t survive.
Functional programming features are going to be part of classic programming languages.
Multi-core is here to stay. There are going to be new standardized APIs, new compilers and new programming languages to take advantage of dozens of cores per physical chip. The number of hardware threads per physical core will grow.
There are going to be two worlds: sequential world and parallel world (developers prepared to work with concurrency and parallelism).
There are going to be new operating systems and new versions of existing ones, taking more advantage of parallel hardware. The great question is: Who is going to win the market?
Netbooks and other MIDs will push software developers to take advantage of multi-core CPUs with low clock rates.

Tagged , ,

Juan Gabardini

thumb_juan_gabardini What attracted you to software development?
I got in touch with my first computer back in 83, a TI 99/4A. At this time the high school “Computer Lab” was been installed. It consist of 8 computers. Wow! Just too cool stuff for a nerdy guy, who already thought that soldering transistors and LEDs to make a VU meter is the coolest thing on Earth. Add to this that teaching computer, and so using the Lab, was starting with the then first year students, which I wasn’t!. Ah, eating the forbidden fruit!

For some time I dwelled in the gray area between hardware and software. I finally made my mind due to software’s greater freedom to create or maybe a lack of interesting hardware projects around.

Who influenced you the most early in your career, and how?
I started my carer in a low tech environment, Chaco is not known for its high tech industry. That makes the work of the late Luis ‘Lucho’ Verga more inspiring. He set up an institute where computer skills were taught to children and grown up people. Logo, Basic, Assembler … different students, different teachers, but the same willingness to learn and share in an environment that nourishes it.

How would you summarize your early professional years in technology?
My first job, with 17 years old, was teaching Basic. Then I worked 3 years in business software, in various software companies and freelance. After a period pursuing my engineering degree, I started working in Nuclear Medicine imaging software at Veccsa. This was the first time in that I really felt proud of my work. I designed and built software that interacted with hardware, was supported internationally, had complex algorithms and user interaction, … Paradise.

What are you currently working on?
I’m on agile developing! I’m practicing (mostly testing), teaching and coaching agile development. I also taking part in the organization of Ágiles 200x and the Agile Open Tour.

What are the core values and principles you’ve acquired during your career?
Trust people: in doubt, trust.
Naiveté: I try to keep my mind open and listen, really listen, to people.
Simplicity & Balance: both in technical and human problems, I try to keep it as simple as possible, but not simpler.

How do you stay productive?
I look for learning opportunities, interesting projects and great teams to work with. I talk with different people (as many as I can) and ask them how they do things.

Where do you see the software industry in 5 years?
More people will be exposed to increasingly complex and powerful systems, for instance multi core processors that put parallel processing in the hand of every developer, or smart phones that put computers in everybody, everywhere, everytime. New tradeoffs will emerge about how we program them, what can be done, how we interact between us and with computers.

I think that Apple will continue to be restricted to the high end market and eventually decline due to it lack of community. The walled garden mentality will not nourish it. Open standard, as Android, will grow stronger. Microsoft will be playing catch up with Google for a while. Will Microsoft follow the IBM path, losing dominance? Or would it come out stronger as after the Internet/Netscape episode? If Google maintain its dominance in the cloud, it can get the heat of being the big guy,…and so, it would be also the Bad guy. As we all move more and more to the cloud, tensions between a centralized/commercial data repository vs federated/community model will grow stronger. After free / libre open source we will have a free / libre data social movement. Sites like Facebook will become the new Microsoft.
Interesting times!