11 ms·
There's nothing stopping you from coding if you enjoy it. It's not like they have taken away your keyboard. I have found that AI frees me up to focus on the par
by iamleppert 1y ago
There's nothing stopping you from coding if you enjoy it. It's not like they have taken away your keyboard. I have found that AI frees me up to focus on the parts of coding I'm actually interested in, which is maybe 5-10% of the project. The rest is boiler plate, cargo-culted, Dockerfile, build system and bash environment variable passing circle of hell that I really could care less about. I care about certain things that I know will make the product better, and achieve its goals in a clever and satisfying way.
Even when I'm stuck in hell, fighting the latest undocumented change in some obscure library or other grey-bearded creation, the LLM, although not always right, is there for me to talk to, when before I'd often have no one. It doesn't judge or sneer at you, or tell you to "RTFM". It's better than any human help, even if its not always right because its at least always more reliable and you don't have to bother some grey beard who probably hates you anyway.
- 2snakes 1y agoI read one characterization which is that LLMs don't give new information (except to the user learning) but they reorganize old information.
- barrenko 1y agoCustodians of human knowledge.
- docmechanic 1y agoThat’s only true if you tokenize words rather than characters. Character tokenization generates new content outside the training vocabulary.
- emaro 1y agoKind of, but character-based tokens make it a lot harder and more expensive to learn semantics.
- docmechanic 1y agoSource: Generative Deep Learning by David Foster, 2nd edition, published in 2023. From “Tokenization” on page 134. “If you use word tokens: …. willnever be able to predict words outside of the training vocabulary.” "If you use character tokens: The model may generate sequences of characters that form words outside the training vocabulary."
- selfhoster11 1y agoAll major tokenisers have explicit support for encoding arbitrary byte sequences. There's usually a consecutive range of tokens reserved for 0x00 to 0xFF, and you can encode any novel UTF-8 words or structures with it. Including emoji and characters that weren't a part of the model's initial training, if you show it some examples.
- docmechanic 1y agoPretty sure that we’re talking apples and oranges. Yes to the arbitrary byte sequences used by tokenizers, but that is not the topic of discussion. The question is will the tokenizer come up with words not in the training vocabulary. Word tokenizers don’t, but character tokenizers do. Source: Generative Deep Learning by David Foster, 2nd edition, published in 2023. From “Tokenization” on page 134. “If you use word tokens: …. willnever be able to predict words outside of the training vocabulary.” "If you use character tokens: The model may generate sequences of characters that form words outside the training vocabulary."
- selfhoster11 1y agoThose tokens won't come up during training, but LLMs are capable of In-Context Learning. If you give it some examples of how to create new words/characters in this manner as a part of the prompt, they will be able to use those tokens at inference time. Show it some examples of how to compose a Thai or Chinese sentence out of byte tokens, and give them a description of the hypothetical Unicode range of a custom alphabet, and a sufficiently strong LLM will be able to just output bytes despite those codepoints not technically existing. And like I said, single-byte tokens very much are a part of word tokenisers, or to be precise, their token selection. "Word tokeniser" is a misnomer in any case - they are word piece tokenisers. English is simple enough that word pieces can be entire words. With languages where you have numerous suffixes, prefixes, and even in-fixes as a part of one "word" (as defined by "one or more characters preceded or followed by a space" - because the truth is more complicated than that), you have not so much "word tokenisers" as "subword tokenisers". A character tokeniser is just a special case of a subword tokeniser where the length of each subword is exactly 1.
- asdff 1y agoWhy stop there? Just have it spit out the state of the bits on the hardware. English seems like a serious shackle for an LLM.
- apothegm 1y agoSo much this. The AI takes care of the tedious line by line what’s-the-name-of-that-stdlib-function parts (and most of the tedious test-writing parts) and lets me focus on the interesting bits like what it is I want to build and how the pieces should fit together. And debugging, which I find satisfying. Sadly, I find it sorely lacking at dealing with build systems and that particular type of boilerplate, mostly because it seems to mix up different versions of things too much and gives you totally broken setups more often than not. I’d just as soon never deal with the he’ll that is front end build/lint/test config again.
- tcfhgj 1y agoAren't stdlib functions the ones you know by heart after a while anyways?
- danielbln 1y agoNot everyone works in a single language and/or deep in some singular code base.
- BigJono 1y agoGee do you think maybe that's why all our software sucks balls these days?
- Philpax 1y agoNo? Of all the reasons software sucks, multidisciplinary programmers are unlikely to be near the top.
- jajko 1y agoThey certainly are for me, working but horribly designed java projects done by plsql devs were a proper eyeballs bleeding long into the night. Absolutely 0 framework or libs, nothing even for logging. Code architecture that would be left in the dust by most university semester projects. This is how plsql codebases look, but boy Java (and rest of the world) moved quite far since 1995.
- righthand 1y agoThey perhaps haven’t taken away your keyboard but anecdotally, a few friends work at places where their boss is requiring them to use the LLMs. So you may not have to code with them but some people are starting to be chained to them.
- hermanradtke 1y agoYes, there are bad places to work. There are also places that require detailed time tracking, do not allow any time to write tests, have very long hours, tons of on-call alerts, etc.
- godelski 1y agoYou write that like the latter is in opposition to the former. Yet the content suggests the latter is the former
- 7589447636 1y agoHow long until it becomes the rule because of some arbitrary "productivity" metric? Sure, you may not be forced to use it, but you'll be fire for being "unproductive".
- simonw 1y agoThat's the case at Shopify already: https://twitter.com/tobi/status/1909251946235437514 https://twitter.com/tobi/status/1909251946235437514
- godelski 1y agoAnd even when that's not the case you are still indirectly working with them because your coworker is and "somehow" their code has gotten worse
- melvinroest 1y ago> The rest is boiler plate, cargo-culted, Dockerfile, build system and bash environment variable passing circle of hell that I really could care less about. Even more so, I remember making a Chrome extension and feeling intimidated. I knew that I'd be comfortable with most of it given that JS is used but I just didn't know how to start. With an LLM it is way faster to spin up some default config and get going versus reading a tutorial. What I've noticed in that respect is that I just read what it does and then immediately reason why it's there. "Oh, there's a manifest.json file with permissions and a few other things, fair, makes sense. Oh, so you have the HTML/CSS/JS of the extension, you have the HTML/CSS/JS of the page you're injecting some code into and you have the JS of a background worker. Ah yea, I get that." And then I just get immediately on coding.
- dxroshan 1y ago> What I've noticed in that respect is that I just read what it does and then immediately reason why it's there .... How if it hallucinate and gives you wrong code and explanation? It is better to read documentations and tutorials first.
- doix 1y ago> How if it hallucinate and gives you wrong code Then the code won't compile, or more likely your editor/IDE will say that it's invalid code. If you're using something like Cursor in agent mode, if invalid code is generated then it gets detected and the LLM keeps re-running until something is valid. > It is better to read documentations and tutorials first. I "trust" LLM's more than tutorials, there's so much garbage out there. For documentation, if the LLM suggests something, you can see the docstrings in your IDE. A lot of the time that's enough. If not, I usually go read the implementation if I _actually_ care about how something works, because you can't always trust documentation either.
- milesrout 1y agoPlenty of incorrect code compiles. It is a very bad sign that people are making comments like "Then the code won't compile". As for my editor saying it is invalid..? That is just as untrustworthy as an LLM. >I "trust" LLM's more than tutorials, there's so much garbage out there. Yes, rubbish generated by AI. That is the rubbish out there. The stuff written by people is largely good.
- godelski 1y agoI think you're robbing yourself. Of course, it all depends how you use the LLM. While the same can be true for StackOverflow, the LLMs just scale the issues up. > The rest is boiler plate, cargo-culted, Dockerfile, build system and bash environment variable passing circle of hell that I really could care less about. Except you do care. It's why you're frustrated and annoyed. And good!!! That feeling is because what you're describing requires solving. If something is routine, automate it. But it's really not good to automate in a statistical way, especially when that statistical tool is optimized for human preference. Because remember that also means mistakes are optimized to be missed by humans.[0] With expertise in anything, I'm sorry, but you also got to do the shit work. To be a great musician you gotta practice boring scales. It's true even if you just want to be a sub par one. But a little grumpy is good. It drives you to fix things, and frankly, that's our job. The things that are annoying and creating friction don't need be repeated over and over, they need alternative solutions. The scripts you build are valuable. The "useless" knowledge you gain isn't so useless. Those little details add up without you knowing and make you better. That undocumented code makes you frustrated and reminds you to document your own. You don't want to be a hypocrite. The author of the thing you're using probably thought the same thing: "No one is gonna use this garbage, I'm not going to waste my time documenting it". Yet here we are. Over and over again yet we don't learn the lesson. I'm not gonna deny there's assholes. There are. But even assholes teach you. At worst, they teach you how not to act. And some people are you telling you to RTM and not RTFM. Sure, it has lots of extra information in it that you don't need to get your specific job done, but have you also considered that it has lots of extra information in it? The person that wrote it clearly thought the context was important. Maybe it isn't. In that case, you learned a lesson in how not to write documentation! What I'm getting at is that there's a lot of learning done all over the place. Trying to take out all the work and only have "the fun" is harming yourself and has a large potential to make less time for the fun stuff[0]. I'd be surprised if I'm alone in this, but a lot of stuff I enjoy now was stuff that originally frustrated me. IME this is pretty common! It's true for every person I know. Similarly, it's also true for things I learned that I thought I'd never use again. It always has a way of coming back. I'm not going to pretend it's all fun and games. I'm explicitly saying it's not. But I'm confident in the long run it's better. Despite the lack of accuracy, I use LLMs (and Google, and even the TFM) like I would a solution guide the homework problems when I was in school. Try first, then consult. The struggle is an investment in your future. It sucks, but if all the best things in life were easy then we'd all have them. I'm just trying to convince you that it pays off. I'm completely aware this is all context dependent. There's a time and place for everything. But given the percentages you mention (even taken as exaggeration), something sounds wrong. It's hard to suggest specific solutions without details but I'd be surprised if there weren't better and more rewarding solutions than having the LLM do it for you [0] That's the big danger and what drives distrust in them. Because you need to work extra hard to find mistakes, increasing workload, not decreasing, because debugging is most of the job!
- wvh 1y agoI think the fear for those of us who love coding, stability and security, that we are going to be confronted with apples that are rotten on the inside and our work, our love, is going to turn (even more so) into pain. The challenge in computing is that the powers that decide have little overview over the actual quality and longevity of any endeavour. I work as a consultant assessing other people's code and it's hard not to lose my religion, sort of speak.
- johngladtj 1y agoThis. Frankly I don't want to spend 2 hours reading documentation just to find out some arcane incantation that gets the computer to do what I want it to do. The interesting part of programming to me is designing the logic. It's the 'this, then that, except when this' flow that I'm really interested in, not the search for some obscure library that has some function that will parse this csv. Llms are great for that, and let me get away from the pointless grind and into the things that I enjoy and are actually providing value. The pair programming is also a super good thing. I work best when I can spitball and throw out random ideas and get quick feedback. Llms let me do that without bothering others who have their own work to do.
- bluefirebrand 1y ago> Frankly I don't want to spend 2 hours reading documentation just to find out some arcane incantation that gets the computer to do what I want it to do Then you are just straight up not cut out to be a software developer The existence of LLMs may reduce the need to slog through documentation, but it will not remove that need
- johngladtj 1y agoYou're welcome to believe what you will, but the fact is I've written code that serves a purpose and provides value to those businesses, and at the end of the day that's is all that matters, not some arbitrary purity test you just made up. The purpose of programming is to provide value for people, not to read documents.
- bluefirebrand 1y agoThis isn't some arbitrary purity test There is more to "providing value" than simply producing working code Does it have known security exploits built in that you have no idea about because you couldn't be bothered to read documentation? Is the "value" you provided extremely temporary because someone is going to come along and exploit your shitty LLM generated code to steal all of your client's customer data? Software Engineering isn't just about writing code it is about understanding what you're building because if you don't, other people will exploit that
- voidUpdate 1y ago> The rest is boiler plate, cargo-culted, Dockerfile, build system and bash environment variable passing I keep seeing people saying to use an LLM to write boilerplate, but like... do you not just copy that from another project where you already wrote it?
- handzhiev 1y agoNo, because it's usually a few years old and already obsolete - the frameworks and the language have gone through a gazillion changes and what you did in 2021 suddenly no longer works at all.
- moooo99 1y agoI mean, the training data also has a cutoff date and changed beyond that are not reflected in the code suggestions. Also, I know that people love to joke on modern software and JS in particular. But if you take react code from 2020 and drop it into a new react codebase it still works. Even class based components work. Yes, if you jumped on the newest framework bandwagon every time stuff will break all the time, but AI won’t be able to help you with that either. If you went for relatively stable frameworks, you can re use boilerplate completely or with relatively minimal adjustments
- whstl 1y agoReact is alright but the framework tooling around it changes a lot. If you take a project from 2020 it's a bit of a pain to upgrade it.
- scarface_74 1y agoTrue. But LLMs have access to the web. I’ve told ChatGPT plenty of times to verify an SDK API or if I knew the API was new, I just gave it a link to the documentation. This was mostly around various AWS SDKs
- simonw 1y ago
- jrapdx3 1y agoLike many others writing here, I enjoy coding (well, mostly anyway), especially the when it requires deep thought and patient experimentation to get anywhere. It's also great to preside over finally wiring together the routines (modules, libraries) that bind a project into a coherent whole. Haven't much used AI to assist. After all, hard enough finding authentic humans capable and willing to voluntarily review/critique one's code. So far AI doesn't consistently provide that kind of help. OTOH seems almost certain over time AI systems will improve in terms of specific and comprehensive "insights" into the particular types of code one is writing. I think an issue is that human creativity is hard to measure. Likely enough AI is even tougher to assess. Probably AI will increasingly be assigned tasks like constructing project skeletons, assuring parts can be joined together without undue strain, handling "boilerplate" and other routine chores. To be sure the landscape will look different in 50 years, I'm certain we'd be amazed were we able to see what future systems will be doing. In any case, we shouldn't hesitate to use tools that genuinely boost our creativity. One badly needed role would be enabling development of higher reliability software. Still that's a far cry from the contributions emanating from the best of human originality, talent and motivation.
- skydhash 1y ago> doesn't judge or sneer at you, or tell you to "RTFM". It's better than any human help, even if its not always right because its at least always more reliable and you don't have to bother some grey beard who probably hates you anyway. That’s a lot of trauma you’re dealing with.