Better safe than sorry

--Originally published at

Life goes fast and you can’t get off it although you want.


Specially technological advances go really fast.
We, as programmers, most make our best effort writing flexible code in order to be able to keep it updated just making little changes when necessary. We have to take reversible decisions while programming so our code can stay flexible and adaptable in the face of an uncertain world.

We need to decrease coupling , try to maintain concepts separated, have the less dependencies among modules of code, in the greater measure. This can be done if we try to adhere to the law of Demeter.  You probably remember it of your first programming classes, but I will remind you the principles of this law.

A method M of object O should only call following types of methods:

  1. Methods of Object O itself
  2. Methods of Object passed as an argument
  3. Method of object, which is held in instance variable
  4. Any Object which is created locally in method M

Also all this is shortened as “Use only one dot”. Don’t do things like
return xml.getXML().getBooks().getBookArrary(0).getBookHeader().getBook();

Do you remember metaprogramming? The writing of computer programs that write or manipulate other programs (or themselves) as their data, or that do part of the work at run time that would otherwise be done at compile time. In many cases, this allows programmers to get more done in the same amount of time as they would take to write all the code manually, or it gives programs greater flexibility to efficiently handle new situations without recompilation. This is another good way to have flexible code, writing less code. And this is because if you change your code there is a great chance to introduce new bugs.

A key concept in creating flexible code

Continue reading "Better safe than sorry"

Hector Padilla talks

--Originally published at

Hector Padilla, currently and independent consultor, has 15 yearshectorPadilla of experience in Games and Software Development, 10 of those years in a leadership position. He specializes in project management and production, coaching junior team members , game design and prototyping. Also has programming skills due to his education in Computer Science and good sense of aesthetics and design by artistic formation as well as inter-personal skills such as communication and empathy.

He has traveled around the world and you can notice how much he knows about culture and that he is amazingly passionate for what he does. You could tell he’s a nice guy and his experience living and working around the globe is quite interesting.

The other day, he came to my Project Evaluation and Management class to talk us about his most relevant details of his professional life. Then I will list to you some of the advice that, in his experience, could give us:

  • It is important to protect yourself, your work while you are doing some project, if you are employee it is supposed that you will be payed monthly or whatever you agreed and signed in your contract of hiring, no matter what is happening externally; but when is your company, is better to be in agreement with the client that you are being payed by stages accomplished. You must have a good and confident lawyer to make nice contracts in order to do not allow changes, do not allow feedback after n time (previously established in a contract) or stuff like that. If not, you will be under an infinite loop of changes, you will never end and, therefore, you will never get payed.
  • About interviews, he made us focus on the fact that when we are in one, is a two directional interview, you have to ask. If you
    Continue reading "Hector Padilla talks"

OrangeScrum: An Open Source Project Management Tool

--Originally published at


If you are tired of :

  • Disgruntled customers
  • Exhausted budgets and timelines
  • Misaligned goals and objectives
  • Countless!- flying emails and spreadsheets
  • Duplicity of efforts, high degree of inefficiency
  • Overstressed and demotivated team(s)
  • Finger pointing and escalating tempers
  • Loss of Revenue (LOR)

Maybe you should try OrangeScrum. It is a open source free project management and collaboration tool. It helps you to manage projects, team, documents, tasks all at one place including time tracking, invoice generation and more. Helps to collaborate people with different roles and responsibilities centralizing projects and tasks management, with collaborate resources (people, process, technology), track time and generate invoices and view real-time analytics. OrangeScrum ensures control over your projects.

It has been repeatedly ranked among the Top 5 Opensource Project Management Tools by Popular Technology Sources such a,, digital doughnut, Here you can see, regarding to many qualifiers how good is OrangeScrum

Why it is open source? They do not accept any customization request for the cloud version, however, you can request them for a new feature or customization request is possible if you are using or are interested for the Orangescrum Community or Enterprise version. You can download the source code, there is an installation guide with instructions for each specific operating system and also there is a community support to discuss anything related to Orangescrum, asking for help, sharing  ideas, contribution to the community edition and give feedback. So you can customize the basic version of OrangeScrum to adapt it better to our own project management style with all the features you need without having to create a tool from 0.  Orange Scrum Github


What are you?

--Originally published at



It is usual to hear the question, what are you? Yes, it does not sounds as an appropriate question, but the worst part of this is that normally is answered. The other day, a man asked to another guy What are you?, and he immediately  answered I am ISC (Computer Science Engineer), to which the man replied that he was wrong, that he actually was studying engineering in computer systems, but he was not that.

I agree with that, who we are is not defined through what we are currently studying, where we live, where we came from, what we eat or what we like, we are a whole of all those things. We have lived, heard, saw, felt, etc, lots of different stuff that today are reflected in the way we go for life.

