Given the direction of AI, does it make sense to learn basic coding?
August 19, 2023 11:05 AM   Subscribe

I'm currently in an academic-adjacent postdoc, and I'm contemplating careers beyond the academy. A dream job would be anything in museums or archives, but I know these are competitive fields. Really, any job that lets me learn/solve problems would be fine. My current position gives me a degree of free time - I had previously thought it might be worthwhile to learn basic Python/R/SQL - but now I wonder if that makes sense given AI?

I've been moderately following coverage of AI/ChatGPT, and a common point made is that it seems clear that a lot of coding labor will be replaced by AI. Codecademy offers free courses in basic Python, R, and SQL - for people in the fields of data analysis, libraries, archives, or museums, would you say it's still worth having a basic grasp of these, even with AI? If so, which would you say is most valuable? Thanks.
posted by coffeecat to Work & Money (22 answers total) 16 users marked this as a favorite
 
Best answer: My day job is 100 percent SQL when it comes to coding and I have basic Python knowledge. My industry has been all about the low code, no code, and now AI bandwagon for at least 6 years now. I still write my own SQL and don't plan to change that. I got promoted last year and no one has pushed back on my manual work. With the caveat that I am mid-career and at a company not known for being on the cutting edge, I think you should absolutely get a basic grasp on these skills.

Even if you end up using AI to write a query, for example, you still want to be able to read the query and tweak it if there are any issues. You need to know if the solution you are given is bad, okay, or even good. You want to be able to prove the results are not right.
posted by soelo at 11:14 AM on August 19, 2023 [18 favorites]


Best answer: I've been a SQL developer for over 20 years and I'm not concerned about AI coming for my job. Writing code is only part of the development process. Understanding indexing and performance is a big part, knowing that code that is optimized for one application doesn't work for another, and managing testing/deployment are other areas. There's a lot of analysis needed that can't easily or fully be automated because in many cases, the best solution is subjective. I tend to write very dense code that runs fast and does a lot of heavy lifting in very few lines but can be difficult to read. Some companies (I'm a contractor) prefer performance over legibility, but others will sacrifice some performance for the benefit of easier maintenance. So far AI hasn't demonstrated that it's capable of handling those nuances well. I see AI as a tool that will make development faster, but not ultimately replace developers entirely.
posted by mezzanayne at 11:37 AM on August 19, 2023 [8 favorites]


Best answer: I'm a software developer. A few months ago, I had to gently correct a junior coworker who was insisting that an API in the language we use existed because a GPT told him so. In defense of the AI, it had synthesized a very nice API that seemed like it would solve a problem if it had existed, but it didn't. (I'm not an expert in languages, so I'm sure there's good reasons this API didn't exist). So, I'm not worried about AI coming for my job yet, and, even if it gets better at writing real, correct code, everything soelo and mezzanayne wrote still holds true.

As far as the language goes, of the languages you mentioned, I'd go for SQL and Python. I don't know R very well, so that's my bias, but also, R is very good at some statistical computing things, but not very good at a lot of other more general-purpose things. Python + numpy + scipy + pandas + etc gets pretty close to the things I hear about in R, although maybe with more libraries, and can do a lot of other generally useful things (web stuff with flask/etc, UI stuff with pyqt, etc).
posted by Alterscape at 11:55 AM on August 19, 2023 [6 favorites]


Best answer: it seems clear that a lot of coding labor will be replaced by AI

I'm a programmer working professionally and have used LLM coding tools both at work and in side projects. Based on this experience, I can't agree with this statement: it's just not clear to me what will happen. Take it with a grain of salt, as it may be optimism about my job stability.

I think coding will be augmented by these tools and some coding will be replaced, but I'm not sure that is going to actually be jobs/workers being replaced, or just individual tasks performed by us. The difference matters a lot for someone thinking about earning money writing code, of course. The reason I believe this is that programming is so much more than typing: it's trying to understand what problem you are even solving, before writing a line of code (sometimes 50%+ of time is this). LLM tools in their current form can't entirely replace this part of the job, yet. I don't think they will even if they improve greatly, for the same reason they won't replace lawyers or therapists either: back and forth interaction with a real human that is actually reasoning about a situation.

To answer your actual question: would you say it's still worth having a basic grasp of these, which would you say is most valuable

Yes, I think there are so many problems you can solve with computation and software that it is worth having a basic grasp. Programming still feels like a superpower to me sometimes, when I can automate tasks that would otherwise take a lot of clicking, or enable entirely new modes of interaction with a computer (voice recognition tools). I will also add that programming can be fun and joyful

As for which is most valuable, I would pick Python just because it is the most general purpose and has massive amount of resources for learning, and can be a stepping stone to the others. But if you have statistical or data problems you want to solve right now, R or SQL might be more useful in the moment.
posted by okonomichiyaki at 11:56 AM on August 19, 2023 [3 favorites]


