Waterfall process model is harmful
Posted on February 20, 2016
| Diego J. Romero-López
Introduction Waterfall model is a development process based on doing software development processes one after another and not looking back.
Here is a simple diagram (from Waterfall model article in Wikipedia) of that model:
Waterfall model That is it supposes we are infallible and the client is infallible so each phase is perfect and serves well enough the next.
Issues with waterfall model Waterfall process model suffered a total criticism by Winston W.
[Read More]
Project saboteurs
Posted on February 13, 2016
| Diego J. Romero-López
Introduction You have just been appointed leader of a new fascinating project. Hard years working in boring tasks have paid off. You are excited before your big day: your first meeting with your client (the owner of the business) and some other stakeholders (managers and other employees of the business).
Sabotage So the meeting starts. Relationship with the business owner is smooth and you begin to write notes about software requirements, current system limitations, technologies… You know that you’ll have more than enough information to make the first requirement document.
[Read More]
Self-improvement
Posted on January 30, 2016
| Diego J. Romero-López
The rules of the game have changed During many years, society expected you to graduate and find a job you kept until your retirement. Not many people changed jobs and only professions like medical doctors and lawyers keep studying and improving their skills.
Now the rules of the game have changed and nobody expects that almost from any profession. Maybe you are a baker and expect to use the same ingredients and make the same bread over and over again, but your clients can change or acquire new tastes!
[Read More]
Agile project management
Posted on January 10, 2016
| Diego J. Romero-López
Software Engineering is a special type of Engineering During too much time Software Engineering has been molded as a traditional Engineering, with the same terms and ideas that came from this disciplines. But they failed.
Firstly, Software Engineering has an immaterial final product. It is not a bridge, a road, or a mine for example. Thus, software engineers works with ideas more than anything else.
Thus, traditional engineers are limited by Physics laws while software engineers are only limited by the computational model they use and by the power of the machines their software run.
[Read More]
Literate programming
Posted on December 30, 2015
(Last modified on August 25, 2015)
| Diego J. Romero-López
Donald E. Knuth coined the term Literate programming in this paper he wrote almost 40 years ago.
Knuth wrote a tool called WEB as a demonstration of what Literate Programming should be. This tool would understand Pascal and TeX code, using Pascal code to create a binary executable and using TeX code to compile its documentation file. Pascal code would be a bit different because of the use of predefined macros and it would be interleaved by TeX code describing what actions execute.
[Read More]
Out of the tar pit
Posted on September 14, 2015
(Last modified on August 25, 2015)
| Diego J. Romero-López
“Tar pit” is an idiom used since 1970s based on the similarity between software complexity and tar pits trapping engineers and animals (resp.).
Out of the tar pit is a paper that analyzes the causes of this complexity and classifies it in several categories. The authors also analyzes the approaches that each type of programming technique uses to sove this complexity problem.
But the most important contribution the authors do is giving a solution in the form of a new paradigm of computer programming.
[Read More]
Software construction
Posted on August 25, 2015
| Diego J. Romero-López
In my voyage from a simply Software Engineer to a master in Software Engineering I’m reading several books. Thus, I’m posting in this blog whatever thoughts appear in my mind about Software Developing.
I’m several chapters in Code Complete 2nd Ed. of Steve McConnel and I’m amazed by the knowledge that it contains. As time goes by I will update this blog with more information about my findings.
Specially I’ve been struck by one basic principle: Software construction is the only activity that is warrantied to be made in a software development project.
[Read More]
Peopleware
Posted on August 20, 2015
(Last modified on August 14, 2015)
| Diego J. Romero-López
I’ve just finished reading Tom De Marco & Timothy Lister’s Peopleware and I feel like this book should be recommended to all new Software Engineer graduates. Let me put some light in this matter.
I’ve been working for 8 years in a startup and none of my formal education in the University prepared me for what I was going to experiment. Software Engineering is a social discipline (we work in teams) but in my Computer Engineering degree1 there are no management or organization courses.
[Read More]
Progress towards and engineering discipline of software by Mary Shaw
Posted on August 14, 2015
| Diego J. Romero-López
Several days ago, I watched this videotalk of Mary Shaw that tried to give an answer to the question is Software Engineering an Engineering discipline yet?
Dr. Shaw makes a parallelism with Civil Engineering that started as a empirical discipline and, thanks to strong scientific foundations, evolved to what we could call full engineering.
Software Engineering is not there yet. It needs more work and professionalization. Many of the so-called Software Engineers have no software engineering knowledge and/or skills and therefore software disasters happens.
[Read More]
Concurrency and third party libraries
Posted on August 1, 2015
| Diego J. Romero-López
Last Friday, one of my mates had a strange error in his code: incoherent an unrepeatable results arise en each execution.
His code (Python) was concurrent code and each thread used several libraries (BeautifulSoup41 was one of them) which they were not thread-safe. What does it mean? It means we cannot assure that atomicity is achieved in some operations executed by the threads, effectively sharing some data that must not be shared.
[Read More]