OU blog

Personal Blogs

Christopher Douce

Software engineering – a modern approach: a short book review

Visible to anyone in the world
Edited by Christopher Douce, Friday 29 May 2026 at 15:35

Software engineering – a modern approach by Marco Tulio Valente is a freely available textbook published in 2024.

I first learnt about this text after carrying out some internet searches, but then later discovered that colleagues had discovered it too. I soon realised that there were a range of different opinions about it. With these differences of opinions in mind, I decided to have a good look at it to form my own opinion.

I approached it with two questions in mind: could it potentially complement the existing TM354 Software Engineering module? Also, could it be a useful resource for either module teams or students, as we work on a new version of the module? In some respects, this review follows on from an earlier blog post about the SWEBOK v4.

I begin by having a look through each of the chapters. I then reflect on what its shortcomings are. I then wrap everything up with a set of closing reflections and share a personal conclusion.

The chapters

The text begins with a bit of history, highlighting the significance of the 1965 NATO conference. Before sharing a high level summary of what is contained within the text, it shares a high level objective, which is to ‘give an overview of the knowledge accumulated over the years in software engineering and, consequently, to shed light what is studied in this field’.

Chapter 2 takes us to the subject of software engineering processes, and immediately into the world of what is meant by agile. Before we got here, we were usefully reminded that there are different types of software product and this, may well, necessitate the adoption of different approaches. A discussion about agile manifesto leads to a discussion of eXtreme Programming, Scrum and Kanban.

Next up is a treatment of requirements. Functional and non-functional requirements get a mention, as do user stories and different forms of use case. It is interesting to see the inclusion of A/B testing within the requirements chapter, but as end users of sites like Amazon, we have been unwittingly subjected to these types of tests.

The chapter about models steps into a topic that is heavily featured in TM354, but will find its way into TM253 in one way or another. After a slight digression into formal methods we are introduced to the Unified Modelling Language (UML). Curiously, UML activity diagrams (which is often about requirements) appears after sequence diagrams. Contrasting with TM354, there is nothing about state diagrams.

The chapter about design principles offers a useful compendium of ideas and concepts. Some key ideas highlighted include conceptual integrity, information hiding, cohesion, and so on.  Whilst these design principles are useful, there is nothing about what design means, or how to do design. One section that I did like is the summary of the Law of Demeter, which isn’t done as well as it could be within TM354 (which is a further example about how the textbook addresses similar ideas). Also, like TM354, towards the end of the chapter, we are introduced to the idea of software complexity metrics.

Following the principles we have a detailed discussion about patterns. It presents a more detailed catalogue than what is given in TM354. Patterns takes us to the notion of architecture. This is the opposite way round to how TM354 introduces it. Ultimately, the order may well come down to pedagogic preference. In terms of software, I appreciated the introduction of the operating system design debate, which leads onto a discussion about monoliths and microservices, which is a topic that has recently found its way into the latest update of TM354.

Testing is introduced in terms of levels and scope, which are then expanded upon, beginning with unit testing. Related topics that are covered include test coverage, mocks (which is not covered in TM354), test-driven development, partitioning and boundary value analysis (which are covered in TM354). The next chapter on Refactoring is quite a practical. It shares some useful examples, and drawing on the terminology from the original Fowler text, offering a useful distilled summary.

The final two chapters, DevOps and GitHub can, to some degree, be read together. Both are important. The DevOps chapter begins with a nice summary. This leads to an introduction of the principles of the version control system (which is also addressed within TM113). Related terms, such as continuous integration and continuous delivery are introduced and explained (whilst also distinguishing between delivery and deployment). The chapter on Git introduces the key Git commands, and explains key concepts, such as merging, forking and branching.

The good points

What I like about the text is that it follows the SWEBOK relatively closely. If you know the SWEBOK, you will be able to recognise headings reflected in this book. It doesn’t just repeat a summarised version; it does add value. In addition to offering a useful bibliography, it also offers sets of questions, which are presented as exercises. The frequently asked questions sections in the chapters are helpful; they consolidate questions that students might ask during a class.

Another useful aspect to the text is that it provides numerous links to original sources or articles.

What is missing?

A few things are missing. As suggested earlier, there is a chapter on design principles, but little about the practice of design. Agile teams are mentioned, but there is also very little on how they should be formed or facilitated. This said, there are references to other resources that are helpful.

Turning to more technical elements, there isn’t much about software engineering economics, but there are references to practical techniques such as planning poker (which gets a very brief mention in TM354). I also feel that, given the importance of software security, the whole subject is underemphasised. Whilst the testing materials offers a useful high level summary, it lacks a reference to materials about Pen Testing.

From my perspective, there is no materials on the increasingly important subject of environmental computing. There should be something about energy and energy consumption, and how this might relate to software architecture. Another area that, in my opinion, ought to be covered in more depths is the subject of diversity and its important within teams.

Bearing in mind these points, a related area that is missing is the lack of consideration of the sociotechnical. It doesn’t, for example, consider the ways in which computing or information technology can be understood or situated within a human activity system. It could also be argued that the SWEBOK doesn’t do a great job of this either.

One thing I am grumpy about might be to do with the type of the text I’m using, which is the ePUB version. There isn’t an index, a glossary or a consolidated set of references, and an index about where those references are used. A further question to ask is: could I tolerate this? Possibly.

Reflections

No text is ever going to perfect and tick every single requirement box (even if we ever knew what those requirements were). Despite its gaps and shortcomings, I quite like this book. I especially like how readable it is. What it offers is a useful high level summary of many of the topics that are highlighted within the SWEBOK. I felt the section about DevOps was particularly helpful.

What I haven’t done is had a look through the resources that clearly accompany this book. There appears to be a lot: podcasts, slides, and code that can be found on GitHub. I also haven’t directly compared this text to others. Last year, I did have a quick look at a new book by Sethi, but I felt it wasn’t as clearly written as it could have been. Ian Sommerville’s text on Software Engineering remains highly regarded, but Sommerville has retired from teaching. In a field that appears to be changing quite rapidly, applicability is important.

I do feel it accidentally complements the current TM354 Software Engineering module surprisingly well. Will it complement the forthcoming TM113 and TM253 modules? I’m not sure; they are going to be quite different modules, but cover themes that are certainly highlighted by the text. As for TM363? We’ve still got to figure all that out.

Permalink Add your comment
Share post
Christopher Douce

Book review: Two novels about DevOps

Visible to anyone in the world

When I started to do some background reading into how TM354 Software Engineering might need to be updated, I was guided towards two curious novels. 

From October 23 I start to study A233 Telling stories: the novel and beyond, as a part of my gradual journey through a literature degree. For quite a while, I have been thinking there have been very little to connect novels and software engineering, other than obvious: the development of Word processing tools that can be used to write novels, and the Amazon cloud infrastructure used to distribute eBooks.

What follows is a very short (and not very through) review of two books that are all about DevOps: The Phoenix Project, by Gene Kim (and others), and The Unicorn Project, which is also by Kim. 

The Phoenix Project

I shall begin by sharing an honest perspective: the idea of a novel about software development did not excite me in the least. The text has a subheading that seemed to strengthen my prejudices: “a novel about IT, DevOps, and Helping Your Business win”. This is no crime drama or historical novel. The closest genre that one could attribute to The Phoenix Project is: thriller. I feel it occupies a genre all of its own, which could be labelled: IT business thriller.

The main protagonist is Bill Palmer, who has the unenviable job title of “Director of Midrange Technology Operations”. Bill works for a mysterious American company called Parts Unlimited. A lot happens in the early chapters: Bill is invited in to have a chat with a manager, who gives him a promotion. He is then asked to take a lead in getting the Phoenix Project, a new mission critical software system to work. Failure means the business would lose any potential competitive advantage, and the IT infrastructure might be outsourced, which means that people would lose their jobs.

Before Bill can get settled, he is hit by a payroll outage, which means the employees and unions are angry. He also quickly realises that the whole IT setup is in a complete state. Kim and his co-writers do a good job at attempting to convey a sense of paralysis and panic. The reason for this is expressed through the notion of ‘technical debt’, which means that existing IT infrastructure has become increasing complicated over time. Quick fixes now can, of course, lead to further problems down the line. Parts Unlimited has not been ‘paying down’ their technical debt.

An important element of the novel is the division between the Ops (operations) bit of IT, and the development division. There are other competing teams, which also play a role: there is the QA (quality assurance), and the security team. Security is important, since if an organisation doesn’t keep its auditors happy, the directors may face legal consequences.

I think I would be mean to describe the characters as one dimensional, since plot clearly takes precedence over characterisation. The main protagonist Bill is the most richly described. His organisational skills and sense of calm in the face of chaos is explained through his military background. 

Ubergeek Brent plays an important role, but I really wanted to know what made him tick. Erik Reid, an unofficial mentor to Bill plays the role of a Yoda-like mystic who provides insightful advice, who draws on his extensive knowledge of lean manufacturing. A notable character is Sarah Moulton, the Senior Vice President of Retail Operations, who takes on the unenviable role of the villain.

What struck me was the amount of technical detail that exists within the text. There are references to services, languages, and source code management. There is also the important notion of the ‘release’, which is a persistent problem, which pervades both this text, and its follow-up. Whilst I enjoyed the detail, I’m unsure about the extent to which the lay reader would grasp the main point that the book was making: to gain efficient business value from IT, it is best to combine together operations and development. Doing this enables the creation of tighter feedback loops, and reduces operational risk. Along the journey, there are these moments which raise an eyebrow. An example of this is where there is unambiguous contrition from a security manager once he sees an error in his thinking.

Bill identifies barriers and instigates change. After a “challenging” release of Phoenix, he ultimately prevails. During the updates, there is the emergence of a ‘side project’, which makes use of new fangled cloud technology to deliver value to the business. In turn, this generates income that makes shareholders happy. Political battles ensue, and Bill then gets on a fast track to a further promotion.

Apparently, The Phoenix project was popular amongst developers when it first came out, but I’ve been peripherally distant from the domain of software engineering, which means I’ve been a bit late to the party. Before providing further comment, I’ll move onto the sequel: The Unicorn Project.

