Agile 101 available for pre order

New ebook, Agile 101, is already available for pre order in Kindle stores worldwide. You can find the link to the Amazon.com page here: Agile 101 – Practical Project Management. Order it now and you’ll receive your copy on 5th of November when it will be finally released.

You don’t need a Kindle device to read it, all it takes it’s to download a Kindle reader app for PC, Mac or Android from Free Kindle reading apps or just start reading in any device typing read.amazon.com in your web browser.

It is the English version of the 3rd edition of Gestión práctica de proyectos con Scrum (Spanish edition) which reached twice number 1 in sales at Amazon Spain (across all genres), and remained in the Top 100 for five consecutive days.

With Agile 101 you’ll learn:

  • The main advantages and disadvantages when implementing Scrum. The things you should bear in mind and those you should avoid.
  • How to make agile estimates.
  • How to handle the project’s budget while allowing your client to modify the required functionality.
  • The lessons I have learned during my years as a software development professional. I will tell you what I did right but also what I did wrong, so that at least you don’t make the same mistakes I did.
  • Tips and tricks to prepare for the Professional Scrum Master certification (PSM I), so you improve your chances of landing better jobs.
Begoña Martínez translated the book into English. You can also find her on her LinkedIn profile. David Nesbitt proofread the translation.
Cover and back cover of the new edition have been designed by Alex Caja Almonacid (also cover and back covers of Spanish editions of Gestión práctica de proyectos con Scrum and Certificación Professional Scrum Master – PSM I).

Agile 101 – Practical Project Management
Publicado en Blog, Blog 1, English | Etiquetado , , | Deja un comentario

Oracle XE, Forms 6i y un viaje a Ecuador

Hace algún tiempo tuve que realizar una implantación de una aplicación desarrollada en Oracle Developer 6i (Forms y Reports) para un museo. Por razones económicas decidimos utilizar una licencia Oracle Express Edition 10g, pero al intentar arrancar la aplicación accedíamos a ver durante un instante la consola de Windows y se cerraba inmediatamente.

El proyecto se estaba pasando de las horas estimadas para resolverlo y ahora teníamos un problema con el que nadie en la empresa se había topado antes. Consultamos la página metalink de Oracle, foros y páginas sobre desarrollo con Oracle.

Finalmente, tras muchas búsquedas en Google obtuvimos la respuesta al problema en el foro de Oracle Users Group de Ecuador, exactamente en una entrada de Paola Pullas y los comentarios al mismo.

Parece ser que Oracle XE 10g necesita de un parche para funcionar con Developer 6i y además cambiar el juego de caracteres a UTF8. Les indico aquí los pasos que tuvimos que realizar.

Primero, pedirle al DBA responsable de la instalación de la base de se conectara a la base de datos XE como SYSDBA en el sqlplus y ejecutara las siguientes instrucciones para cambiar el juego de caracteres.

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;
ALTER DATABASE CHARACTER SET INTERNAL_USE UTF8;
SHUTDOWN;
STARTUP RESTRICT;
SHUTDOWN;
STARTUP;

Posteriormente fue necesario ejecutar el siguiente parche de Oracle sobre la instalación de Oracle Developer: Parche 18 de Developer, Patch number 4948577.

Espero que esta entrada resuelva el problema a algún desarrollador. Seguro que aún quedan sistemas y aplicaciones que están usando esta configuración.

Publicado en Blog, Blog 1, English | Etiquetado , , | 2 comentarios

Totales en blanco en Oracle BI Discoverer

Otro post técnico. En este caso cómo resolver el problema de los totales en blanco en Oracle Business Intelligence Discoverer:

En algún trabajé como administrador de la EUL (capa de usuario final) con las herramientas de Discoverer y nos encontramos con un problema que nos trajo de cabeza durante unos días: Los totales de algunas columnas se mostraban en blanco a pesar de contener datos y solamente mostraban una cantidad cuando sumaban sólo un registro. Si había más se mostraban vacíos.


Es algo que aparentemente puede parecer un error o bug de esta herramienta pero resultó ser una decisión de diseño en la herramienta. Me explico:

Si tenemos dos carpetas relacionadas entre sí como maestro-detalle y en la carpeta maestra tenemos la cantidad o el número que vamos a sumar, tendremos un problema ya que la suma contará la cantidad del registro maestro tantas veces como elementos haya en el detalle, y probablemente no es esto lo que queremos.

Mejor verlo con un ejemplo. Si tenemos una carpeta maestra con los datos de guías turísticos en la que además indicamos cuál es la tarifa que cobra cada guía mensualmente:

Id.     Nombre Tarifa
1         Antonio    2000€
2        Juan          1000€
3        Marta        1500€

Si además tenemos una carpeta detalle en la que tenemos la relación de idiomas que habla cada guía, tendremos algo como esto:

Id.     Nombre     Tarifa Idioma
1         Antonio        2000€        Inglés
2         Juan              1000€        Inglés
2         Juan              1000€       Alemán
2         Juan              1000€       Sueco
3         Marta            1500€       Alemán

Si hacemos un ‘Summary‘ o ‘Total‘, la herramienta de Discoverer nos mostrará que Antonio cobra 2000€ al mes, Marta 1500€ y que Juan cobra «_____». Es decir nos mostrará la casilla en blanco o vacía. Si mostrase un resultado nos daría 3000€, cantidad que no es la que realmente cobra Juan.

