5 ms·
> Well-designed automation should look like a funnel, rather than a subway map. Do you have any examples of this? Like an example project? > never target auto
by bloopernova 2y ago
> Well-designed automation should look like a funnel, rather than a subway map.
Do you have any examples of this? Like an example project?
> never target automation of 100% of incoming workload. Ever.
A new product owner came in last year and wanted to "automate everything". They wanted a web page where builds, branches, commits, and more were all on one page that showed exactly which commit was deployed where, by whom, etc etc. They wanted this extravaganza for a 2-person application that was in maintenance with no new features.
They're also the kind of person who consults chatgpt or copilot on a subject while you're explaining that subject to them, to check that the LLM agrees with what you are saying. They'll even challenge people to prove some copilot output is incorrect. It seems to me that they consider LLMs more reliable than people.
- shakna 2y ago> They wanted a web page where builds, branches, commits, and more were all on one page that showed exactly which commit was deployed where, by whom, etc etc. Sounds like they would have been a fan of ungit [0], which I have seen used for that kind of flow overview, though it has looked more impressive than actually proved helpful in my experience. [0] https://github.com/FredrikNoren/ungit https://github.com/FredrikNoren/ungit
- chrsig 2y ago> A new product owner came in last year and wanted to "automate everything". They wanted a web page where builds, branches, commits, and more were all on one page that showed exactly which commit was deployed where, by whom, etc etc. They wanted this extravaganza for a 2-person application that was in maintenance with no new features. you know, this seems very reasonable until that last sentence.
- ykonstant 2y agoWhy a web page and not directly the git log? If style is necessary, reformat the log data with some fancy ASCII art?
- teqsun 2y agoI'm assuming the PO isn't technical so git-log, git-blame, etc. are over their head. Which itself begs why they'd need this level of detail on the codebase.
- chrsig 2y agothe "which ones are deployed where" bit is nice. if you're managing a lot of repos and deployments, yeah, that kind of thing can get really messy. i don't care how it's presented, via webpage or cli tool or whatever -- just saying that when you are working at larger scale, those are very reasonable things to want to see in one spot at a glance. the need dissipates as you scale down.
- stackskipton 2y agoSure, but that's best handled by Application reporting it via monitoring system. For example, at my company, we embed git commit, version and branch that last merge to main in container environment variables. Prometheus then exposes that as labels so we can just look any time it comes up. If we wanted to build a Grafana dashboard, that could be done easily as well. I'm sure most monitoring systems have some way to loading that into their system.
- chrsig 2y agoSure, and the commenter's PO didn't specify how to get him a webpage. All very reasonable, see?
- marcosdumay 2y agoIt's hard to put your current ops configuration inside the git log. If you found some way to do that that fits well in the philosophy of a stream of immutable changes, I'm interested in reading your ideas.
- andiveloper 2y agoWe are using git tags on the commit to figure out what is currently deployed where, e.g. "dev-stage", "test-stage" etc.
- pc86 2y agoI would argue that if you are non-technical enough that you need this type of data on a web page for you, you probably don't actually need this data and I'd be wary that you're just looking for a way to find out who broke something so you can be shitty to them. If you really want to know this type of commit-level data you can get it from git pretty easily, even if you're not particularly good with git but can search half-decently. If you don't have the skills to use git, it's extremely unlikely that knowing what the current branch and commit status of the repository is will meaningfully help you do your job.
- Aeolun 2y agoI want this information and I can easily pull it out of git. I still want the webpage too because I don’t want to take 15 manual steps and open twenty different Github pages every time I want to find out.
- Smeevy 2y agoOh my goodness, I wouldn't last a day with someone who did that. That sort of casual disrespect while you're talking to someone is wholly unacceptable behavior. There's only one person you work with that's like that, right? Right?
- bloopernova 2y agoSo far they are the only one. They're definitely "leadership material"!
- bryanrasmussen 2y agothis reminds me of the last manager I had who used to be a developer, I think he was probably a pretty good developer - but not as good as he thought he was, because he thought he was good enough that he could tell you how things worked and why you were wrong without any knowledge of the code base or experience actually using the various 3rd party services that were being integrated. I tried to develop the skill of nodding and then doing it correctly later, but it would always hit because there was a ticket I had written getting assigned to another dev and I had to explain to them why it was the way I had specified, and then he would correct me, and I would say yes part of what you say is correct and needs to be considered (as I said, I think he was a good developer at one time) but not all of it and he would insist he was correct and I had to go talk it over later with the dev as to why it worked the way I specified.
- bornfreddy 2y agoThat sounds awful. The manager is clearly not doing their job well, so avoiding their opinion and covering their mistakes is imho counterproductive. Instead, I would let my reservations be known and proceed exactly as they suggested. If it works, great, I have learned something. If not, let's scrape this and do it right, this time with manager's knowledge. But in the end, if you can't work with the manager, it's time to head to greener pastures.
- bee_rider 2y ago> They're also the kind of person who consults chatgpt or copilot on a subject while you're explaining that subject to them, to check that the LLM agrees with what you are saying. They'll even challenge people to prove some copilot output is incorrect. It seems to me that they consider LLMs more reliable than people. Dear lord, these tools have just come out, how can they already have invented a new type of asshole?
- johnm 2y agoNo, those are the same that have been around forever. They just have a new tool to "justify" their crappy behavior.
- mitjam 2y agoI experienced this, as well. It’s a whole new level of „I know enough to be dangerous“.
- bee_rider 2y agoHah, thanks to LLMs we’ve drastically reduced the barrier to entry, in terms of knowing enough to be dangerous. Hopefully there’s a corresponding reduction in the level of knowledge required to be useful…
- whstl 2y agoThis is as fun as the business or product person that "knows how to code".
- whstl 2y agoWe had a product manager that made requirements based mostly on ChatGPT. It would output completely nonsensical stuff like QR-Code formats that don't exist, or asking to connect to hallucinated APIs. It was often caught by lead devs quite quickly: the documentation wasn't a link or a PDF but rather some block of text. But in the cases it wasn't, it was super costly: some developer would spend hours trying to make the API work to no avail, or, in the case of the QR code, it would reach QA which would be puzzled about how to test it. So yes there is a new type of asshole.
- internet101010 2y agoAn example of this would be filtering on different attributes of data. You have a complex decision tree interface but ultimately the output is constructed into a single way that can be passed along to a single class/function.
- Arch485 2y ago> Do you have any examples of this? Not GP, but at my old job making games we had a truly horrendous asset import pipeline. A big chunk of it was a human going through a menial 30 minute process that was identical for each set of assets. I took on the task of automating it. I made a CLI application that took a folder path, and then did the asset import for you. It was structured into "layers" basically, where the first layer would make sure all the files were present and correct any file names, the next layer would ensure that all of the textures were the right size, etc. etc. This funneled the state of "any possible file tree" to "100% verified valid set of game assets", hence the funnel approach. It didn't accept 100% of """valid""" inputs, but adding cases to handle ones I'd missed was pretty easy because the control flow was very straightforward. (lots of quotes on "valid" because what I thought should be acceptable v.s. what the people making the assets thought should be acceptable were very different)
- SatvikBeri 2y ago> Do you have any examples of this? Like an example project? Not the OP, but I worked on loans once. The application originally required tax returns to check income. Then we added the option to upload recent bank statements instead of tax returns. But there were a lot of places where the assumption of tax returns was hard-coded, so to save time the developers basically added an entirely separate code path for bank statements. Do this n times, and you have 2^n code paths. When we eventually refactored and fixed it, we replaced the hardcoded references to tax returns with a concept of estimated income. Then we were able to reduce the branch to simply saying "if tax returns are present, estimated income = get_estimated_income_from_tax_returns(), otherwise estimated income = get_estimated_income_from_bank_statement()". That's the core idea – collapse a branch as soon as possible.
- Aeolun 2y agoMy boss does this once in a while. While I understand the impulse, it always makes me feel a bit redundant when they’ll ask me to explain why what ChatGPT spits out won’t work for our situation. Isn’t that the whole point of hiring experts?! So that you can ask them, instead of the computer for advice?
- initplus 2y agoOne example is that instead of adding support for edge case mutations/changes late in a process, it's sometimes better to force those records to be thrown away and reset with a new record from the start of the process. You avoid chasing down flow on effects of late unexpected changes in different parts of the application. To give a contrived/trivial example, imagine a TLS handshake. Rather than building support to allow hosts to retry with a different cert, it's better to fail the connection and let the client start from scratch. Same principle can be applied to more complex process automation tasks in business. Imagine a leave tracking system. It might be better to not support changing dates of an existing leave application, and instead supporting cancel & re-apply. Best part is that the user facing part of both versions can be exactly the same.
- airbreather 2y agoThey are also the sort of person that thinks the problem can defined by thinking about and describing wanted behaviour alone.
- awesomeMilou 2y ago> wanted to "automate everything". With all due respect, this is preached by pretty much every book you read on cloud administration. I'd argue that if the process is decent enough, it'll work with major cloud providers, because their API's are rich enough to enable this already. The thing with most automation tools though is, a) they're abysmal for most of the workflows preached (thinking of ansible and im shuddering) and b) to reach the degree of automation described in most literature, you need the API's of $MAJOR_CLOUD_PROVIDER.