Best answer: Yes. LLM has made a large and interesting leap towards automated coding but we are still many years (at least a decade) out from it being reliable. Even then there will be an entire art to knowing exactly how to ask the AI for the code you want. Knowing how to do the actual coding will be a useful skill for some time to come.
posted by Tell Me No Lies at 12:05 PM on August 19, 2023 [2 favorites]


Best answer: Almost all of the difficulty of coding is not writing code, which AI is barely capable of doing even now. It's analyzing a problem and all of the confounding factors that make solving it necessary, determining the best solution given all of the business requirements now and in the future, all of the technical limitations that may apply, with an eye towards ease of testing, integration, maintenance and sunsetting, all while fitting within budget and timelines.

AI can't do that shit, AI can never do that shit. You want to learn to code, understand what coding really is -- it's turning 95% nebulous assumptions and business handwavery + 5% finite specifications into 100% solid machine instructions, and if you can do that consistently and professionally then no AI will ever take your job.
posted by seanmpuckett at 12:21 PM on August 19, 2023 [24 favorites]


Best answer: The results you get from an LLM scale with your own knowledge, both in programming language and concepts. It benefits from specific coaching. I actually think it's more worth it than ever, and easier than ever to do useful things quickly. Because of this, I suspect more and more problems will become worthwhile to solve with code that weren't previously. With LLM help, the differentiator becomes domain experience, which you have. So I think if it appeals to you, you should explore it and more career ideas may occur to you. Even if you don't understand python, playing with the code interpreter might give you a starting point to explore your interest.
posted by lookoutbelow at 12:21 PM on August 19, 2023 [2 favorites]


Response by poster: Thanks for all the answers so far- it's helpful to hear that the idea of AI replacing coding is perhaps a bit hyperbolic on the part of tech journalists - or at least, rooted in a much, much, more long-term timeline. I'll probably start with Python and then SQL.
posted by coffeecat at 12:24 PM on August 19, 2023


I enjoyed the Harvard CS50 course, which starts with fundamentals. There's also a python course which I did second. I did all that without asking ChatGPT anything which was probably good for a healthy self reliance and skepticism.
posted by lookoutbelow at 12:28 PM on August 19, 2023 [4 favorites]


okonomichiyaki But if you have statistical or data problems you want to solve right now, R or SQL might be more useful in the moment.
I think that generalizes: it's all grand learning a programming language but if you don't use it, soon after the course finishes, on some project that you care about, you may as well will lose it. In the 20thC I took formal courses in PL/1, Pascal, C, and forgot everything I learned there; except that, having learned one language, the next ones are easy because you've learned the basics of syntax and logic. Good luck, it will be a blast.
posted by BobTheScientist at 12:40 PM on August 19, 2023 [4 favorites]


And SQL is pretty great. I "coded" for about 15 years or so. Never will regret it. Being able to make a computer, and a massive database, do what you want, was pretty great.
posted by Windopaene at 12:41 PM on August 19, 2023 [1 favorite]


I suspect that the people who think that LLMs will successfully* replace humans in any job only think that because they don't understand coding and have never seen the actual source code of a neural network.

*Several examples of unsuccessful replacement of humans have already happened.
posted by heatherlogan at 1:25 PM on August 19, 2023 [7 favorites]


I'm about to retire from the Banking Software industry after 49 years, and you would think that where we are now should be radically different from what it was when I started. Not as much as you might think. COBOL is still king. Assembler language when speed is required. Databases sure, but there's a religious kind of thing (DB2 z/OS, DB2 LUW, Oracle, SQL Server?) And now that there are Cloud solutions, each of the above databases do not perform equally well in old mainframe vs "Distributed" environments.

There are endless confounding considerations (a word that was used above). An old friend from my college graduation class asked me (in early 70s) what the big deal was with computer programming (he became an engineer and worked in the Naval Yards). He'd write a program, put in some diagnostics, maybe adjust the program for different size ships, etc. Well in Banking we need to balance to the penny every night, make business/corporate/rich customers happy, be ready for any kind of disaster or security breach, etc. etc.

