PROJECT SABOTEURS
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.
SELF-IMPROVEMENT
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! Thus, what about improving the costs? Maybe a new machine could make the baking process cheaper and you should know about its existence…
AGILE PROJECT MANAGEMENT
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. Nowadays, for non-complex tasks (traditional business logic), these machines are more than enough.
LITERATE PROGRAMMING
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.
OUT OF THE TAR PIT
“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. They show a declarative language based on Relational Algebra invented by E. Codd that solves the inherent complexity that plagues the imperative languages code we use everyday.
SOFTWARE CONSTRUCTION
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.
PEOPLEWARE
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. So, when you scape the Engineering school you know how to make code but you don’t know really know how to work with another humans and of course know nothing about the perks of the job. To sum up, you have no clue about the social component of the job.
PROGRESS TOWARDS AND ENGINEERING DISCIPLINE OF SOFTWARE BY MARY SHAW
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. She even gives some examples of software failures like the Toyota unintended acceleration affaire, and the multiple identity thefts in our connected world.
CONCURRENCY AND THIRD PARTY LIBRARIES
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.
MANAGING CLIENTS
The Players It’s not a secret that software engineers prefer a clean and completed specification than meeting with clients. We tend to think that meetings are a waste of time and many of our colleagues are not very fond of what is called soft skills. On the other side, we have some clients that have no idea about software and want the changes in their platform now. What is all of that? Let me tell you, a recipe for the disaster.