Study systems engineering does not mean that you will became the stereotype of a programmer, do not necessarily have to spend the rest of your life coding inside a dark room or watching Naruto. Studying a career simply gives you tools to increase your skills and keep modifying who you are. Each one, of course, has different subjects, and for our own interests is that we choose one or another, because the content will satisfied better our concerns, but what you do or not with that knowledge depends on you. And maybe you end up being a musician or an actor and this not necessarily means that you  have wasted time of your life studying something that you were not going to dedicate, the way you today are doing performing activities, thinking, talking is a product of all that, and it is very likely that you became that successful tv host, lawyer, project management because you studied ISC before.

A university career not only

Continue reading "What are you?"

Just Do It … Right

--Originally published at


What distinguishes Pragmatic Programmers? His attitude, style,  philosophy of approaching problems and their solutions … maybe. They think beyond the immediate problem, always trying to place it in its larger context, always trying to be aware of the bigger picture. They take responsibility for everything they do, accept easily change, understand the context of where they work, so they exactly know just how good their software has to be. And of course, they have a broad base of knowledge and experience.

How can I became a pragmatic programmer? Well, one of the most important things is that you have to take responsibility for your actions; in terms of advancing your career, your project, and your day to day work, this is the begin about ethical behavior and in the way of seeing, moral of all discipline.

A true pragmatic professional takes charge of his own career and is not afraid to admit ignorance or that he committed an error. It is difficult to accept it when you have not grown enough, but it is about giving better solutions, it could be to the customer or to the whole world; the idea is that you do not perform a something that will only works in a limited way, think bigger than that.

Also, as a pragmatic programmer , you have to be conscious that you make a commitment to ensure that something is done right, but you don’t necessarily have direct control over every aspect of it. We are committed to making things good, but not necessarily we have control over everything aspect that can go wrong. It will always be better to dialogue in case something gets out of control of our hands, but we must always listen the excuses we are giving of why was not possible to give solution in order to

Continue reading "Just Do It … Right"

To be, or not to be … introverted

--Originally published at

Last week, in my class of Project Evaluation and Management, we saw a video of Ted Talks, Susan Cain: The Power of Introverts. She talks about how society thinks that somehow a quiet and introverted style of being is not the right way to go, and everybody should try to be extroverted. But she replies that introverts are pretty excellent just as they are, and when we try to make them “to be” or at least pretend to be extroverts it’s a loss for our communities because when it comes to creativity and to leadership we need introverts doing what they do best.

Being introvert is different from being shy. Shyness is about fear of social judgment while introversion is more about how do you respond to stimulation. Extroverts use to feel better in a place where there is a lot people, noise, etc. Introverts feel more comfy, capable, concentrated, when they are in quieter environments.

Nowadays schools and workplaces use to be made for extroverts. There is the idea of the best way to do  everything is in group, society promotes group thinking, team work, and all that kind of staff, because it is suppose that creativity and productivity come from it, and that may be right but just for the ones who’s correct zone of stimulation is, and actually to maximizing our talents, all we have to be in the correct zone of stimulation for us.

This is very important to take in consideration at the time you apply for a job for example, or if you are the boss or project owner. In the first case, you have to look for a company or place which have a work environment or dynamic that benefit you. In the second case, if you really want to allow everyone on the team to

Continue reading "To be, or not to be … introverted"

I will survive! Oh, as long as I know how to deal with this

--Originally published at

While talking about software development, downstream/upstream makes reference to the kind of activities involved. In that sense, requirements and design are upstream activities, while implementation, testing, and maintenance are downstream activities.Upstream -> up the well (the origin of the software); downstream = downwards to the ocean (of use cases).

As we have stated before, effective planning is needed to resolve problems at low cost, this is upstream; rather than at high cost, downstream. The average project spends about 80 percent of its time on unplanned rework, fixing mistakes that were made earlier in the project. When projects are small or even medium size, sometimes just with luck it is possible to succeed, but this does not happen in large projects. Normally, the success depends on making a carefully planned series of small mistakes in order to avoid making unplanned large mistakes later on. Fixing upstream defects downstream costs 50 to 200 times as much as fixing them upstream.

Experts say that a project’s success or failure can be determined as early as 10 percent of its development, because at that point it is supposed that a interface prototype, detailed requirements and project plan with cost and schedule estimates has been already done, and that information can be used to make a “go/no go” decision.

An usual problem with software project is that managers have to ask for funding for the whole project without having done much exploratory work. A good approach for the project manager to request funding is the two phase funding. The idea is that first he request funding for the exploratory phase, in which 10% to 20% of the project is completed; at the end, the project team holds a Planning Checkpoint Review in which the following points must be available: