by jakobov on 8/23/22, 9:20 AM with 18 comments
I have started writing a book on software design/architecture that provides a different perspective than existing books out there. The thesis of the book is that "code is for humans". The book explains how to write code that is optimal for our primitive monkey brains. The book describes how many of the best practices in software stem from deficiencies in our cognitive abilities. It expands on best practices such as (DRY, SSOT, etc) and brings new ideas on what is good code and how to write it.
I am looking for someone to partner with on this book as it's a huge project and I would love to be able to split the work.
I have written a rough outline and filled in about 40 pages of notes, examples and text. The project is still very much in it's infancy.
A bit about me: I worked as the software architect of a 100+ person team at Mobileye/Intel and have many, many years of experience working on a variety of software from self driving cars to web apps.
by smoochy on 8/23/22, 10:34 AM
Drop me a line, the email is on my website orion3.space
by mion on 8/23/22, 9:44 AM
One thing I really wish I had learned from a book is how to adapt the architecture to the current stage the company is in (something like this likely exists but IDK).
For instance, the “brittleness” of your systems must follow the “certainty” the company has on product-market fit. In other words, if the % of changing code is high then it should be cheap to change it. I could explain this in much more detail, and I have seen countless under-engineering and over-engineering issues in practice because people lack this mental model.
by quickthrower2 on 8/23/22, 10:36 AM
Most companies have tightly couple code, only partial test coverage and slow build times (builds bloat until the pain is too painful and it is reigned in but that is too far)
There is a technical and a social aspect to this. Telling the boss we will ship fewer features etc. as we are doing stuff for future maintainers and better on boarding.
by verdagon on 8/23/22, 6:51 PM
It can sometimes feel like a lot of folks are chasing other priorities and forget to even consider the human aspect of architecture. I also often see people make mistakes on what "simplicity" is, and what kind of simplicity should be optimized for. For a recent example, Rust's borrow checker is based on a simple rule (roughly, a reference can have one mutable reference xor multiple readonly reference) but it can often lead to more complexity than the corresponding program written in a GC'd language. Knowing when and how this happens is an art!
I'm not sure if I have anything you haven't thought of already, but I'd love to contribute a chapter or two on whatever topic, or edit anything that needs editing. If you'd like a sample of my work, I'm particularly proud of [1]!
[1] https://verdagon.dev/blog/yak-shave-language-engine-game
by eimrine on 8/23/22, 10:25 AM
I think your book with best practices also must contain something about TDD, Lisp macroses vs C++ ones, some bits of knowledge on system programming, and how software makes our world worse because of abandoning engineer culture in craft of software development. I do not think I can be a co-author, but I might help you if you have some interdisciplinary questions or if you need somebody to read your drafts.
English is not my mother language so do not expect great writing skills from me but if you have some unanswered questions from fields of general knowledge I will do my best to let your project be as good as you have claimed.
by aaronblohowiak on 8/23/22, 11:54 AM
by kkokosa on 8/23/22, 10:03 AM
by lapaz17 on 8/23/22, 11:10 AM
by sangupta on 8/23/22, 3:17 PM
by vagag on 8/23/22, 9:46 AM
by ChrisMarshallNY on 8/23/22, 10:32 AM
You will not suffer for volunteers.
I'm probably not one of them. I've done that kind of thing, before, and I sincerely wish you luck, but my own dance card is fairly full.
by mittermayr on 8/23/22, 11:02 AM
Tech books used to pay a much higher royalty than "regular books", like novels. I'd get 14% per book vs. 7% or less on a novel. That can make quite a bit difference. Of course, people will tell you to self-publish and keep next to 100% of your profit, but the gatekeeping function of publishing houses can be beneficial as well. I've had a few instances where I thought I had a fantastic idea, only to go through "the process" and see how it wouldn't have sold much.
That said, and I may get some heat for that, self-publishing only makes sense (if you're not just in it for the fun of typing and researching) — if you have a large-enough platform. I'd even argue that 95% of your success will be having a fantastic platform to launch this from, and 5% will be about the contents of the book (if you're self-publishing).
Pieter Levels could launch a photo book of his favourite cat photos, and still make a 100k off of it. Most people can't do that, because they don't have the platform.
This differs quite a bit with publishing houses. If you can get in, and it tends to be easier in tech writing as those books can be priced much higher, then they'll bring the platform, and you just bring the content. Once launched, you can build from this "borrowed" platform and try to work on your own audience. My unsolicited advice here would be to make as much as you possibly can (executing as quickly as possible) from that initial launch power and build a crowd around it that you can use as a firestarter for future projects.
Depending on which publishing house may offer a deal, this could mean being placed in most universities, being placed in large-chain book stores all around the world, or airports (for novels). Something that can rarely be done by self-publishing.
Again, not hating on the self-publishing route, especially when you look at the per-book numbers, where it's 14% or less before taxes vs. close to a 100%, but if you don't have a platform, then you'd probably need to be super ready for spending at least a full year on this to get it up to quality, and then also building a platform to launch it from. Just the title and name doesn't cut it anymore, unless you do get really lucky.
Hope this doesn't offend those who self-publish, if you're doing this successfully, you are the true masters. Finding a publishing house is, in my opinion, actually the easier route.