|
| 1 | ++++ |
| 2 | +title = "Yes, and..." |
| 3 | +description = """\ |
| 4 | + In this essay, Carson Gross discusses his advice to young people interested in computer science worried about the \ |
| 5 | + future given the advancements in AI.""" |
| 6 | +date = 2026-02-27 |
| 7 | +updated = 2026-02-27 |
| 8 | +authors = ["Carson Gross"] |
| 9 | +[taxonomies] |
| 10 | +tag = ["posts"] |
| 11 | ++++ |
| 12 | + |
| 13 | +I teach computer science at [Montana State University](https://www.cs.montana.edu). I am the father of three sons who |
| 14 | +all know I am a computer programmer and one of whom, at least, has expressed interest in the field. I love computer |
| 15 | +programming and try to communicate that love to my sons, the students in my classes and anyone else who will listen. |
| 16 | + |
| 17 | +A question I am increasingly getting from relatives, friends and students is: |
| 18 | + |
| 19 | +> Given AI, should I still consider becoming a computer programmer? |
| 20 | +
|
| 21 | +My response to this is: "Yes, and..." |
| 22 | + |
| 23 | +## "Yes" |
| 24 | + |
| 25 | +Computer programming is, fundamentally, about two things: |
| 26 | + |
| 27 | +* Problem-solving using computers |
| 28 | +* Learning to control complexity while solving these problems |
| 29 | + |
| 30 | +I have a hard time imagining a future where knowing how to solve problems with computers and how to control the complexity |
| 31 | +of those solutions is *less* valuable than it is today, so I think it will continue to be a viable career even with the |
| 32 | +advent of AI tools. |
| 33 | + |
| 34 | +### "You have to write the code" |
| 35 | + |
| 36 | +That being said, I view AI as very dangerous for junior programmers because it _is_ able to effectively generate code for |
| 37 | +many problems. If a junior programmer does not learn to write code and simply generates it, they are robbing |
| 38 | +themselves of the opportunity to develop the visceral understanding of code that comes with being down in the trenches. |
| 39 | + |
| 40 | +Because of this, I warn my students: |
| 41 | + |
| 42 | +"Yes, AI can generate the code for this assignment. Don't let it. You _have_ to write the code." |
| 43 | + |
| 44 | +I explain that, if they don't write the code, they will not be able to effectively _read_ the code. The ability to |
| 45 | +read code is certainly going to be valuable, maybe _more_ valuable, in an AI-based coding future. |
| 46 | + |
| 47 | +If you can't read the code you are very likely to fall into [The Sorcerer's Apprentice trap](https://www.youtube.com/watch?v=m-W8vUXRfxU), |
| 48 | +creating systems you don't understand and can't control. |
| 49 | + |
| 50 | +### Is Coding → Prompting like Assembly → High Level Coding? |
| 51 | + |
| 52 | +Some people say that the move from high level languages to AI-generated code is like the move from assembly to |
| 53 | +[high level programming languages](https://en.wikipedia.org/wiki/High-level_programming_language). |
| 54 | + |
| 55 | +I do not agree with this simile. |
| 56 | + |
| 57 | +Compilers are, for the most part, deterministic in a way that current AI tools are not. Given a high-level programming |
| 58 | +language construct such as a for loop or if statement, you can, with reasonable certainty, say what the generated |
| 59 | +assembly will look like for a given computer architecture (at least pre-optimization). |
| 60 | + |
| 61 | +The same cannot be said for an LLM-based solution to a particular prompt. |
| 62 | + |
| 63 | +High level programming languages are a _very good_ way to create highly specified solutions to problems |
| 64 | +using computers with a minimum of text in a way that assembly was not. They eliminated a lot of |
| 65 | +[accidental complexity](https://en.wikipedia.org/wiki/No_Silver_Bullet), leaving (assuming the code was written |
| 66 | +reasonably well) mostly necessary complexity. |
| 67 | + |
| 68 | +LLM generated code, on the other hand, often does not eliminate accidental complexity and, in fact, can add |
| 69 | +significant accidental complexity by choosing inappropriate approaches to problems, taking shortcuts, etc. |
| 70 | + |
| 71 | +If you can't read the code, how can you tell? |
| 72 | + |
| 73 | +And if you want to read the code you must write the code. |
| 74 | + |
| 75 | +### AI is a great TA |
| 76 | + |
| 77 | +Another thing that I tell my students is that AI, used properly, is a tremendously effective TA. If you don't use it |
| 78 | +as a code-generator but rather as a partner to help you understand concepts and techniques, it can provide a huge boost |
| 79 | +to your intellectual development. |
| 80 | + |
| 81 | +One of the most difficult things when learning computer programming is getting "stuck". You just don't see the trick |
| 82 | +or know where to even start well enough to make progress. |
| 83 | + |
| 84 | +Even worse is when you get stuck due to accidental complexity: you don't know how to work with a particular tool chain |
| 85 | +or even what a tool chain is. |
| 86 | + |
| 87 | +This isn't a problem with *you*, this is a problem with your environment. Getting stuck pointlessly robs you of time to |
| 88 | +actually be learning and often knocks people out of computer science. |
| 89 | + |
| 90 | +(I got stuck trying to learn Unix on my own at Berkeley, which is one reason I dropped out of the computer science |
| 91 | +program there.) |
| 92 | + |
| 93 | +AI can help you get past these roadblocks, and can be a great TA if used correctly. I have posted an |
| 94 | +[AGENTS.md](https://gist.github.com/1cg/a6c6f2276a1fe5ee172282580a44a7ac) file that I provide to my students to configure |
| 95 | +coding agents to behave like a great TA, rather than a code generator, and I encourage them to use AI in this role. |
| 96 | + |
| 97 | +AI doesn't *have* to be a detriment to your ability to grow as a computer programmer, so long as it is used |
| 98 | +appropriately. |
| 99 | + |
| 100 | +## ", and..." |
| 101 | + |
| 102 | +I do think AI is going to change computer programming. Not as dramatically as some people think, but in some |
| 103 | +fundamental ways. |
| 104 | + |
| 105 | +### Raw coding may become less important |
| 106 | + |
| 107 | +It may be that the *act* of coding will lose *relative* value. |
| 108 | + |
| 109 | +I regard this as too bad: I usually like the act of coding, it is fun to make something do something with your |
| 110 | +(metaphorical) bare hands. There is an art and satisfaction to writing code well, and lots of aesthetic decisions to be |
| 111 | +made doing it. |
| 112 | + |
| 113 | +However, it does appear that raw code writing prowess may be less important in the future. |
| 114 | + |
| 115 | +As this becomes relatively less important, it seems to me that other skills will become more important. |
| 116 | + |
| 117 | +### Communication Skills |
| 118 | + |
| 119 | +For example, the ability to write, think and communicate clearly, both with LLMs and humans seems likely to be much more |
| 120 | +important in the future. Many computer programmers have a literary bent anyway, and this is a skill that will likely |
| 121 | +increase in value over time and is worth working on. |
| 122 | + |
| 123 | +Reading books and writing essays/blog posts seem like activities likely to help in this regard. |
| 124 | + |
| 125 | +### Understanding Business |
| 126 | + |
| 127 | +Another thing you can work on is turning some of your mental energy towards understanding a business (or government |
| 128 | +role, etc) better. |
| 129 | + |
| 130 | +Computer programming is about solving problems with computers and businesses have plenty of both of these. |
| 131 | + |
| 132 | +Some business folks look at AI and say "Great, we don't need programmers!", but it seems just as plausible to me that |
| 133 | +a programmer might say "Great, we don't need business people!" |
| 134 | + |
| 135 | +I think both of these views are short-sighted, but I do think that AI can give programmers the ability to continue |
| 136 | +fundamentally working as a programmer while *also* investing more time in understanding the real-world problems (business or |
| 137 | +otherwise) that they are solving. |
| 138 | + |
| 139 | +This dovetails well with improving communication skills. |
| 140 | + |
| 141 | +### "Architecting" Systems |
| 142 | + |
| 143 | +Like many computer programmers, I am ambivalent towards the term "software architect." I have seen |
| 144 | +[architect astronauts](https://www.joelonsoftware.com/2001/04/21/dont-let-architecture-astronauts-scare-you/) inflict |
| 145 | +a lot of pain on the world. |
| 146 | + |
| 147 | +For lack of a better term, however, I think software architecture will become a more important skill over time: the |
| 148 | +ability to organize large software systems effectively and, crucially, to control the complexity of those systems. |
| 149 | + |
| 150 | +A tough part of this for juniors is that traditionally the ability to architect larger solutions well has come from |
| 151 | +experience building smaller parts of systems, first poorly then, over time, more effectively. |
| 152 | + |
| 153 | +Most bad architects I have met were either bad coders or simply didn't have much coding experience at all. |
| 154 | + |
| 155 | +If you let AI take over as a code generator for the "simple" stuff, how are you going to develop the intuitions necessary |
| 156 | +to be an effective architect? |
| 157 | + |
| 158 | +This is why, again, you must write the code. |
| 159 | + |
| 160 | +### Using LLMs Effectively |
| 161 | + |
| 162 | +Another skill that seems likely to increase in value (obviously) is knowing how to use LLMs effectively. I think that |
| 163 | +currently we are still in the process of figuring out what that means. |
| 164 | + |
| 165 | +I also think that what this means varies by experience level. |
| 166 | + |
| 167 | +#### Seniors |
| 168 | + |
| 169 | +Senior programmers who already have a lot of experience from the pre-AI era are in a good spot to use LLMs effectively: |
| 170 | +they know what "good" code looks like, they have experience with building larger systems and know what matters and |
| 171 | +what doesn't. The danger with senior programmers is that they stop programming entirely and start suffering from brain |
| 172 | +rot. |
| 173 | + |
| 174 | +Particularly dangerous is firing off prompts and then getting sucked into |
| 175 | +[The Eternal Scroll](https://theneverendingstory.fandom.com/wiki/The_Nothing) while waiting. |
| 176 | + |
| 177 | +Ask me how I know. |
| 178 | + |
| 179 | +I typically try to use LLMs in the following way: |
| 180 | + |
| 181 | +* To analyze existing code to better understand it and find issues and inconsistencies in it |
| 182 | +* To help organize my thoughts for larger projects I want to take on |
| 183 | +* To generate relatively small bits of code for systems I am working on |
| 184 | +* To generate code that I don't enjoy writing (regular expressions & CSS) |
| 185 | +* To generate demos/exploratory code that I am willing to throw away or don't intend to maintain deeply |
| 186 | +* To suggest tests for a particular feature I am working on |
| 187 | + |
| 188 | +I try not to use LLMs to generate full solutions that I am going to need to support. I will sometimes use LLMs alongside |
| 189 | +my manual coding as I build out a solution to help me understand APIs and my options while coding. |
| 190 | + |
| 191 | +I never let LLMs design the APIs to the systems I am building. |
| 192 | + |
| 193 | +#### Juniors |
| 194 | + |
| 195 | +Juniors are in a tougher spot. I will say it again: you must write the code. |
| 196 | + |
| 197 | +The temptation to vibe your way through problems is very, very high, but you will need to fight against that temptation. |
| 198 | + |
| 199 | +Peers *will* be vibing their way through things and that will be annoying: you will need to work harder than they do, |
| 200 | +and you may be criticized for being slow. The work dynamics here are important to understand: if your company |
| 201 | +prioritizes speed over understanding (as many are currently) you need to accept that and not get fired. |
| 202 | + |
| 203 | +However, I think that this is a temporary situation and that soon companies are going to realize that vibe coding at |
| 204 | +speed suffers from worse complexity explosion issues than well understood, deliberate code does. At that point I expect |
| 205 | +slower, more deliberate coding with AI assistance will be understood as the best way to utilize this new technology. |
| 206 | + |
| 207 | +Where AI can help juniors is in accelerating the road to senior developer by eliminating accidental complexity that often |
| 208 | +trips juniors up. As I said above, viewing AI as a useful although sometimes overly-eager helper rather than a servant |
| 209 | +can be very effective in understanding the shape of code bases, what the APIs and techniques available for a particular |
| 210 | +problem are, how a given build system or programming language works, etc. |
| 211 | + |
| 212 | +But you must write the code. |
| 213 | + |
| 214 | +And companies: you must let juniors write the code. |
| 215 | + |
| 216 | +## Getting a Job Today |
| 217 | + |
| 218 | +The questions I get around AI and programming fundamentally revolve around getting a decent job. |
| 219 | + |
| 220 | +It is no secret that the programmer job market is bad right now, and I am seeing good CS students struggle to find |
| 221 | +positions programming. |
| 222 | + |
| 223 | +While I do not have a crystal ball, I believe this is a temporary rather than permanent situation. The computer |
| 224 | +programmer job market tends to be cyclical with booms and busts, and I believe we will recover from the current bust |
| 225 | +at some point. |
| 226 | + |
| 227 | +That's cold comfort to someone looking for a job now, however, so I want to offer the specific job-seeking advice that |
| 228 | +I give to my students. |
| 229 | + |
| 230 | +### Family, Friends, Family of Friends |
| 231 | + |
| 232 | +I view the online job sites as mostly pointless, especially for juniors. They are a lottery and the chances of finding |
| 233 | +a good job through them are low. Since they are free they are probably still worth using, but they are not worth |
| 234 | +investing a lot of time in. |
| 235 | + |
| 236 | +A better approach is the four F's: Family, Friends & Family of Friends. Use your personal connections to find positions |
| 237 | +at companies in which you have a competitive advantage of knowing people in the company. Family is the strongest |
| 238 | +possibility. Friends are often good too. Family of friends is weaker, but also worth asking about. If you know or |
| 239 | +are only a few degrees separated from someone at a company you have a much stronger chance of getting a job at that |
| 240 | +company. |
| 241 | + |
| 242 | +I stress to many students that this doesn't mean your family has to work for Google or some other big tech company. |
| 243 | + |
| 244 | +*All* companies of any significant size have problems that need to be solved using computers. Almost every company over 100 |
| 245 | +people has some sort of development group, even if they don't call it that. |
| 246 | + |
| 247 | +As an example, I had a student who was struggling to find a job. I asked what their parent did, and they said they worked |
| 248 | +for Costco corporate. |
| 249 | + |
| 250 | +I told them that they were in fact extremely lucky and that this was their ticket into a great company. |
| 251 | + |
| 252 | +Maybe they don't start as a "computer programmer" there, maybe they start as an analyst or some other role. But the |
| 253 | +ability to program on top of that role will be very valuable and likely set up a great career. |
| 254 | + |
| 255 | +## Conclusion |
| 256 | + |
| 257 | +So I still think pursuing computer programming as a career is a good idea. The current job market is bad, no doubt, but |
| 258 | +I think this is temporary. |
| 259 | + |
| 260 | +I do think how computer programming is done is changing, and programmers should look at building up skills beyond |
| 261 | +"pure" code-writing. This has always been a good idea. |
| 262 | + |
| 263 | +I don't think programming is changing as dramatically as some people claim and I think the fundamentals of programming, |
| 264 | +particularly writing good code and controlling complexity, will be perennially important. |
| 265 | + |
| 266 | +I hope this essay is useful in answering that question, especially for junior programmers, and helps people feel |
| 267 | +more confident entering a career that I have found very rewarding and expect to continue to do for a long time. |
| 268 | + |
| 269 | +And companies: let the juniors write at least some of the code. It is in your interest. |
0 commit comments