The term is MVC (a database Model, a View (GUI) of the state of the database, and a Controller to accept transactions and apply business logic (which is as elaborate as the Federal government can make it).

There are 3 levels to understanding SQL: how to express a query such that the results will match your request, how to design the database so that the queries you intend to run will be able to respond in a reasonable time (access paths, performance, caching, etc.) and how to insure that update/insert/delete transactions are also safe and performant. See ACID (Atomic - Consistent - Independent - Durable).

And then there's insight. Knowing what the data means and how it relates to the "business model". This is particularly (but not only) relevant when one Institution buys or merges with another. That just amps up all the problems/complexities when two independently developed databases need to accommodate different accounts, business rules and be converted/merged so that the combined larger Institution will realize the economies of scale that was the impetus for the merger in the first place.

Yeah (he said sarcastically) I'm sure AI will be taking care of all the above real soon now. But I'm retiring soon so I don't have to be worried (except if my Bank accounts get hosed).
posted by forthright at 1:45 PM on August 19, 2023 [4 favorites]


I'm an academic postdoc, and I absolutely think you want to get a sense for a language on your own. Yes, I think that to some extent, LLM-based tools may start to play some of the roles that random answers on StackExchange do, in terms of giving you a starting point in solving a problem, or an outline for accomplishing some task. But just like random unvetted answers on StackExchange, they may be outdated or wrong, and of course LLMs can also produce plausible-sounding yet completely fictitious output. Unlike StackExchange answers, you also won't have the extra context of some other user potentially pointing out those issues. The more comfort you have in a given language without relying on these tools, the easier it will be for you to integrate their output and to troubleshoot when they lead you astray. And, of course, there's a big difference between writing code that does what you're trying to accomplish adequately - this is where I am - and writing code that works elegantly, efficiently, and that is easy for others to interact with or maintain.

But you'll probably do best if you have some project you can work on that will force you to learn some of your language of choice. I've honestly failed to retain much from classes/languages where I didn't have that. Python is probably the most broadly useful option, but there are areas (including my non-statistics science subfields) where the availability of R packages might give it the edge. You'll want to poke around and see what people are using in the areas you see yourself working.
posted by ASF Tod und Schwerkraft at 3:00 PM on August 19, 2023 [2 favorites]


There's a difference between writing code and writing usable code.

Current AIs will write code, definitely. Programmers with experience and training will write usable code, however.

Usability can be described by a number of parameters, including code readability, code completeness, and code performance. Other parameters may be important, depending on the problem domain.

AIs will spit out code, but they don't understand what they are giving you, so they do not and cannot really get any of those aspects down, at least in their current form. They may be useful assistants to programmers, at the moment, but AIs will not replace humans, just yet.
posted by They sucked his brains out! at 5:27 PM on August 19, 2023 [2 favorites]


There’s a famous saying about law school that the point is not to teach you to be a lawyer, but to teach you how to think like a lawyer. Along those lines, the thing I found useful about learning to code is learning to think like a computer.

A different analogy: most people will never actually calculate a standard deviation or a correlation coefficient manually, but many people would benefit from under standing the concepts and how they’re used in statistics.
posted by kevinbelt at 5:34 PM on August 19, 2023 [3 favorites]


Compare the future to the past. A lot of code is already pre-written, as kevinbelt noted about statistics. The database software like SQL is pre-written. So AIs may make some things easier and quicker, but there will always be the parts that are new or unique that are quicker to code than to teach the AI.
posted by SemiSalt at 7:32 PM on August 19, 2023 [1 favorite]


To be able to have AI help you with coding, it is going to require AT LEAST a basic knowledge of coding on your end.

In short: Yes, very good idea to take some basic coding classes or training.
posted by flug at 10:13 PM on August 19, 2023 [2 favorites]


I have a research background in AI and am a programmer.

ChatGPT is good software tool for prototyping and autocompletion in several languages that I've thrown at it, but does its best when you know what you want and know how to express it. The more expert you are, the better you can guide it.

So, I would say have at least some coding experience if you expect to be working with it.
posted by zippy at 4:30 PM on August 20, 2023


You want to learn to code, understand what coding really is -- it's turning 95% nebulous assumptions and business handwavery + 5% finite specifications into 100% solid machine instructions, and if you can do that consistently and professionally then no AI will ever take your job.

Yes, this is why several decades of attempts at eliminating coding ("we'll use a language that is just like English!"; "we'll replace writing code with drawing diagrams!") have never worked. The amount of technical drudgery involved in writing code continues to decrease, however. For many people, tools like ChatGPT are going to make some things easier, but not make it so that you can turn more than the simplest idea into code without having any understanding of how the program works.
posted by grouse at 9:00 AM on August 21, 2023


Building on kevinbelt, one of the things people often misunderstand about learning coding is that the specific syntax and libraries and methods of a particular language are in many ways secondary to learning how to break computer problems into chunks. LLMs aren’t super-helpful with that part.
posted by aspersioncast at 9:28 AM on August 24, 2023 [2 favorites]


Pretty much what everyone is saying here is great.

Find something comprehensive on object features and data structures, preferably not in C++ but in Python if it exists. That'll put you in a framing ahead of a bunch of folks.

Also: I'm jealous of those working in SQL... I've seen some wicked cool things come from advanced querying.
posted by JoeXIII007 at 9:49 PM on August 25, 2023


« Older Song with melody/style similar to Aaliyah's "Try...   |   What impact is Hurricane Hillary likely to have in... Newer »

You are not logged in, either login or create an account to post comments