Tenemos algunas formas de resolver esto:

  1. Quizás la cantidad que estás sumando no deba ir en la carpeta detalle. Deberías revisar el diseño de la base de datos.
  2. Quizás la relación entre ambas carpeta deba ser de 1 a 1 y lo tienes puesto por error de 1 a muchos.
  3. Si todo lo anterior está correcto, hay una cosa más que puedes hacer: Decirle a Discoverer que sume la cantidad de todas formas, aquí están los pasos:
    1. Activar en las opciones del Discoverer Desktop la casilla ‘Show the sum of the values displayed in the contributing cells‘
    2. Establecer con valor 1 en lugar de 0 las propiedades AllowAggregationOverRepeatedValues yAggregationBehavior del fichero prefs.txt en el servidor de Discoverer en la ruta $ORACLE_HOMEDiscovererutil

Este último caso debemos tomarlo siendo conscientes de lo que supone. Aunque sea perfectamente válido para el caso que estás intentado resolver es posible que en otro informe que en el futuro esté colgado del mismo servidor, impidamos ver al administrador que hay un problema (fan trap) y se muestren totales con importes erróneos como el de la tarifa de Juan.

Publicado en Blog, Blog 1 | Etiquetado , , , | Deja un comentario

Upcoming book: Agile 101 – Practical Project Management

New book, new prezi. I have prepared for you a presentation of the upcoming book Agile 101. There you can find a short description of the chapters you can find inside.

Check it out on Prezi site or directly here:

Publicado en Blog, Blog 1, English | Etiquetado , , | Deja un comentario

Agile 101: Broken Windows Theory

In the late 1960s, a university professor carried out a psychological experiment. He left two identical cars in two different neighbourhoods. One in a poor, high-crime neighbourhood in the Bronx, New York. The other one in a rich, quiet area of Palo Alto, California. Shortly after it was abandoned, the car in the Bronx started to have all its parts stolen. First the radio, then the tires, the mirrors, and anything of value. Yet the car abandoned in California remained undamaged. The study did not end there. When the car in the rich neighbourhood had been intact for a week, the researchers broke one of its windows. This escalated quickly, and soon afterwards the effect was the same as it had been in the Bronx. Theft and vandalism swiftly reduced the car to its bare bones in both neighbourhoods. A car with broken windows sends out a message of disrepair and negligence. It spreads the notion that anything goes. Every new act of vandalism reinforced and broadcast the idea that nobody was taking care of that car. That nobody cared.

A similar idea can be seen in the training of health professionals. If a patient or an elderly person has a stain, or gets dirty somehow, that person should be cleaned. Even if it’s only a little spot. If patients stay in that state, they will be less careful themselves in keeping clean. They will tend to feel that it doesn’t matter anymore, it’s already dirty. So their general state of hygiene, self-esteem, and thus health level will start to decline.

The results of this psychological study are applicable in many situations of our daily lives: from the care of our home to the maintenance of our car. But they’re also applicable to our jobs. For example, if you’re a programmer or a project manager, and you allow for a new version to be deployed. But you haven’t had it sufficiently tested. Or if you leave that technical “debt” unpaid in the code now —because “we’re in a hurry.” You’d be broadcasting to the whole team the feeling that anything goes. That “it’s enough as it is” and that one can leave quality aside. Sooner or later the phone will ring with complaints from users. Soon we will see a lengthy queue of reported bugs in our queue.

When we apply this theory to software, it’s helpful to explain the term entropy. In physics, entropy is the level of disorder or randomness in a system. Say you see badly indented or commented code. Or a bad choice when naming a variable or some bad design. Fix it as soon as possible or schedule its correction for the near future. Take some sort of action to limit disorder or it will expand. It will create the feeling that any patch or quick fix is valid.

If some code (or thrown-together code) will make your system deteriorate quickly, impeccably written and designed software will have the opposite effect. It will make new programmers avoid breaking something so beautifully built. They will make an effort to put in place the best code they can write. Now you know: make your life and your project easier by fixing broken windows as soon as they appear.

You can find texts like this and many other about how to manage agile projects in my book Agile 101: Practical Project Management (available on Amazon).

Book on Scrum: Agile 101, Practical Project Management
Agile 101 – Practical Project Management

Translation by Begoña Martínez. You can also find her on her LinkedIn profile. Proofreading by David Nesbitt.

Publicado en Blog, Blog 1, English | Etiquetado , , | Deja un comentario

Promociones de Amazon: Kindle Flash y PublicaConKindle

Amazon quiere celebrar durante todo el mes de octubre el fenómeno de la autopublicación con una promoción especial en una selección de libros entre los que estará mi libro Certificación Professional Scrum Master.

Durante esta promoción, llamada #PublicaConKindle, el libro estará a la venta por sólo 0.99€ en lugar de los 2.99€ habituales. Amazon publicará pronto una página especial dedicada a este evento para promocionar la publicación independiente. Pondré el enlace por aquí cuando esté listo.

Habrán muchos otros libros en promoción durante todo octubre con esta promoción así que aprovechen ese mes para ver si está en oferta alguno de los libros que les gustaría comprar.

Mi primer libro, Gestión práctica de proyectos con Scrum, fue seleccionado de nuevo hace unos días para una promoción Kindle Flash. El 5 de noviembre este libro estará durante todo el día a tan sólo 1.49€. Avisaré también en este blog unos días antes por si te interesa comprar el libro en ese momento.

Aquí tienes los enlaces a mis dos libros en Amazon:

Amazon.com
Amazon.es
Amazon.com.mx
Amazon.com
Amazon.es
Amazon.com.mx
Publicado en Blog, Blog 1 | Etiquetado , , | Deja un comentario

