16 ms·
> The amount of cognitive overhead in this deceptively simple log is several levels deep: you have to first stop to type logger.info (or is it logging.info? I u
by spiralcoaster 1y ago
> The amount of cognitive overhead in this deceptively simple log is several levels deep: you have to first stop to type logger.info (or is it logging.info? I use both loguru and logger depending on the codebase and end up always getting the two confused.) Then, the parentheses, the f-string itself, and then the variables in brackets. Now, was it your_variable or your_variable_with_edits from five lines up? And what’s the syntax for accessing a subset of df.head again?
What you're describing is called: programming. This can't be serious. What about the cognitive overhead of writing a for loop? You have to remember what's in the array you're iterating over, how that array interacts with maybe other parts of the code base, and oh man, what about those pesky indices! Does it start at 0 or 1? I can't take it! AI save me!
- BoiledCabbage 1y ago> What you're describing is called: programming. Is that the part of programming that you enjoy? Remembering logger vs logging? For me I enjoyed the technical chalenges, the design, solving customer problems all of that. But in the end, focus on the parts you love.
- okayishdefaults 1y agoThis is a sign that the user hasn't taken the time to set up their tools. You should be able to type log and have it tab complete because your editor should be aware of the context you're in. You don't need a fuzzy problem solver to solve non-fuzzy problems.
- bitpush 1y ago> user hasn't taken the time to set up their tools The user, infact, has setup a tool for the task - an "AI model", unless you're saying one tool is better than others.
- deleted 1y ago[deleted]
- sodality2 1y agoThen it's a real bad case of using the LLM hammer thinking everything is a nail. If you're truly using transformer inference to auto fill variables when your LSP could do that with orders of magnitude less power usage, 100% success rate (given it's parsed the source tree and knows exactly what variables exist, etc), I'd argue that that tool is better. Of course LLMs can do a lot more than variable autocomplete. But all of the examples given are things that are removing cognitive overhead that probably won't exist after a little practice doing it yourself.
- chrisweekly 1y agoThis. Set up your dev env and pay attention to details and get it right. Introducing probabilistic codegen before doing that is asking for trouble before you even really get started accruing tech debt.
- bitpush 1y agoYou say "probabilistic" as if some kind of gotcha. The binary rigidness is merely an illusion that computers put up. At every layer, there's probabilistic events going on. - Your hot path functions get optimized, probabilistically - Your requests to a webserver are probabilistic, and most of the systems have retries built in. - Heck, 1s and 0s operate in a range, with error bars built in. It isnt really 5V = 1 and 0V = 0. Just because YOU dont deal with probabilistic events while programming in rust, or python doesnt mean it is inherently bad. Embrace it.
- sodality2 1y agoWe’re comparing this to an LSP or intellisense type of system, how exactly are these probabilistic? Maybe they crash or get a memory leak every once in a while but that’s true of any software including an inference engine… I’m much more worried about the fact that I can’t guarantee that if I type in half of a variable name, that it’ll know exactly what i’m trying to type. It would be like preparing to delete a line in vim and it predicts you want to delete the next three. Even if you do 90% of the time, you have to verify its output. It’s nothing like a compiler, spurious network errors, etc (which still exist even with another layer of LLM on top).
- paulmooreparks 1y agoI know old timers who think auto-completion is a sign of a lazy programmer. The wheel keeps turning....
- motorest 1y ago> This is a sign that the user hasn't taken the time to set up their tools. You are commenting a blog post on how a user set up his tools. It's just that it's not your tool that is being showcased. > You should be able to type log and have it tab complete because your editor should be aware of the context you're in. ...or, hear me out, you don't have to. Think about it. If you have a tool that you type "add logs" and it's aware of best practices, context, and your own internal usage... I mean, why are you bothering with typing "log" at all?
- anon22981 1y agoTo be perfectly fair saying ”it’s aware of the best practices, context and internal usage” is very misleading. It’s aware none of those (as it is not ”aware” of anything), and that is perfectly clear when it produces nonsensical results. Often the results are fine, but I see nonsensical results often enough in my more LLM dependant coworkers’ PRs. I’m not saying not to use them, but you putting it like that is very dishonest and doesn’t represent the actual reality of it. It doesn’t serve anyone but the vendors to be a shill about LLMs.
- oneeyedpigeon 1y agoI mean, "add logs" is twice as much work as "logs". I suspect you're implying a lot more, but you haven't really explained what you're referring to.
- goosejuice 1y agoOr the user works with user-hostile tools. Some stacks, cloud providers, etc are absolutely horrible to use. There are many people out there that have absolutely no idea how horrible or great they have it.
- viraptor 1y agoTab complete what? No LSP will complete context-appropriate message and parameters without writing any of it. "What did the user want to log here" is inherently a fuzzy problem.
- oneeyedpigeon 1y agoAnd a chatbot can consistently work out what I want to log faster than I can?
- viraptor 1y agoMost of the time, yes. Since you refer to this as chatbot, I'm guessing you don't have much experience with things like cursor completion - give it a go before you're too negative.
- theshrike79 1y agoThe LLM is just Intellisense on literal steroids. It can infer the correct logging setup from the rest of the project and add the most logical values to it automatically
- andy99 1y agoI like building stuff - I mean like construction, renovations. I like figuring out how I need to frame something, what order, what lengths and angles to cut. Obviously I like making something useful, but the mechanics are fun too.
- oneeyedpigeon 1y agoI agree. This is like asking a carpenter "do you like sawing a plank of wood or do you like designing and creating a finished piece of work?" The answer is "both"—the low-level details may look tedious to those who don't have a true love for the work, but it's just a context switch to another deeply enjoyable aspect of the work as a whole.
- morkalork 1y agoI actually take pride in the logs I write because I write good ones with exactly the necessary context to efficiently isolate and solve problems. I derive a little bit of satisfaction from closing bugs faster than my colleagues who write poor logs.
- noisy_boy 1y ago> Is that the part of programming that you enjoy? Remembering logger vs logging? No but genuinely like writing informative logs. I have been in production support roles and boy does the lack of good logging (or barely any logs at all!) suck. I prefer print style debugging and want my colleagues on the support side to have the same level of convenience. Not to mention the advantages of being able to search through past logs for troubleshooting and analysis.
- sodapopcan 1y ago> Is that the part of programming that you enjoy? Remembering logger vs logging? If you're proficient in a programming language then you don't need to remember these things, you just do it, much like spoken language.
- simonw 1y agoI find there is a limit to the number of programming languages I can stay actively proficient in at any given time. I am using a much wider range of languages now that I have LLM assistance, because I am no longer incentivized to stick to a small number that are warm in my mental cache.
- MangoToupe 1y agoReally? At some point syntax became kind of a vague sense of color on top of the data flow, which is ultimately the same in any language. I don't even recall what it means to be proficient in one language versus another—surely most career programmers can ramp up on any given syntax or runtime in a relatively short period of time. The hard part is laying out the data flow. Granted, AI can definitely ease that ramp-up time at the cost of lengthening it.
- kaibee 1y ago> At some point syntax became kind of a vague sense of color on top of the data flow Thank you for this analogy.
- viraptor 1y agoYou still get to be proficient in an environment. I've got around 10 projects open in different Cursor windows. Logging in each of them is one or more of: logger.info, log.info, echo, eventLog.WriteEntry, console.log, syslog, printf, active_span&.set_tag, puts, rollbar.info, ... (and more) It's not the ramp up time. There's no problem with learning yet another one. There's a problem with remembering them all as you switch between the projects. Most of the time LLM will know exactly what to use, how, and what data I want to log. Which will take way less time than me rediscovering how a specific project I haven't seen in weeks does things.
- bowsamic 1y agoIt's not about focussing on what you love but about basic competence and being able to deal with simple programming problems
- AdieuToLogic 1y ago>> What you're describing is called: programming. > Is that the part of programming that you enjoy? Remembering logger vs logging? If a person cannot remember what to use in order to define their desired solution logic (how do I make a log statement again?), then they are unqualified to implement same. > But in the end, focus on the parts you love. Speaking only for myself, I love working with people who understand what they are doing when they do it.
- pyridines 1y agoIt's not unreasonable to briefly forget details like that, especially when you're dealing with a multi-language codebase where "how do I make a log statement?" requires a different pattern in each one.
- AdieuToLogic 1y ago> It's not unreasonable to briefly forget details like that, especially when you're dealing with a multi-language codebase where "how do I make a log statement?" requires a different pattern in each one. You make my point for me. When I wrote: ... I love working with people who understand what they are doing when they do it. This is not a judgement about coworker ability, skill, or integrity. It is instead a desire to work with people who ensure they have a reasonable understanding of what they are about to introduce into a system. This includes coworkers who reach out to team members in order achieve said understanding.
- MangoToupe 1y agoEnjoying any part of this seems a little odd to me. The enjoyable part is using the thing you built. Regardless, programming (remembering logger vs logging, syntax, debugging) is certainly the easier end of things.
- endymion-light 1y agoYeah - a lot of these complaints feel like what I heard very early in my career about how you shouldn't learn python. The C learning I did was still useful, but I appreciate not artisanally crafting all my memory management by hand so that I can ship something that i've created faster
- eulgro 1y agoI definitely would never use Python in production. But it remains an amazing tool for prototyping and writing quick dirty scripts. I can reasonably expect Python to be installed on every Linux system, the debugging experience is amazing (e.g. runtime evaluation of anything), there's a vast amount of libraries and bindings available, the amount of documentation is huge and it's probably the language LLMs know best. If there were two languages I would suggest anyone to start with, it would be C and Python. One gives a comprehensive overview of low-level stuff, the other gives you actual power to do stuff. From there on you can get fancy and upgrade to more advanced languages.
- endymion-light 1y agoOh 100%, there's definitely an important trade-off, and it's important to know. But there was definitely a cultural disdain and judgment for "why are you using python to create a simple side project - C is superior". It's still important to know both, and especially when I began working on aspects like multithreading I found my basis in C helped me learn far easier, but i'm definitely more supportive of the ship it mindset. It's better to have a bad side project online than have none - you learn far more creating things then never making things, and if you need LLMs and Python to do that, fine! I think it depends on how you approach these tools, personally I still quite focus on learning general, repeatable concepts from LLMs as i'm an idiot who needs different terms repeated 50 times in similar ways to understand them properly!
- theshrike79 1y agoProgrammers love to pretend their crap needs to handle FFANG loads to give them an excuse to overengineer :) In many many cases Python will be perfectly fine until you hit absolutely massive loads, and even then you can optimise the hot path with something else while keeping the rest as is.
- dakiol 1y agoIf you remove all the tiny details that you detest because you think you should better spend your time on the “important stuff”, be careful; you may wake up one day and not care enough about anything because you have been discarding stuff bit by bit.
- viraptor 1y agoIt could happen! https://youtu.be/y1aSqZ23ydk https://youtu.be/y1aSqZ23ydk
- adamhartenz 1y agoYou don't use auto-complete for for-loops? Wait... You use a compiled language, rather than writing machine code by hand? Some would call THAT programming.
- xdfgh1112 1y agoFor me it's the opposite, I know exactly how to write log lines. It's just tedious. AI auto completes pretty much what I would have written.
- lmm 1y agoIf it's really that tedious and mechanical, there should be a code-level affordance for it (e.g. a macro, or something like https://github.com/lancewalton/treelog https://github.com/lancewalton/treelog). Code is read more than it's written, and code that can be autocompleted isn't worth reading.
- danielbln 1y agoThat's just a different type of automation. We can argue all day about determinism and repeatability, but at the end of tue day we are all in the business of automation. We are arguing about the specifics.
- lmm 1y ago> That's just a different type of automation. We can argue all day about determinism and repeatability, but at the end of tue day we are all in the business of automation. We are arguing about the specifics. Why choose to use something unreliable instead of using or writing something reliable? Isn't reliability the whole point of automation in the first place? And I think it's fairly widely accepted that you shouldn't check compiled binaries or generated code into your source control, you should check in the configuration that generates it and work with that. (Of course this presupposes that your generator is reliable)
- btown 1y agoOne of the things I love about computing and computer science is how the wide variety of tools available, built over multiple generations, provide people with the leverage to bring their highly complex ideas to life. No matter how they work best, they can use those tools as a way to keep their mind focused on larger goals with broader context without yak shaving every hole punched in a punchcard. You see a person whose conception of programming is different from yours; I see a person who's finding joy in the act of creating computer programs, and who will be able to bring even more of their ideas to life than they would have beforehand. That's something to celebrate, I think.
- nbbaier 1y agoWell said!
- gopalv 1y ago> who will be able to bring even more of their ideas to life than they would have beforehand. This is the core part of what's changing - the most important people around me used to be "People who know how". We're slowly shifting to "Knowing what you want" is beating the Know-how. People without any know-how are able to experiment because they know what they want and can keep saying "No, that's not what I want" to a system which will listen to them for without complaining supplying the know-how. From my perspective, my decades of accumulating know-how is entirely pointless and wiped away in the last 2 years. Adapt or fall behind, there's no way to ignore AI and hope it passes by without a ripple.
- anon7000 1y agoI agree at least a little bit, but let’s be honest: the history of software engineering is a history of higher and higher levels of abstraction wrapping the previously levels. So part of this is just another abstraction. But another part, which I agree with, is that abstracting how you learn shit is not good. For me, I use AI in a way that helps me learn more and accomplish more. I deliberately don’t cede my thinking process away, and I deliberately try to add more polish and quality since it helps me do it in less time. I don’t feel like my know-how is useless — instead, I’m seeing how valuable it is to know shit when a junior teammate is opening PRs with critical mistakes because they don’t know any better (and aren’t trying to learn)
- _alternator_ 1y agoYeah, it’s also surprising because the user really shouldn’t be using f-strings for logging since they get interpolated whether or not the log level is set to INFO. This is more important when the user is writing say, debug logs that run inside hot loops, which will incur a significant performance penalty by converting lots of data to its string representation. But sure, vibe away.
- blibble 1y agoyep, putting user input into the message to be interpolated is asking for trouble in C this leads to remote code execution (%n and friends) in java (with log4j) this previously lead to remote code execution (despite being memory safe) why am I not surprised the slop generator suggests it
- astrange 1y agoFormat strings are very useful, so I'd suggest fixing the language to let you use them. You don't have to live with it interpreting them too early! Even better, you should be interpreting them at time of reading the log, not when writing it. Makes them a lot smaller.
- WD-42 1y agoThe thing is, the logging calls already accept variable arguments that do pretty much what people use f-string in logging calls for already, except better. People see f-string, they like f-string, and they end up in logs, that's really all there is to it.
- yuliyp 1y ago> you should be interpreting them at time of reading the log This reminds me of a fun interaction in browser devtools: you can log a complex struct to the console. The browser does not copy the entire nested structure when you do so immediately, meaning that if someone mutates that struct after it was logged, the value you see depends on when you expanded the nested struct.
- deleted 1y ago[deleted]
- webstrand 1y agoI can totally write the logging code myself, but its tedious formatting the log messages "nicely". In my experience AI will write a nice log message and capture relevant variables automatically, unlike handwritten statements where I inevitably have to make a second pass to include a critical value I missed.
- skydhash 1y agoI think we need to abandon this idea of writing code like a scribe copying a book. There’s a plethora of tools ready to help you take advantage of the facts - that the code itself is an interlinked structure (LSPs and code navigation), - that the syntax is simple and repetitive (snippets and generators), - that you are using a very limited set of symbols (grep, find and replace, contextual docs, completion) - and that files are a tools for organization (emacs and vim buffers, split layout in other editors) Your editor should be a canvas for your thinking, not an assembly line workspace where you only type code out.
- phendrenad2 1y agoYes but cognitive load is a real thing. Being free to not think about the proper format to log some generic info about the state of the program might seem like a small thing, but remember, that frees up your mind to hold other concerns. See well-trodden research that the human mind can hold roughly three to five meaningful items in working memory at once. When in the flow of programming, you probably have a complicated unconscious process of kicking things out of working memory and re-acquiring them by looking at the code in front of you. I think the author is correctly observing that they are getting the benefit of not having to evict something from their mental cache to remember how logging works for this particular project (especially egregious if you work on 10 codebases and they each use a different logger).
- fleebee 1y agoHow often do we print debug something that isn't just a single variable? I have defined a macro in my editor that expands into a nicely formatted logger call when I type "dbg" and the variable name. I can do it without thinking or losing focus. On the other hand, if I used an LLM to guess what I wanted to get logged (as the author did), I'd have to read and verify the LLMs output. That's cognitive overhead I normally wouldn't have. Maybe I'm missing something, but I just don't find myself in situations where I only vaguely know what I want to debug and would benefit from an LLM guessing what that could be.
- phendrenad2 1y agoEveryone's process if different, and by the way that applies to much simpler things, like peeling an apple. Ask 10 people to do something and they'll do it 10 different ways. And through the magic of availability heuristic, your comment was almost inevitable.
- conradev 1y agoThe author clearly dislikes writing logging code enough to put the work into creating a fine-tuned model for the purpose. I thought “making tools to automate work” was one of the key uses of a computer but I might be wrong
- bigstrat2003 1y agoOne thing that has become abundantly clear from the AI craze is how many people - who do programming for a living - really don't like programming. I don't really understand why they got into the field; to be honest, it seems kind of like someone who doesn't like playing the guitar embarking on a career as a guitarist. But regardless of the reasons they seem to be pretty happy for a chance to not have to program any more.
- a_bonobo 1y agoDo you like 'solving problems' or do you like 'getting into the weeds'? Both are valid, and both are common uses of programming. When I was younger, I loved 'getting into the weeds'. 'Oh, the audio broke? That gives me a great change to learn more about ALSA!'. Now that I'm older, I don't want to learn more about ALSA, I've seen enough. I'm now more in camp 'solving problems', I want the job done and the task successfully finished to a reasonable level of quality, I don't care which library or data structure was particularly used to get the job done. (both camps obviously overlap, many issues require getting into the weeds) In this framework, the promise of AI is great for camp 'solving problems' (yes yes hallucinations etc.), but horrible for camp 'getting into the weeds'. From your framing you sound like you're from camp 'getting into the weeds', and that's fine too. But I can't say camp 'solving problems' doesn't like programming. Lot of carpenters out there who like to build things without caring what their hammer does.
- paulmooreparks 1y agoExactly this. I still "get into the weeds" without AI if I really need to dig into learning something new or if I want to explore some totally new idea (LLMs don't really do "totally new"). If I'm debugging a CRUD app, though... eh, it's sunny outside and I only have a couple more hours of daylight, so, AI it is.
- astrange 1y agoI spent a very long time getting into the weeds to learn everything about computer architecture, because at the time it seemed like it was the only way to do it and I wanted to have a career. In the meantime social media / cloud hosting / StackOverflow were invented, it became much easier for people to write online, and it turned out I didn't need to do any of that because the actual authors have all explained themselves on it. Though, doing this is still the right way to learn how to debug things! nb I actually just realized I never understood a specific bit of image processing math after working on ffmpeg for years, asked a random AI, and got a perfectly clear explanation of it.
- paulmooreparks 1y agoI like having muscles. I hate lifting weights. I like being fit. I hate running. I like being able to play guitar and piano. I hate practicing. I like having food in my pantry. I hate grocery shopping. I like having custom software that fits my needs. I hate writing code.
- therein 1y agoBut this is using a machine to do the lifting for you so you don't develop the muscles. You are actually not strong through technology but left weak and helpless when left on your own. It is just a bunch of people that don't take pride in self-sufficiency. It is a muscle that has atrophied for them.
- paulmooreparks 1y agoYes, exactly.
- Disposal8433 1y ago"I'm a chef, I hate cooking, I buy readymade meals in the supermarket." You're right about the pride of writing actually good code. I think a lot about why I'm still writing software, and while I don't have an answer, it feels like the root cause is that LLMs deprive us of thoughts and decisions, our humanity actually. I have never felt threatened by an LSP or a text editor. But LLMs remove every joy, and their output is bad or may not what you wanted. If I hated programming, I would actually buy software as I don't have such precise needs to require tools perfect for those needs. No need to enjoy a good meal, AI will chew food for you and inject it in your bloodstream. No need to look at nature, AI will take pictures and write a PDF report. Tools help because they are useful. AI is in a weird position to replace every job, activity, and feeling. I don't know who enjoys that but it's very strange. Do they think living in a lounge chair like Wall-E spaceship is good? As for the article, it's yet another developer not using its tools properly. The free JetBrains code completion is bad, and using f-strings in logs is bad. I would reject that in a merge request, sorry. But thinking too much about it makes me sad about the state of software development, and sad about the pride and motivation of some (if not most) developers nowadays.
- bravesoul2 1y agoAlso logging is important! Send structured logs if possible. Make sure structure is consistent between logs. You may have to reach for some abstraction or metaprogramming to do this. All logs can be message, object and no need to format anything. That said ai saves typing time.
- ghurtado 1y ago> What you're describing is called: programming. And once you have enough experience, you realize that maintaining your focus and managing your cognitive workload are the key levers that affect productivity. But, it looks like you are still caught up with iterating over arrays, so this realization might still be a few years away for you.
- jychang 1y agoYeah. This is a really weird complaint to be honest. By that standard, python is not real programming because you're not managing your own memory. Is python considered AI now?
- mym1990 1y agoAbstraction has always been a part of programming. Are you going to deride someone for not remembering how to write a sorting algorithm from scratch when .sort() is available? This is just another instance of that, trivial as it may be. The next abstraction level for programming is just natural language, if you want to try to gate keep that, have fun.
- skydhash 1y agoNatural language to formal language is not a matter of implementation details, it’s a matter of ambiguity where the definition of a term is contextual. Formalism is removing the dependency on context so that the semantic of a term or a proposition is embedded in itself. Formalism is so essential that we we use it to create spontaneous form of programming language (that we call pseudocode) to express some idea clearly.
- mym1990 1y agoThe irony of you talking about natural language is that hardly anyone would understand what you just said. I would pin it as AI slop but I guess that wouldn't be right of me to assume.
- chvid 1y agoThe section you refer to is a justification for code completion and possible providing (visual) feedback for whether a various constructs are spelled or used correctly. It is fairly established that sort of thing increases programmer productivity (as in writing a Java program using notepad vs. writing it using IntelliJ). In the old days, we used to do this by using static type inference. This is harder to do in dynamic languages (such as Python), so now we try to do it with LLMs. It is not obvious to me that LLMs are a better solution; you may be able to do more but you loose the predictability of the classic approach.
- CafeRacer 1y agoYeah! And actually writing this inefficient code in python? Seriously? Be a man, write assembly.
- Cthulhu_ 1y ago> What you're describing is called: programming. This can't be serious What that statement is telling me is that the author at one point didn't consider logging to be a fully fledged formal non-functional requirement, more of an optional and/or informal side chore. I used to work at a company that built software for mobile networks; their entire C codebase was full of logging statements, pretty much every step made in processing a signal was logged. Probably as a form of tracing, and automated instrumentation would possibly have been a better solution, but they were a bit old fashioned.
- timcobb 1y agoI relate to this. The cognitive overhead of a for loop is, honestly, way less for me writing a log. There's something about writing logs that's a PITA.
- nojito 1y ago> What you're describing is called: programming. If you feel copying and pasting documentation is programming, you’re gonna have a really rough time.
- wiseowise 1y agoWhat you’re describing is useless noise that shouldn’t even be a blip on my radar. Programming is solving a problem, not learning 20 different ways to say Log, logger, lumber, timber, and whatever else “creative” name writer of logger library chose to use.
- AmazingTurtle 1y agocame here to say this. I don't want to wrap my head around writing pretty logs and involving all the variables I want to eventually see in my logs. I just want to "dump it" and keep writing main logic
- theshrike79 1y agoExactly, I switch between multiple languages, projects and library conventions daily. I can’t be arsed to remember how I add parameters in which type and did this one have context or not. Just today I got bit (again) by the fact that the Go log library doesn’t have Debug as an option. And I’ve been writing Go for a decade. (log/slog does have levels though)
- Viliam1234 1y ago> What about the cognitive overhead of writing a for loop? You have to remember what's in the array you're iterating over, how that array interacts with maybe other parts of the code base, and oh man, what about those pesky indices! Does it start at 0 or 1? I am old enough to remember people complaining about having to write a semicolon at the end of each line. Or declare a variable...