Mostrando entradas con la etiqueta software-engineering. Mostrar todas las entradas
Mostrando entradas con la etiqueta software-engineering. Mostrar todas las entradas

2008/12/10

Pushing agility from the business side?

A possible scenario:

1. IT happy with status-quo: Big Design Up Front and Waterfall.
2. Stakeholders accept non-agility as a fact of life.
3.Tell stakeholders that they are entitled to learn, to defer
decisions until the have more info, to change their opinion. That some
of their competitors use those right to their advantage.
4. Stakeholders will push agility upon IT

Just in case it helps Ferran Rodenas to get some idea to break the status-quo

2008/08/03

Falta chico con experiencia

Uno ya se va acostumbrando a que el papel del programador no se valore mucho, incluso por gente que se supone mejor informada, pero esta perla me ha hecho reir:

Falta chico con experiencia en programación PHP, AJAX, MySql, sistemas, etc. También precisamos un diseñador gráfico manejando bien Photoshop y Flash. Interesados enviar CV con datos completos, teléfono de contacto y horario para llamar. Si cumples el perfil puedes tener una entrevista de inmediato.

2007/11/30

Yay! Barcelona Python Meetups are here!

Back from the first Barcelona Python Meetup Group event. The event was good, with two talks:

If the event was good, the post-event (beers, croquetas and bravas) with Maik was great and I'm bringing home lots of food for thought. Most of the talk was about Funittest (Making it easy to go from use case to functional test). Maik uses daily a high level Test Driven Development flow:
  • write the functional test, to get aligned with the user's needs/customer value,
  • write unit test, that can be driven faster and focus in the approapiate level of abstraction
  • write the code
My impression is that his ideas have lots of commonalities with Fit and Fitness, and the story-based-testing that they advocate. Maik said that Funnitest's theoretical foundation can be grasped in The Braidy Tester articles; I'm adding them to my to-read list...

Beyond functional testing, the programmer's flow, the business-technical gap, Barcelona, Sevilla, tele-working... an intriguing an promising idea: the I-told-you-that-this-was-a-wrong-decision year-end bonus.

2007/10/22

We make mistakes

Everyone makes mistakes. Some times we are aware of them, some times we are not: looks like putting the blame of mistakes in someone or something is part of our nature. It's a pity, because we let pass by lots of learning opportunities.

Flickr picture by srslyguys

We software engineers are lucky enough of being faced in our trade with lots of mistakes that we cannot blame in any one but ourselves. Of course, some mistakes allow allocating blame on our customer, our team, our tools... My teammates often hear me cursing loudly Bill Gates or Linus Torvalds, but they know I'm jocking: we are experienced enough to know that select isn't broken. When writing code, you rarely can put the blame on someone/something else unless you are a pathological liar; that's good.

I would like to think that having to face our daily mistakes helps us weaken our blame-someone-else voice in other areas of our life, but, honestly, I don't have any evidence about it. But, just in case, I'd like my kids to learn the we make mistakes, we learn from them lesson/mindset, and this has been one of the main drivers in getting our new home pet, a Lego Mindstorms NXT Robot.

2007/10/06

Jazz in the hood

Jazz band playing
Martin Espinach, coffee machine and lunch mate, gave yesterday a very nice internal talk about how his previous project used bugzilla and Mylyn to help them plan, assign and track team tasks. Although they were initially excited about Mylyn's task-focused UI, none of the team members ended up using it; they did love Mylyn's ability to get notifications from bugzilla. It looked like a neat solution.

When his very detailed talk was almost done, he told us that, for their recently started new project, they are using IBM Rational Jazz. I felt like killing him, but I then I would have missed the chance to complain about his talk during every afternoon coffee in the next weeks.

And Jazz? So far, they are loving it. I'll have to ask him to demo it to our team.

2007/05/16

Coding Contest in Second Life

Just good an email from Christoph Steindl, a former IBM colleague, where he used to co-lead the Agile@IBM community and write an excellent blog.