Dudas sobre Scrum

Un lector de este blog me preguntaba hace ya algún tiempo algunas dudas que le surgían en el uso de Scrum en sus proyectos. Algunas de ellas pueden ser bastante comunes a otros equipos de Scrum o que yo mismo he tenido cuando intentaba aplicar Scrum. Aquí les pongo algunas de estas respuestas (sería la solución que yo aplicaría en los tipos de aplicaciones que conozco pero puede que no sea el mismo tipo de proyecto/equipo/producto/etc.).

¿Qué pasa cuando una historia de usuario requiere análisis que debe ser desarrollado en el propio sprint?¿el resto del equipo que no analiza se pone con otras historias de usuario del Sprint Backlog?
La historia de usuario es ya parte del análisis y debería estar bien definida y concretada cuando se va a comenzar un sprint. Es cierto que en ocasiones, cuando el equipo de trabajo comienza a realizar la tarea puede encontrarse con dudas o puntos que no tienen claro. Debería bastar con una llamada al Cliente o una breve reunión para resolverlo.
Es un punto complejo éste. Es cierto que es habitual que el desarrollo pisa al análisis y llegue la hora de desarrollar funcionalidades que aún no están bien analizadas. Para esto es bueno mantener reuniones frecuentes con el cliente para ir avanzando y concretando tareas previstas para más adelante de forma que a la hora de planificar el sprint éstas funcionalidades estén listas para comenzar. Si aún así el desarrollo sigue encontrando tareas que aún no están bien descritas quizás deba dedicarse una parte mayor del equipo a analizar y concretar estas tareas en lugar de a desarrollar.
¿Qué ocurre con un equipo que mezcla seniors y juniors con grandes diferencias salariales?¿van a empujar todos con la misma intensidad? 
Bueno, en principio, se supone que la diferencia salarial corresponde a su nivel de experiencia y saber hacer en su trabajo por lo que los junior cobran menos. Conocen aún poco sobre la tecnología o el producto y que, a medida que van aprendiendo y adquiriendo experiencia esta diferencia se acorta o desaparece.
Si algún miembro del equipo entiende que no cobra a razón de lo que está aportando es cierto que puede perder el ánimo o las ganas de trabajar. Aquí entramos en un asunto de recursos humanos en lugar de Scrum pero yo le aconsejaría que comente con sus responsables el trabajo que ha realizado y lo que ha podido aportar y vea con ellos si tienen la misma percepción sobre esto y consideran que en algún momento puede hacerse una revisión de su salario.
¿Qué ocurre cuando el Team auto-gestionado tiene que tomar una decisión técnica?¿vale igual el voto de un senior que el de un junior?
Yo no pondría valor a los votos del equipo de trabajo. A veces la mejor idea puede venir del que lleva menos tiempo en el trabajo, aunque lo habitual sea que los senior sean los que más aporten en la discusión que llevará a la decisión técnica que finalmente se tome.
Algo que he utilizado a veces es escribir en una pizarra las ventajas e inconvenientes de cada solución. A veces, nada más terminar de escribir esos pros y contras todos nos damos cuenta de cuál es la solución que más conviene ahora. Otras veces esto no está tan claro y hay que apostar por una aunque no haya consenso.

Cuidado si la opción por la que se apuesta es siempre la de ‘hay que hacerlo así ahora porque no tenemos tiempo‘. Es verdad que a veces es la solución que se debe tomar ante una urgencia. Explícale bien al equipo de trabajo el por qué de esta decisión en estos momentos pero explícale también al Cliente que ahí ha quedado un asunto por resolver que deberá ser programado para un próximo sprint si no queremos que esa deuda técnica nos acumule más errores pronto. Si no hacemos esto, con los años, el proyecto se nos puede convertir en uno de esos proyectos en los que todo el equipo de trabajo está resolviendo bugs y no nos queda tiempo para desarrollar nuevas funcionalidades.Si te ha gustado este post, puedes encontrar más contenidos que expliquen Scrum de forma práctica y desde su base en mi libro en Amazon Curso práctico de Scrum: Algo más que teoría.

Libro en Amazon: Curso práctico de Scrum: Algo más que teoría
Libro en Amazon: Curso práctico de Scrum – Algo mas que teoría

 

Publicado en Blog, Blog 1 | Etiquetado , , | Deja un comentario

Certificación Professional Scrum Master best seller en Amazon.com

Hoy ha sido mi libro Certificación Professional Scrum Master el que ha llegado a la categoría de best seller en la categoría de Informática e Internet para los libros Kindle en español de Amazon internacional.

También ha llegado al número 6 en ventas para todos los libros (Kindle y en papel) en español para la categoría de Computación e Internet. Estas son unas imágenes de esas posiciones:

Certificación Professional Scrum Master best seller en Amazon.com
Libro preparación PSM I best seller en Amazon.com
Certificación Professional Scrum Master número 1 en categoría de Informática de Internet de Amazon.com
ebook Certificación Professional Scrum Master número 1 en Informática e Internet en Amazon.com

Si quieres saber cómo puedes preparar la certificación Professional Scrum Master I de Scrum.org, saber que tipo de preguntas puedes encontrar ahí y prepararte con algunos pequeños tests de práctica, puedes encontrar el libro en Amazon.com, Amazon.es o Amazon.com.mx.

También puedes encontrar más información sobre esta guía de preparación para la certificación PSM I en ese enlace a esta misma web.

Aquí están los enlaces a cada una de las tiendas Amazon donde se puede comprar el libro:

Amazon.com
Amazon.es
Amazon.com.mx
Publicado en Blog, Blog 1 | Etiquetado , , | Deja un comentario

Gestión de proyectos con Scrum entre los más vendidos en Amazon México

Durante casi todo el día de ayer mi primer libro, Gestión práctica de proyectos con Scrum, estuvo entre los más vendidos en diversas categorías de Amazon México:

  • Número 1 en la categoría Desarrollo de Software de los libros Kindle.
  • Número 1 en la categoría Desarrollo de Software de todos los libros (Kindle y papel)
Llegó a alcanzar el puesto número 739 en ventas entre todas las categorías de la tienda Kindle de México. Además, aún hoy, si se busca en Amazon México por la palabra Scrum, mis libros salen en las posiciones 1 y 5 (Certificación Professional Scrum Master). Les dejo unas imágenes de las posiciones que alcanzó:
Gestión práctica de proyectos en los más vendidos en Amazon México
Gestión práctica de proyectos número 1 en dos categorías de Amazon México
Si aún no lo has leído y te interesa comprarlo, aquí tienes los accesos a las tiendas de Amazon en las que se vende:
Amazon.com
Amazon.es
Amazon.com.mx
Publicado en Blog, Blog 1 | Etiquetado , , | Deja un comentario

From Agile 101: The role of product owner

Are you sure you need a Clippy-like assistant on your app?

Many titles could be used for the person who acts as Project Director on the client’s side: the person with the product vision that the company needs, the one that represents the company in the work team. If that person belongs to the external organisation that has ordered the work, the title which fits best might be Product Owner, like in Scrum. That’s because that person literally owns it, is the “Owner” of what will be built. If this person belongs to our own organisation—someone who will represent the “client” in the project—the title normally used is Project Manager or even Business Analyst, depending on the company doing the hiring and naming. Personally, maybe because of the type of projects that I normally manage, I’m more comfortable using the title Project Director.

Whatever we decide to call these people, their contribution to a project is key to its success. They decide which features the project will have, which ones are indispensable and which ones are not. Maybe they will be the users of the final project, and thus will have a very clear idea of which elements would be key to create a useful tool that they use daily at work. However, its usefulness shouldn’t be limited to just themselves or their department, but rather it should also take into account the requirements of the whole company.

When we start a new project, the Project Director on the client’s side and the users of the final product have lots of ideas and great expectations about the new system. Sadly, no project, no matter how big it is, accommodate each and every suggestion from its users. Some ideas would be irrelevant for most users, other features might be too expensive to implement, or they would take so long to build that the project would be delayed for too long before being delivered. It’s here where the Project Director on the client’s side, who knows the market well and has a clear vision of the product, will have to prioritise the most important features and discard those that provide less value to the final product.

To explain how far-reaching the responsibilities of Project Directors are, let’s imagine the following. Our company decides to contract the development of a new airline ticketing system. In the company, they have decided that Elena will be the Product Owner or Project Director, and she will have to transmit to the chosen company all the requirements and needs that the new system must deal with.

Elena has a very clear vision of what she wants and is extremely enthusiastic about the project. So are the IT, marketing, and sales department heads, who have prepared an exhaustive list of features that the new product should include. Even in informal conversations, every day the future users of the system make new feature requests. Elena doesn’t want to miss anything important and conscientiously writes down all these requirements in a notebook.

Two months later, Elena realises that the team carrying out the work in the development company is delivering from 4 to 6 new features every week, and this seems to be their maximum capacity. She is happy with the work they are doing, but she has a problem: in her notebook she gets about 10 new feature requests every week. The list is growing and soon she will need a new notebook.

First of all, she asks the work team to double their efforts and deliver 10 features a week. Unfortunately, not many more features are delivered, and worse yet, she can tell that the quality of those features has gone down. On occasion, they even have to stop everything and correct previous deliveries. If things go on like this, frustration and stress will take over the project.

From now on, Elena must decide what should and shouldn’t be done. Not every feature will be included: at least not now. Some will have to wait for future versions. And of course, the idea of including a Clippy-style assistant to the purchase process for flight tickets will get a clear “NO.”

But, which features should she have developed first? Which criteria should she apply? Elena realises that there isn’t a direct relationship between feature cost and value added to the final project. Some features are easy to build, but some others take a very long time to develop while not actually providing a lot of value to the final product. If she asks the work team directly how many days each of those features would take, she will know what was the approximate cost would be. If she asks the users to score importance of each feature from 1 to 5, she will be able to calculate the value for her company.

If there are two features that have the same approximate cost, but one has value 1 and another one has value 3, they will clearly add the second one. If there are two features with approximately the same value for the company, but the first one would be ready in 5 days while the second one would be ready in a few hours, it’s also quite clear which one they should work on first.

Elena knows that the value and cost of each feature aren’t absolute values, but just approximations. We don’t know how much an apple weighs, but we know it’s about 5 times bigger than a strawberry and that people like the strawberry more (at least, the people who will pay for it like it more), so the strawberry would be built first. It’s an easy way to decide what provides more value, faster, to our project.

Communication is one of Elena’s main responsibilities. She must be in contact with the work team, but also with the people in her company who have something to say about the product that is being built. She has to be able to say “no” when necessary: she has to be practical in this sense, making this decision swiftly and directly. And also, she should know her business inside out, to make sure that everything that gets built will actually provide value to the company. I would say that Elena has quite a lot on her plate, don’t you think?

