I want to write about my profession and what I have learned about it in the 20 years that it has been paying my bills and putting food on the table.
My story as a developer actually started much earlier. I cannot say the exact date, because I cannot recall the exact date, but it was in the early or mid-eighties of the last century (damn, I am really old!) and probably before my tenth birthday.
I convinced my parents to buy a Schneider CPC-464, a German version of the legendary Armstrad CPC-464. I also remember that we bought it through an offer that we saw in ‘Alcampo’ supermarket, in ‘La Vaguada’ mall, Madrid. It costed 25.000 pesetas (150 euros), I believe. What I cannot remember is the exact year, or my age. Memory is strange like that.
So, there I was, with my brand new 64kb RAM memory machine with its green phosphorus monitor. I could already play video games at home! But not before spending a long time for the tapes to finish loading (the games).
Browsing the manual, in addition to the basic operations such as switch on, shut down, load cassettes, etc, I found a strange section that I could not understand very well.
In that section I read that if you write things like ‘IF’, ‘PRINT’, ‘DRAW’ or (horror!!!) ‘GOTO’, I could command the machine (and it would follow my instructions!). More or less. The point is, like I said, it was difficult for me to understand, but the book was full of examples. I systematically began to type them in and in that moment the magic started.
It was my first contact with programming. That BASIC language with line numbers. Soon I started a course in an academy in my town. The teacher wasn’t sur if he should admit me into the class, because I was a child. But he did it anyways and I became his favourite pupil 🙂
I even created my own basic games (pong, pinball, bombing cities…) and those were my beginnings.
Several years later, I was off to University. Assembly, structured programming, data structure, methodology, Pascal, C, object orientation, C++, Java, databases, declarative programming, software architecture, analysis, design… A lot of concepts, a lot of practice and above all, the desire to apply the things I learned in real life.
I finished my undergraduate technical engineering coursework in 1999 and that same year I decided to start working while I finished the two remaining courses of the higher degree.
Then came my first real contact with Software development projects, my first deceptions and my first crashes.
I am not going to enter into the details, but almost every developer has confronted innumerable problems when trying to complete a project and, more often than not, the attempts to find solutions to these problems did not have the expected results. It is normal. Computer Science is a very young subject, but it is always rapidly transforming itself. It is difficult to struggle with increasing complexity and the solutions built to solve the different problems, quickly become obsolete. Sometimes even before they have been enough empirically tested in real world.
For those who are not related with this theme, some of those problems are:
- Difficulty for the developers for understanding the client’s business problem
- Communication problems to make the client understand the complexity of a Software development process
- Difficulty for translating the client needs into well-specified requirements
- Impossible plannings imposed by the commercial area
- Lack of education within ‘best practices’ that would ensure Software quality
- Deficient team management
- Not enough participation of the developers into the architecture and design decisions
- Unexpected technical problems
Among others… All these problems often implies delays, unplanned costs, poor Software quality, fails in reaching client’s satisfaction and demotivation in development teams.
The vast majority of these problems are well known and it have been several solution attempts. Sometimes systematically through creation of Software engineering methodologies and sometimes in a more improvised manner with ‘quick and dirty’ patches. I think that every company has fallen into this sin at least once. The results of these second type of solutions are easy to imagine. Those of the first type are not homogeneous.
Well, I can say that I have written enough for today. In upcoming capitules I will comment what some of these solution attempts has been, what their results and I will end, based on my knowledge and experience, trying to show what is my vision of the Software development’s needs and what is my position, as a professional in that area.
See you soon. I am very happy to salute you!!!