The Unicorn Project

When I read The Phoenix Project, one of my criticisms was about the identity of the main protagonist. Novelists can not only use their craft to share a particular reality, but they can also have the potential to effect change. Whilst I liked Bill and the positive role that he took within the novel, given the clear and persistent gender disparities in the sector, I did feel that a female protagonist would have been more welcome. This unarticulated request was answered through The Unicorn Project in the form of Maxine Chambers, the lead protagonist in Kim’s follow up novel. 

Maxine is collateral damage from the payroll failure. Despite being hugely talented, she is side-lined; temporarily reassigned to The Phoenix Project. Her starting point was to try to get a build of all the software that was being developed, but faced persistent complexity, not just in terms of software, but in terms of finding out who to speak with to get things done.

Whilst the main project was saturated with bureaucratic burden, Maxine gradually found “her people”; smart like minded people who were also frustrated by the status quo. She also spoke with the business mystic and mentor, Erik Reid, who was very happy to share his words of wisdom. Ubergeek Brent also makes an appearance, but his backstory continued to remain opaque.

A really interesting part of the text is where Maxine ‘goes into the field’ to learn what happens in the Parts Unlimited stores. Drawing on the notion of ethnographic observations, she learns first-hand of the difficulties experienced by the store workers. Another interesting element which occurs towards the end of the novel is the movement towards embedding institutional learning, and drawing upon the creativity that exists within the workforce. In comparison to The Phoenix Project, there is more emphasis about culture, specifically, developing a no blame culture.

A key theme of The Unicorn Project is shared with The Phoenix Project: it is important to combine development and operations together, and it is helpful to perform continually integration since users can gain access to the new features more readily. A notable section highlighted the challenge of carrying out code merges during marathon meetings. If code is continually integrated, then there isn’t the need for all those uncomfortable meetings. Significantly, the Unicorn project also goes further than The Phoenix Project, since it is also about the power of teamwork, collaboration and the potential of smaller projects positively affecting and influencing others. Like Bill, the formidable Maxine is successful. 

Reflections

My initial scepticism of these novels comes from my view that novels are made from story and character, not technology. What is very clear is that although technology plays an important role, people are, by far, the most important. The novels foreground the role of teams and their organisation, the importance of sharing knowledge, and the importance of collaboration and leadership. It is clear that soft skills matter for the simple reason that software is something that is invisible; developers must be able to talk about it, and to each other. This is also why organisational culture is so important.

An important reflection is that both Bill and Maxine have difficult and very stressful jobs. They are both shown to work ridiculously long hours, often over the weekend. In the novels, IT is depicted as a difficult occupation, and one that is far from being family friendly. The families of both protagonists are featured, and they both suffer.

Although both of these novels are stories about the success of heroes battling against impossible odds, the hyperreality of the chaos within Parts Unlimited makes their success difficult to believe. Conversely, the hyperreality that is expressed through the impossible administrative burdens of the ticketing systems offers a warning to those who have to work with these systems on a daily basis.

The mystical mentor Erik is, of course, difficult to believe. He is a device use to share the pragmatic business and manufacturing theories that are central to the themes that are common to both books. I didn’t mind Erik. Like with Brent, I wanted to know more of his backstory, but with a limited work count and a lot of themes to work through, I understand why creative trade-offs were made to foreground more pressing technical topics.

Whilst I found the broader context, automotive spares, mildly interesting, I found myself becoming bored by the theme of IT being used to gain ever increasing amounts of money through the persistent and relentless pursuit of the customer. Although I accept that IT can be thought of a product of capitalism, there are more interesting ways that IT can be used and applied. Technology can be used to reflect humanity, just as humanity is reflected in technology. Whilst capital is important, there are other subjects that are more interesting. I think I would like to read an IT business thriller about cyber security, as opposed to one about a business that has found a new way to sell engine monitoring apps.

To conclude, these two novels were fun. They were also informative without being overly didactic. Although IT business thriller books is not my favourite genre, I can say that I enjoyed reading them. I’m more a fan of Victorian romances.

Epilogue

In 2004, I was working as a Software Engineer in a small company that designed and manufactured educational equipment used to teach the principles of electrical engineering and computing. 

One day in April, the manager director bounded into the office where I worked.

“We’re selling our e-learning division! This means that we won’t be able to sell our flagship learning management system anymore. We need to find a solution. We had been working on an earlier project, but that didn’t work out. So, we need you to head up the development of a new learning management system”.

That new learning management system was given an internal codename. It wasn’t very original. 

We called it Project Phoenix.

References

Kim, G. et al. (2014) The Phoenix Project: A Novel about IT, DevOps, and Helping Your Business Win. 1st edition. Place of publication not identified: IT Revolution Press.

Kim, G. (2019) The Unicorn Project. IT Revolution Press.

Permalink Add your comment
Share post

This blog might contain posts that are only visible to logged-in users, or where only logged-in users can comment. If you have an account on the system, please log in for full access.

Total visits to this blog: 3990272