You can find texts like this and many other about how to manage agile projects in my book Agile 101: Practical Project Management (available on Amazon).

Translation by Begoña Martínez. You can also find her on her LinkedIn profile. Proofreading by David Nesbitt.

Publicado en Blog, Blog 1, English | Etiquetado , , | Deja un comentario

Oracle XE, Forms 6i and a trip to Ecuador

Quite some time ago I had to deploy an application developed with Oracle Developer 6i (also known as Forms & Reports). Another public institution bestowed upon our customer, a museum, a system that would help them to catalogue, inventory and keep track of their works of art loans.


To avoid costs of licencing, as their data volume wasn’t high at all, we decided to use, as database, the free Oracle Express Edition 10g license. The cataloguing system provided required an Oracle database as storage.

But, as soon as we double clic the application icon on screen, a Windows console was opened and closed in a blink of an eye. No log, no error messages, nothing.

We thought a lot about this, we queried Oracle Metalink, web pages and forums on Oracle development but no clues at all.

Ultimately, after many Google searches, we found the solution to our problem at the Oracle Users Group of Ecuador, precisely in a Paola Pullas’s post and the comments which followed.

It seems that a patch needs to be applied to Oracle XE 10g to make it work with Developer 6i. Besides that, it was needed to set the database character UTF8, that way you could make it work with tilda and accents. So here are the steps we had to follow:

First of all, we had to ask our DBA to connect to the XE database as SYSDBA and to execute these commands to change the character set:

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;
ALTER DATABASE CHARACTER SET INTERNAL_USE UTF8;
SHUTDOWN;
STARTUP RESTRICT;
SHUTDOWN;
STARTUP;

After that we had to apply in our Oracle Developer installation the following patch: Oracle Developer Patch 18 (number 4948577).

Hope it still helps someone. Sure there are many people out there that are still maintaining a system like this one.

Publicado en Blog, Blog 1, English | Etiquetado , , | Deja un comentario

Blank Totals in Oracle BI Discoverer

Another technical post. This time about how to solve the Blank Totals problem in Oracle Business Intelligence Discoverer:

I worked years ago as an EUL administrator with the Oracle Discoverer tools. We found a problem that troubled us during days: Grand Totals for some columns were empty despite of containing data that should be shown. The info was visible only when there was only one record to be added up but only an empty cell was displayed when there were more than one.

That seemed to us like a glitch or bug in this tool but it came out to be a technical decision of the tool’s designers. Let me explain:

When we got two folders related to each other as master-detail but, at the master’s folder we have got the numeric field that is going to be added up, we will get into trouble as the addition should add the master records numeric fields as many times as detail items are in our database. That’s probably not what we want.

Let’s see an example. If we got a master folder with data from official tourist guides, which includes their fares, like this:

Id.     Name       Salary
1       Pedro        2.000€
2       Juan          1.000€
3       Marta        1.500€

And if, on top of this, we have a detail folder, where we get the list of languages spoken by each tourist guide, it would look like this:

Id.     Name       Salary       Language
1           (Pedro)        2.000€          English
2          (Juan)          1.000€           English
2          (Juan)          1.000€           German
2          (Juan)          1.000€           Swedish
3          (Marta)        1.500€           German
When we create a Summary or a Total, Discoverer will show us that Pedro’s fare is 2.000€, Marta’s 1.500€ but it will display ‘_____’ (blank cell) instead of the Juan’s fare. Whether the tool showed a result, it should be 3.000€, but that is not the real fare for Juan. It is only aggregating three amounts as Juan speaks three languages.

There is a few workarounds to fix this:

  1. Maybe the amount being added should not be at the Detail folder. Should the database design be reviewed?
  2. Check if the relation between master and detail folder is 1 to 1 but it is mistakenly set as 1 to many.
  3. If everything above is right, there is one more thing that you can do: Tell Discoverer that it should add up those amounts anyway. To do so, follow these steps:
    1. Activate the ‘Show the sum of the values displayed in the contributing cells‘ option at the Discoverer Desktop settings.
    2. Set the properties AllowAggregationOverRepeatedValues and AggregationBehavior to 1 instead of 0 at the prefs.txt file that you can find in Discoverer server path $ORACLE_HOMEDiscovererutil.

This latter case should be taken being aware of what that implies. Even if it were a perfectly valid solution for the case you are trying to fix, it could exist another report, now or in future, run at the same patched server, which wouldn’t allow the administrator to see there is a problem (fan trap) and totals or summary fields are displaying wrong amounts as they are being added up two or more times (like the Juan’s fares).

Publicado en Blog, Blog 1, English | Etiquetado , , | Deja un comentario

How to make estimates come out the way you want (don’t fool yourself) – From Agile 101 book

Now, let’s hear a quick story about how we fool ourselves when somebody requests a quote for a job. It may have happened to you at some point.

A client has requested a quote. He has an idea in mind and wants to know how much it will cost and how long will it take. He made some calculations in his head and comments briefly on the numbers he is considering.

You arrive to your office and meet with the experts in these types of projects. After mulling it over for quite a bit you agree on how long it will take and the level of difficulty. You’ve had to do a little convincing, so they’re not so overly cautious, because after all it doesn’t look like a difficult project.

However, the final quote reached is way higher than the client had foreseen. Furthermore, if that vision were to be true, the project would not be finished by the deadline . You’ll need to reduce that estimate by at least 50%. Here’s how to do that in 5 easy steps:

