5 ms·
Software is narrative
- b0rsuk 9y agoOkay, I'll take it at face value. Can you name a few competent programmers who are also competent book / story writers ?
- Textarcana 9y agoVernor Vinge and Charles Stross spring immediately to mind. Also James Tiptree, Jr. was a CIA analyst in the 50s and 60s so probably was a regular user of the early government mainframe systems.
- imh 9y agoThe Martian was fantastic and the author is a programmer. I recently got hooked on the Bobiverse books and their author is a programmer too. In fact, I wholly recommend anyone reading this to check both of those out :) Super fun books
- joshmarlow 9y agoI believe Ken MacLeod was a programmer and he is an great writer (along with Stross and Vinge mentioned in a sibling comment) https://en.wikipedia.org/wiki/Ken_MacLeod https://en.wikipedia.org/wiki/Ken_MacLeod
- gonubalabala 9y agoMichał Cholewa - writes sci-fi book series as well as machine learning papers.
- nickjj 9y agoI create video training courses on tech topics and one of the metrics I use to determine "is this performing well?" is the completion rate of the courses and individual videos. I started taking communication and story telling pretty seriously about 9 months ago and the data on my 2 latest courses (where I tried to create a cohesive narrative of the content) shows the completion rate being quite a bit higher than my older courses. Are there other things at play? Maybe, but I'm 100% convinced it takes more than "raw programming talent" to be a good programmer in general. When it comes to designing library code or public APIs, I would rather use code written by someone with 5 years of writing / story telling experience and 2 years of coding experience vs someone with 10 years of coding experience but can't communicate well at all. Chances are the 2nd person wouldn't be able to see the "big picture" stuff when it comes to designing APIs, and when it comes to API design, the big picture is the most important thing. The implementation details of each function is the easy stuff (since you're a Google search away from solving most technical problems). There's also many other factors that matter besides your code. For instance, if I can't even find your project, or your documentation is lack luster then it doesn't matter if you wrote the most elegant code in the universe, I'm not going to use it.
- erokar 9y agoZachary Mason Ellen Ullman Jon Evans
- deleted 9y ago[deleted]
- mercer 9y agoCoetzee comes to mind. Ted Chiang is a technical writer in the software industry, and while I don't know if that means he's a competent programmer, it seems logical that he can do some programming.
- ldng 9y agoJust wondering if I'm the only one, but I like my logs to be the narrative of what's happening in the system.
- Textarcana 9y agoThat's where I was going when I wrote this post. Logging and log analysis is a large part of the continuous delivery tooling that I've been working on for the past 7 years.
- wickawic 9y agoAgreed. I think many people do a good job of logging when something goes wrong, and maybe they are good about logging inputs/outputs of a system, but I think that logging important decisions often falls off the table. Ideally I would like to take a request ID, grep the logs, and get an entire story of what happened to that request. In reality, this rarely happens!
- fragmede 9y ago> take a request ID, grep the logs, and get an entire story of what happened to that request. In reality, this rarely happens! If that's the situation you find yourself in, I cannot praise centralized logging with a good frontend highly enough because I frequently find myself trying to figure out what happened to a request, and it's like night and day. Needing to ssh anywhere and run grep against log files is functional if there's only one or a handful of VMs, but it gets complicated with a handful of machines, and even just SCP-ing the logs off becomes time consuming if there are a lot of machines. Then once the logs are off, 'grep' quickly becomes inadequate. (And I should know, I've built some truly horrible regexps to try and grep for dates because I didn't know any better.) All that friction means that answering the original question; figuring out a detailed internal reason for why my customer received a 500 http status response error, is just too toilsome for all but the most (as you noted) doesn't happen in . With centralized logging, I'm able to search for a request ID and see the logs, and this is a reality as often as I need, in order to debug complex multi-system issues.
- 9y ago
- yodon 9y agoI think the OP is on a path that will eventually lead them to discover or re-invent Conway's Law[0] [0]https://en.wikipedia.org/wiki/Conway's_law https://en.wikipedia.org/wiki/Conway's_law
- Textarcana 9y agoYeah, way ahead of you on that one. http://infiniteundo.com/post/87172935713/first-rule-of-hacker-club-is-dont-talk-about-conways-law http://infiniteundo.com/post/87172935713/first-rule-of-hacke...
- sebastianconcpt 9y agoNice one! Thanks for sharing the insight
- ajarmst 9y agoI think I'll open with a dubious metaphor I just came up with and a demand that the reader immediately and wholeheartedly accept that metaphor as literal truth. That's how you grab an audience!
- Textarcana 9y agoYes, I write intentionally click-baity blog posts. You got me.
- jcahill 9y agohttps://archive.is/1CJpA https://archive.is/1CJpA
- adrianratnapala 9y agoajarmst's point goes beyond click-baitiness -- indeed it is about the little quote-box on the first para rather than the title. You say: "Any software system begins as a shared narrative about a problem and the people who come together around solving that problem." I can, in fact, bend my view of facts to fit this metaphor. And if am also dubious about doing so, that's OK as it makes it all the more likely that I will learn something new from your post. So why spoil that with some the arrogant demand that: "If you don’t accept the above proposition completely then nothing I have to say about software is going to work for you."?
- evincarofautumn 9y agoJust to advocate for the devil here, I think some advice is predicated on a shared model, between the giver and the taker, of how things work. If you don’t buy the model, then you probably won’t deeply understand or agree with the arguments that would get you from the model to the thesis.
- noshbrinken 9y agoI definitely appreciated this early warning to get off the ride.
- d--b 9y agoSorry I just don't understand the article. Can anyone rephrase?
- nsuser3 9y agoThe main point of the article appears to be: > You always have to design both “the product” your customers want and “the environment” in which your product will run in production. Thus any software product begins with two obvious categories of “work to be done.” People ignore this because it seems [counterintuitive.][going_there]
- Textarcana 9y agoHey you saved everyone a click! I am the author of the post and I approve this summary :)
- marcosdumay 9y agoYour blog archive (where the title links to) seems to be broken.
- Textarcana 9y agoWeird it just worked fine for me. http://infiniteundo.com/archive/filter-by/text http://infiniteundo.com/archive/filter-by/text
- marcosdumay 9y agoOh, don't mind. My network connection was the one that had a problem.
- treehau5 9y agoI think I took the metaphor more to heart than others. I like to think of myself as a good storyteller. I can explain pretty in depth computer science topics to my business team who lack technical knowledge pretty well through stories. My problem seems to be translating this to software structures. I wish I could be as good of a "writer" in my software, but I am always looking to others for the best practices. In this case, I am always in a constant state of doubt and "writers block", I need to figure out how to unleash my own creativity.
- dannyrosen 9y agoThe contrast here is great. Finding the problem and creating a solution along with focusing on the process of creating that solution in order to reduce risk of building the wrong solution. Contrasted to building a solution along with a sane dev and production environment for that solution to fit in, to increase possible iteration velocity by reducing deployment inertia.
- sebastianconcpt 9y agoThis is a good metanarrative for software authors. The more the product wants to be art, the more important this concept is. Humans are wired to spread stories so if a product doesn't communicate plenty of good ones, then there you have the anwer to why marketing budget isn't fixing the business.