Are you familiar with the Coding Wars in Tom DeMarco and Tim Lister's Peopleware? Christoph is into something similar: the cool Catalysts' Coding Contest (CCC) that his company is running:

  • Who is faster? Who is more efficient? Who is more effective? Who is more productive?
  • Does "Pair Programming" really make you faster?
  • Does "Test-Driven Development" really lead to fewer bugs?
  • How many ways are there to solve a problem?
  • Is it right that good developers only write 30 lines of code for which mediocre developers need to write 300 lines?
Catalysts organizes a coding contest to go further into some of these questions.
They will be running the contest in Linz, Austria (with post food and beverages) and in Second Life (do avatars drink and eat?).

Looks like a bright idea to me. I bet that having participants with different backgrounds, and letting anonymous participation will provide coders and organizers useful insight. I don't know if other companies do this sort of thing internally, but it looks like very interesting way to get information, a honest measurement not linked to rewards and punishments (note to self: bring this to IBM's internal ThinkPlace).

I'm even considering ignoring my usual too-busy-with-real-life-to-get-me-a-second-life to be able to participate via Second Life.

2007/04/27

Evangelizing and toilets

One of Google's little secrets that has helped us to inspire our developers to write well-tested code: we write flyers about (testing techniques) and then regularly plaster the bathrooms all over Google with each episode, almost 500 stalls worldwide.