You’ve done this before. You’ll be faster this time. You’ve carried out similar projects on other occasions, so you’ve surely learned from your mistakes. Also the problems that came up other times won’t necessarily happen this time (10% less). Are you sure you won’t have some new problems?
The clients said they wanted something simple. It won’t be that hard to do.

We’ll do something basic —we’ll cut on the complex stuff (10% less). The clients know their business well and it’s easy for them, but, what about you? Do you know everything you need to know about their business?

We’ll really keep a eye on costs. Some other projects weren’t monitored very closely, but this time you’ll be especially watchful of every hour spent, and you won’t let costs go through the roof (10% less).

We’ll put our best technicians on it. It’s a major project for an important client. We’ll put our best people on it (10% less, even though you don’t know whether they’ll be available on the date you need them).

We’ll make an extra effort.
If push came to shove, and we saw we were about to miss the deadline, we would ask every stakeholder to make an additional effort for a few weeks. If it’s necessary, we’ll even add some extra technicians halfway through so we can finish on time (10% less). Remember Brooks’ Law: adding extra staff to a project that’s late will only delay it even more.

And there we are. With just a little bit more work, we’ve been able to cut the initial estimate by 50%. Actually, to make the estimate match the budget, we’ve convinced ourselves that we can do the work in half the time. Sad to say, stats show that software projects take an average of 120% more time than initially estimated, and that final costs are normally 100% more than was budgeted at first.

You can find texts like this and many other about how to manage agile projects in my book Agile 101: Practical Project Management (available on Amazon).

Translation by Begoña Martínez. You can also find her on her LinkedIn profile. Proofreading by David Nesbitt.

Publicado en Blog, Blog 1, English | Etiquetado , , | Deja un comentario

More on estimates – From upcoming book Agile 101

When we talk about estimating using Agile techniques, some things are difficult to accept for those of us who have been planning and calculating timing and deadlines for a few years.

We can find several techniques for Agile planning: Planning Poker, clothing sizes for task classification (S, M, L, XL, etc.) or Team Estimation Game, but, let’s face it, they’re difficult to integrate in a traditional development environment, and even harder to integrate for the clients who purchase our products (or at least, for the clients’ I’ve been able to work with).

We’re not used to seeing a team “playing cards” for a session of Planning Poker (at least, I am not used to it). I do, however, agree with the philosophy behind those techniques. I believe that they’re becoming more and more popular partly because it is necessary to dispel some myths regarding estimations. Let’s try and do just that:

We do estimates wrong

Can we do them right? To estimate is to predict how long a task will take or what materials we will need for a certain job. When we do an estimate with high uncertainty, as for example when we use the data included in a public-tender document, it’s not so much an estimation as a bet.

We need estimations—that’s obvious. We must try to predict what will happen, so we can make decisions. But unless we’ve gone through that specific task many times before, with the same team and under the same circumstances, we need to be aware that our estimates will very likely be wrong.

The more effort we put into an estimation, the closer we’ll be to reality

Estimations have a cost and that cost is high. When we don’t know every specific detail of every bit of the work we’ll be taking on, does it make sense to spend hours and hours to guess about tasks that we do not know very well? When you finish your next project, do this exercise for me. Review the time spent on every task. You’ll see that you estimated 20 hours on tasks that took you 100, and you’ll find that —with luck— you spent 20 hours on tasks that you thought would take you 100. You’ll see that there were some tasks that no-one marked as done. They simply weren’t necessary. However, hours are spent on tasks that were added later and that no-one considered necessary in the initial estimate.

We’ll estimate better with this or that technique

There are many estimation techniques but very few will be as useful as comparing the time spent in similar projects, the decomposition of the work in smaller tasks, or the conclusions of experts (it would be better if we have several of these). The fact that we’re using complex estimation techniques could give us a false sense of security about our estimate, and prevent us from striving for higher reliability. That could actually cause us higher costs (see above) where we invest time that would have been better spent doing something else (like reducing uncertainty).

You can find texts like this and many other about how to manage agile projects in my book Agile 101: Practical Project Management (available on Amazon).

Translation by Begoña Martínez. You can also find her on her LinkedIn profile. Proofreading by David Nesbitt.

Publicado en Blog, Blog 1, English | Etiquetado , , | Deja un comentario

From Agile 101 book: Real artists ship!

Sometimes, and quite often, we delay delivering our work because we believe it is not ready. We think that we still have things to improve or correct, that we still have to work on it. More often than not, that actually comes out of fear of failure. Fear of our product meeting the market and nobody buying it, because it is not perfect, or it is not good enough.

It can also be fear of our product being criticized, because either the product or the book or our software has some typo or small bug. “I will only publish the latest blog post when there are no possible ifs, ands, or buts.” Other times it’s just perfectionism leading to paralysis.

A pottery teacher in an art school divided his students in two groups and told them what they had to do to get an A+ in his class. He told the first group that they had to do 100 vases in order to get the highest mark. However, he told the second group that to get that A+ they had to make the best vase.

This last group devoted enormous amounts of time and energy to debate and read about the best techniques for creating vases. But the best vases were actually done by the first group. They had devoted their time to practice, practice, practice and made 100 vases. Their technique had improved. It’s the same with your blog, your app or that design you’ve been thinking about. Let them meet the real users and let those users give you a thumbs up.

The world of software is full of products that were developed over years until they had every feature a client could imagine, in the way they were initially designed by their creators. Sadly when the software met the market, the market had its own ideas and needs. Very few people used every feature in those applications. Other features were heavily demanded, but none of the creators had thought about them when those products were first designed.

There is a Spanish proverb: “perfect” is the enemy of “good.” When you have a small but already useful product, ship it, show it to the public, get your first clients. They will tell you what’s missing. Learn about that, launch a second version, then a third. If you can’t get at least a small client base with your first version, maybe it is not the right time or place for your product. At least you’ll learn lots of things you didn’t know yet, and you won’t have wasted months and months of your work.

You can find texts like this and many other about how to manage agile projects in my book Agile 101: Practical Project Management (available on Amazon).

Translation by Begoña Martínez. You can also find her on her LinkedIn profile. Proofreading by David Nesbitt.

Publicado en Blog, Blog 1, English | Etiquetado , , | Deja un comentario

From Agile 101 book: The Ant and the Cicada

One summer a cicada was resting in a field, when she noticed a small ant running around here and there.

– “What are you doing?” asked the Cicada.
– “The Queen has asked me to build a new anthill!” replied the Ant.
– “But they already have one there, just a few meters away” offered the Cicada, puzzled.
– “Yes, but it’s getting a bit small, and in winter, with the rain, the things we have collected get wet”

The Cicada, ready to learn from her hard-working friends, decided that it would be a good idea to prepare for the winter. The leaves and sticks she used to build her shelter the previous year were getting dry, and it wouldn’t hurt to have a new home to spend the winter in comfort.

She quickly started to plan the wonderful shelter she would build. Now that she had time she would build it with every possible comfort. She would be the envy of the whole meadow. The stories about her new home would be heard far away, further even than the cypress hedge. It would have spacious windows so the light would flood in, and she would design a clever pulley system that would save her many trips to and from the barn to store what she had collected.
The Ant, however, had a plan. In August she would build the first room, which would be the barn. That way, if the rains started early this season, she and the other ants would have at least some extra space to store their grain. Then she planned the rest of the work according to its importance. If she didn’t have enough time to finish it all by the deadline, she would have built at least the most important parts.

In September she would dig a hole that would later become the hall were the first larvae of the year would live. In October she would build an additional room to increase barn capacity. Lastly, in November she would finish the work by digging a hall where she could grow fungi.

In the meantime, the Cicada was worried about having a dining hall that was big enough, and a structure as solid as necessary to hold everything she had imagined. She would run back and forth looking for the materials she would need to build all the things that she had planned in her head.

In October the first rains came, but the Cicada didn’t even have a basic shelter to take cover in. Also, water ruined some of her first constructions that were halfway built, and she had to start again. Then November came and the weather became really ugly. She had to hurry up and started working from sunrise to sunset.

Those first October rains made the Ant think that something could go wrong, and she decided to test whether the work that was already done would be useful. She started to fill her new barn with grain and soon she noticed that the access hole was too small for big leaves, and that it should be a bit higher if they wanted to avoid water or mud coming through. In order to fix this, they had to stop doing other things.

Winter came early that year, and the Ant realized that she wouldn’t have enough time to build the last room, so in the main anthill they decided that they should open an extra entrance, in case the main one got blocked by a stone or an enemy.

The Cicada, however, was surprised by the bad weather. She didn’t really know what was finished and what wasn’t. Also, what she had considered finished had not been tried out, and now there was no time to improve it. Winter was here and no more work could be done.

In her new shelter, under the leaking roof, the Cicada promised herself that this would never happen again: “Next year I’ll start work even before the Ant,” she said to herself.

You can find texts like this and many other about how to manage agile projects in my book Agile 101: Practical Project Management (available on Amazon).

Translation by Begoña Martínez. You can also find her on her LinkedIn profile. Proofreading by David Nesbitt.

Publicado en Blog, Blog 1, English | Etiquetado , , | Deja un comentario

How we used Scrum in our software projects

These days I have been preparing and updating a Prezi presentation about how we used Scrum (or Agile development) in our software development projects.

You won’t find there a Scrum theory implementation but the process and methods we used to try to become more Agile (whatever that means) and to deliver software regularly and frequently (working software).

Reach the presentation at Prezi: Practical Scrum – How we used it.
or have a look at it here:

Publicado en Blog, Blog 1, English | Etiquetado , , | Deja un comentario

Functional tests with Selenium WebDriver

(Sorry, this is a technical post about software testing, but don’t worry, you can find here some of my non-technical blog posts)

A few years ago we used Selenium IDE in a web application project just to check the functionalities developed at that sprint were working as expected but there were some problems with that. I try to sum up them here:

  • Selenium IDE works only with Mozilla Firefox web browser. That was a problem when you did need to test another browser or your web app worked only in MS Internet Explorer.
  • Tests and tests suites used to become red frequently. Firefox updates (on security mainly) made script commands deprecated easily so it was needed to search for a replacement, when available, or to find a workaround (after a few hours in Stackoverflow). To keep them working in order was costly (and time consuming).
  • There was some kind of a mess with script commands: type or typeKeys, click or clickAt, mouseAt or mouseDown. You never knew.
There were also some advantages, of course, like the way the user actions could be recorded by the IDE. You just had to click somewhere, move the mouse or type something that your movements were recorded by the IDE as script commands. It was needed to adapt or fix them after recording it but it used to made things easier. 
These days I have been playing around with Selenium WebDriver. It doesn’t need to inject javascrit code into the web browser and you can use your favourite programming language to write the tests.
I have written a couple of tests to check one of my web applications just to show you some of its main features and how Selenium WebDriver can work on Chrome. At the end of this post you can find a video showing how these tests work.

This first test is a kind of smoke test just to check that the application is working properly and shows the main page when it is requested:

Below you can find how to get the driver variable for Chrome. Using it you can have access to all WebDriver commands. It is written inside the jUnit @Before annotation so it is going to be executed before any other test run. At the @After method there will be a driver.quit(); sentence.

This last test actually checks that 10 questions are asked at each attempt (no more, no less), chooses randomly one of the multiple choice options and ensures that there is a results page at the end.

This is the Selenium/JUnit tests video recording:

You can find texts like this and many other about how to manage agile projects in my book Agile 101: Practical Project Management (available on Amazon).

References:

Publicado en Blog, Blog 1, English | Etiquetado , , | Deja un comentario

Agile 101: Scrum’s sprint 0 and the initial design

Sometimes we’re in projects in which we need to prepare a large number of things before starting out. Can we start building without stopping to plan or analyse what we’re about to do?
When we read about Scrum, we get the impression that all texts start directly with development, but…what about environment, team or office preparation tasks? What about design? Shouldn’t we stop to think about the whole design and architecture of what we’re about to build before we start programming?

About preparation or “before” programming. Some people call it “sprint #0”, the sprint where you prepare your tools, install the stuff you need, train the team, etc.. It can be a longer sprint (3, 4 weeks or so). Some detractors criticise this sprint because it is not agile, and because it hides some work that is taken care of in the same way as the rest.

It is true that it can be very comfortable, because we tell the client that we’ll be back in 3 weeks to have the preparation meeting for the first sprint, and by then we have organized it all. I have also used those zero sprints in my first projects, but now I prefer to solve those issues also in an Agile manner.

I try to make every one of those tasks (installing the development server, installing the demo server, creating a project and tasks in Trac or Redmine, installing the Integrated Development Environment or IDE, etc.) part of the first sprint and, if possible, have a set deliverable at the end of each demo.

In that demo, we could show, for example, the project-management tool already installed in the final URL and the task list with the tasks ready to be assigned, or we could launch the IDE in that demo meeting, and check whether the environment has been created correctly and whether Jetty executes a “Hello World” application correctly.

Another important step is the initial architecture design. If we make a huge design with all the application architecture (known as a big up-front design) before we start programming, we will be returning to a waterfall design. Firstly, we analyse everything, three months later we do all the design work during a couple of months, and then we program everything in one go until we finish it six months later. If we finish all work and show it to the clients and they say: “that is not what we discussed a year ago…” then we have a problem.

It is better to design one of the modules of the application, or one of the new features, then draft the specifications, and finally send them to development. While part of the team implements them, analysts can gather requirements for another module or another feature, and go on doing so sprint after sprint.

There will be sprints in which we won’t have new stuff to analyse and others in which the development goes a bit faster than the specifications, but normally there is always some task ready to be carried out while Product Owners sign off the latest requirements, or until those requirements are completely defined.

If we work like that, new modules or features could be regularly deployed to production or preproduction, so users will be able to take advantage of them without waiting until the very last feature of the application has been designed.

You can find texts like this and many other about how to manage agile projects in my book Agile 101: Practical Project Management (available on Amazon).

Translation by Begoña Martínez. You can also find her on her LinkedIn profile. Proofreading by David Nesbitt.

Publicado en Blog, Blog 1, English | Etiquetado , , | Deja un comentario

Agile 101: Scrum for fixed-price projects

One of the most common questions we ask when we’re wondering whether we should adopt a methodology like Scrum is how to face the fixed-price contracts that are so common in public procurement and many other sectors. One of the Agile principles says: “we welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.” This means that using Scrum we will be flexible with features we must develop, and we will admit new ones that were not in the original contract listing. This sounds very good but… the final price of the project is not going to change!


I work in the public-procurement department in a software-development company. That means that in at least 90% of the projects I work on I have a public institution as a client. Contracts are normally defined by a document with specific administrative specifications and another one with technical features. These contain all the services that are being hired, the characteristics of the product to be developed and the maximum price of the tender. They include even the technical features of the software and the profile of the projects’ participants. It is all very narrowly defined. It is the price that the public administration must pay to avoid arbitrariness.

If our company has been lucky enough to win the tender, then both of us, provider and client, have to face the harsh day-to-day reality of projects. Circumstances change. New legislation comes up that affects the project. Things that were deemed correct a few months ago are no longer valid, because needs have changed. What should we do? If we adapt the project to every change that the client needs, then we providers have to bear the brunt of additional cost. If we refuse to change anything for the client, always waving the contract and its specifications in their face, we risk delivering something that might be perfect for last year’s decree, but—for that very reason (or for any other reason)—is no longer of any use.

The way to avoid this, or at least the way that has worked best for me so far, arises from the way of working in Scrum projects. At the beginning of the project I make a list with the features to be developed, and give them a score that the client knows right from the beginning.

I normally give the example of a large jar full of ping-pong balls. Each ball is a feature that must be developed. The jar is full. If the Product Owner wants to include two new features, I ask that person to tell me which other features—or ping-pong balls of a similar size—should we take out of the jar. Normally this vision solves the predicament and the Product Owner does not resist giving up other features, now recognizing that they aren’t important. If it all gets recorded in the meeting’s minutes and, most important of all, if the Product Owner understands what is being given up and what will be gained instead, it is normally a comfortable solution for both sides.

You can find texts like this and many other about how to manage agile projects in my book Agile 101: Practical Project Management (available on Amazon).

Translation by Begoña Martínez. You can also find her on her LinkedIn profile. Proofreading by David Nesbitt.

Publicado en Blog, Blog 1, English | Etiquetado , , | Deja un comentario