Introduction
An early gift!
This issue was due next Friday, but I had already filled up my submission queue with articles earlier this morning so decided to get it out to you to avoid an overly long issue next week š¤ . Much of the content focuses on where a software engineer's responsibility lies, with a podcast episode and stream discussion on organisations, communities and conflict; and articles on race in computing and environmental impact. But there's also a lot on designing interfaces and abstractions.
Writing
What is software engineering?
If I'm going to say that all this work I do helps programmers become software engineers, I had better tell you what software engineering is.
Aphorism Considered Harmful
I look into the origin of the phrase "make it work, make it right, make it fast", and realise that I've been misunderstanding it for all these years.
Video
[objc retain]; Episode 37: Communities and CocoaPods
Steven and I talk about the various communities that software engineers are in, and their relative commitment to the goals of those communities. Then we look into some new tooling for GNUstep: adding support for CocoaPods.
Audio
Episode 50: Organisation and Community
Software isn't a pure white-collar job, nor is it blue-collar. But then it isn't really an engineering occupation either, and nor is it a technician job. So what is it? š¹
Around the web
on abstraction
This article takes a rather philosophical look at abstraction and interface design, cataloguing the reasons abstractions fail and the design tools available to cope with those failures.
Hints for computer system design [PDF]
This 1983 article by Butler W. Lampson is one of the classics of software design. Using examples from across the industry he explains what properties software design must address and their interconnection. Also, itās one of the sources in the Aphorisms article.
Black Programmers
Nathan Ensmenger, author of The Computer Boys Take Over and historian of computing, reviews what we know of the role played by black people in the sector. In software-heavy countries including the US and UK, minority representation is still low in the industry outside of retail. For software engineering to do a good job engineers need to understand how society experiences their products and the systems containing those products, and we still have a narrow view on society.
Frugal computing ā¢ Wim Vanderbauwhede
On the need for low-carbon and sustainable computing and the path towards zero-carbon computing. One of the features of software engineering is constructing solutions within acceptable costs, and the environmental impact of computing is a cost that can no longer be externalised.
ACM, Ethics, and Corporate Behavior
Moshe Vardi makes a long overdue point about professional responsibility in this column in Communications of the ACM. The ACM make strong talk of the importance of our code of ethics and yet have not stood against any unethical action taken by Silicon Valley monopolists. In fact, the Communications is largely FAANG reports of how they do computer science āat scaleā.
Iām a member of the ACM. Communications is an interesting read, I keep up with the software engineering and women in computing SIGs. But Iāve never felt empowered to get involved with ACM democracy. I donāt recall ever meeting another member professionally, so havenāt built the network that would bring us together. If youāre a member, please email: grahamlee@acm.org.
Publication of the FSF-funded white papers on questions around Copilot
In response to Microsoft subsidiary Github's Copilotāa machine learning tool that is trained on the Github corpus of projects and emits (sometimes-)novel source code as a programmer's assistantāthe FSF sponsored a call for papers discussing the implications of the software. These are the five articles that came out of that project.
My own impression at the time Microsoft launched it was that Copilot ignores all of the community in the free software community, and colonises free software by allowing anyone to regurgitate its work into their proprietary products. These papers do not conclusively support or refute that interpretation. They do indicate that this is murky ground legally and morally, and that any Copilot user is adopting a lot of risk.