We've received a lot of feedback about it. Some favorable ("This is great because I'm always forgetting to bring my copy of Linux Nerd 2000 to the bathroom!") and some not ("I'm trying to use the bathroom, can you folks please just LEAVE ME ALONE?")
Stumbled upon this evangelizing technique in Introducing "Testing on the Toilet", while googling trying to decide which JavaScript unit testing framework use (yeah, shame on me, I've been doing lots of JavaScript lately without doing Test Driven Development).

They not only use a surprising evangelizing technique, but also have a great banner and motto for their blog: "Debugging sucks. Testing Rocks."

2007/03/21

Play with ClearQuest and ClearCase without installing them

I've been playing with IBM Rational ClearQuest and ClearCase without doing any configuration. Cool. I'm hoping that we'll do the same for more IBM Rational products.

You can access a dW server with a tutorial environment setup using a Citrix client. Go to Trial: Rational ClearCase V7.0 (I just reported it, but, in case that you take the first tutorial, you'll see that the screenshots of the first part don't match the actual product: you'll have to "connect" instead of "login", and you better know that pat's password is pat and that she has the lead project role).

2007/01/23

Grandmothers and designers' expectations

Bruce MacIsaac:

Systems often outlive the assumptions of their original designers. The millenium bug is a classic example. Assuming that the software would be replaced by 1999, early designers used two-digit dates. That assumption cost billions to correct. My own grandmother was the victim of a similar false assumption. When my grandfather passed away in the 1970s, she bought a dual headstone, precarved with her name and "19__". At the age of 112, Mary MacIssac, like many legacy systems, continues to outlive the designer's expectations.
From the Leverage Legacy Systems chapter of Agility and Discipline Made Easy. Practices from OpenUP and RUP (amazon.com,amazon.co.uk ,safari), by Per Kroll and Bruce MacIsaac.

Bruce dedicates the book to his grandmother.

2007/01/04

Planning Poker

I'm reading Mike Cohn's Agile Estimating and Planning (amazon.com amazon.co.uk); so far, a great book. Jim Highsmith's foreword is well worth reading.

On the chapter of techniques for estimating, Cohn describes Planning Poker, something that feels so simple and effective that you almost have to run to join your team and give it a try. You can read the description at http://www.planningpoker.com/detail.html. The site hosts a tool to enable distributed teams to play Planning Poker. Disclaimer: I still haven't played poker nor checked the tool.

One the nice things of Planning Poker is that it is not tied at all to software development: projects from other domains that have to be sized by guestimates (like writing a complex report) fit nicely in this approach.

2006/12/28

Mary Poppendieck: Competing On The Basis Of Speed

I watched Mary Poppendieck's talk at Google: Competing On The Basis Of Speed. It is a good talk, but it does not compare well to Mary and Tom's most excellent Lean Software Development: An Agile Toolkit (amazon.com amazon.co.uk safari).



I took some messy notes, way too powerpointish :-(. My advice: go for the book.

Intro

  • Fast companies (e.g. Dell, Toyota, Google)
    • competitive advantage
    • lower costs
    • large barrier to entry for competition
  • Speed's enemy: complexity
  • 3 faces of complexity [1]:
    • waste: anything that depletes resources without adding customer value
      keep it simple
    • inconsistency: anything uneven, unbalanced, irregular
      make it flawless
    • overload: excessive burden
      let it flow
Keep it simple (video 5m45s)
  • Common infrastructure:
    • Architecture
    • Conventions: naming, coding, security, logging, ui, configuration management...
    • Tools
  • Refactoring to keep simplifying
  • Sustainable simplicity: change tolerance (video 7m52s)
    • 60%-80% of code is written after the first release
    • the development process has to anticipate change
    • decide as late as possible, when you have more info
      • make decissions reversible whenever possible
      • make irreversible decissions at the last responsible moment
      • set-based development: explore the whole solution space at once (Toyota worked on 10 motors at once for the Prius). Keep multiple options, and one has to work at the last responsible moment.
      • paradox: these redundant solutions are not waste
Make it flawless (video 18m28s)
  • 2 kinds of inspection
    • to find defects -> waste
    • to prevent defects -> essential
  • Mistake-proof every step: detect defects the moment they ocurr
    • don't track defects on a list: find them and fix them
    • test first, automated test suites
  • Role of testing (video 21m55s)
    • manufacturing:
      • a quality process brings quality into the products (unlike in software development traditional view)
      • finding process in verifcation -> you have a defective process
    • focus on preventing defects. Cannot be at the end of development, adding waste in the form of test-fix churn. It has to be integrated into the development process.
  • 4 kinds of testing
    • unit testing: developer intend. Automate them.
    • acceptance/regression testing: business intend. Automate them.
    • exploratory + usability testing. Manual by definition.
    • property (response, security, scaling....) testing. Take advanteg of tools.
  • Technical debt (video 26m55s)
    • anything that makes code difficult to change
    • the longer you acquire debt the worse it gets
      • cost ofcomplexty is exponential
      • regression deficit: more features, longer testing, until it dominates the release cycle
      • unsync code branches: the longer apart, the longer it will take to merge
  • Build Quality in (video 33m17s)
    • configuration management, one click build, automated testing, continuous integration, frequent depoyment
    • nested synchronization: test as early and often as possible
      • every check in - unit tests
      • evrery day - regression test harness
      • every week - operations test harness
      • every iteration - deployment ready code
Let it flow (video 43m40s)
  • cycle time : customer problem to customer solution.
    • software development cycle time: requests to deployment
  • process capability: wether you have or not a reliable and repetible cycle time for a given set of problems
  • delays: hint of opportunities for cost/waste reduction
  • queuing theory
    • total cycle time = number of things in process / average completion rate
    • shorter cycle time: ability to add new features
    • small tasks and slack decrease the total cycle time
      • utilization paradox (48m23s) - not having slack increases the cycle time. This is one of the ideas behind 3M's 15% of free time rule (Google's 20% precedent). Organizations targeting 100% utilization are meassuring the wrong thing.
  • Keep a honest queue/to-do list: short and in the realm of the things that can be reasonably expected to be done; no useful purpose for long queues
  • Stablish a regular cadence, limit work to capacity, minimize the size of things in the process.
System meassurements
  • cycle time (lean classic) - process capability
  • business case (are you making money) - business return
  • customer satisfaction sustainability
    • net promoter score [2]

[1] From Matthew May's The Elegant Solution: Toyota's Formula for Mastering Innovation (amazon.com amazon.co.uk)
[2] Frederick F. Reichheld's The Ultimate Question (amazon.com amazon.co.uk)

2006/12/13

OpenUP: a short intro to the Open Unified Process

I listened to Introducing OpenUP, a very interesting ibm internal presentation by Per Kroll and Ricardo Balduino, and hosted by the Agile@IBM community. I'm highly impressed. The slide set used has quite in common with this powerpoint, available in the Eclipse Process Framework Project (EPF) community news page.

Take the RUP principles, borrow freely from XP, Scrum, Agile Modelling and DSDM, shake, and you get a methodology that makes lots of sense despite having a mostly ungoogleable name...

OpenUP/Basic is organiced around 4 subprocesses: Collaboration, Intent Management, Management, Solutions Development. It has 6 different roles.

OpenUP roles and subprocesses

Did you notice that the tester role works in the intent management?

OpenUP/Basic is minimal, complete and extensible.

  • Minimal means that it is not the kind of methodology where you have a huge role and workproduct initial list that you have to cleanup for your project (and that usually makes you shop more than you really need...): 6 roles, 18 tasks, 20 work products, 200 printed pages.
  • Complete: can be manifested as an entire process to build a system (scrum does not deal with the solution construction subprocess)
  • Extensible: can be used as a foundation on which process content can be added or tailored as needed. In fact OpenUP consists of
    • A base process - OpenUP/Basic
    • Extensions to this base process, such as Model Driven Development content
The main worproducts and their realtion to roles/subprocesses can be viewed here:

OpenUP roles and workproducts

The Work Item List is very close to the scrum backlog (not only for the current iteration, but for all the project). Of course, it is iterative, a la RUP:

OpenUP Iterations

But adaptable! The project plan is a 2 pages doc, describing the goals for the different iterations. And, since each iteartion brings its learning, the plan changes:

OpenUP iteration assesment

I really like the concept of "Stakeholder Satisfaction Space".

Other things that I'd like to highlight:
  • daily meetings
  • test driven developemnt
  • use case based
  • promotes a readable representation of the architecture. Much of the architecture can be
    • Selected instead of designed (patterns)
    • Referenced instead of described

OpenUP/Basic instantiates the core values of the agile manifesto in some slightly more concrete core principles:
OpenUP/Basic Key principlesAgile manifesto
Collaborate to align interests and share understandingIndividuals and interactions overprocess and tools
Evolve to continuously obtain feedback and improveResponding to change over following a plan
Balance competing priorities to maximize stakeholder valueCustomer collaboration over contract negotiation
Focus on articulating the architectureWorking software over comprehensive documentation

Does it work? I cannot tell, but at least looks like its building blocks have proven to work often.

2006/12/06

dW chats: Grady Booch on the latest Rational tools release

Another developerWorks chat that looks very interesting: Grady Booch answers your questions about this week's Rational tools release. On Thursday December 7th, at 4:30 pm his time or 10:30 pm my time.

I did not learn about this from Booch's blog itself, but from a comment by Ferran Rodenas to a post in Kelly Drahzal's blog. The interesting bit about this is that Ferran works for "la Caixa", a very important ibm client, and it is a very good thing for me and some team mates to be able to read his posts and keep track of his blogroll. Or explore his linkedin profile and our common connections. The openess that blogs and social software have brought rocks!

2006/12/05

dW chats: Making the move to Ajax

IBM Rational's Bill Higgins will be the moderator of a developerWorks chat on Ajax. to be held on Wednesday December 6th at 1pm his time or 7pm my time. I was not aware of these dW chats going on (this is the second one, as far as I've seen).

2006/11/15

No lo leerán

No sólo este blog, sino gran parte de la documentación que se escribe en los proyectos de desarrollo de software.

Después del No Lo Necesitarás, el No Lo Leerán. O YAGNI (You Aren't Gonna Need It) y TAGRI (They Aren't Gonna Need Read It). Dos grandes principios que es bueno recordar en el desarrollo de software, al escribir artículos y correo, al hacer la carta a los Reyes, al ir a la ferretería...