Yeah, a Robot Can't Take Your Programming Job. Don't Get Too Comfortable Though; A Person Who Actually Understands AI Can.
Tags: ai, chatgpt, learning, promptengineering
Published: 2023-06-28 06:45:24

## Underestimating AI is Why Your Job Will Be at Risk Sooner Rather Than Later. It Doesn't Have to Be That Way Though.

It's widely acknowledged that AI and automation have the potential to significantly impact the job market, including the field of programming. Experts generally contend that while AI may automate certain tasks, it is unlikely to completely replace human programmers. Instead, AI is more likely to augment and enhance the work of human programmers. 

In the rapidly-evolving world of technology, it's super important to critically examine pseudo-insights on new technological breakthroughs. What they lack in depth and thoroughness, they compensate for in virality; captivating the clap-reactions of many who can settle for simplistic overview of current events, be it for one side or another. 

Superficial understandings of the issues du jour in the realm of tech discourse are common, yet it's disappointing to witness.

During the process of researching on my own the various benefits of utilizing AI tools for the possible creation of entire applications, I was hoping to find some cool commentary on such things as the co-emerging opportunities possible Github Copilot X and GPT-engineer, which will be huge boons to the non-programmer of today who is already surrounded with well-established no/low-code tools like Bubble.io, Framer, etc.

Instead, I came across a series of articles written by someone who was wrong online, unfortunately. Many such cases. 

It's becoming ever more necessary to fact-check things online, in an age of not only _misinformation_ but even _disinformation_. But if you're just seeking quick ~~riches~~ insights, many trendy ideas regarding AI's capabilities are ready and waiting that fail to stand up to even results the AIs could generate themselves as an answer to something like 'Explain how to structure a prompt for the best results, detailed step by step guide' for example.

One common fallacy is the tendency to overlook the transformative potential of AI. Some of the best 'prompt engineering' advice you can find online today will tell you to describe things in levels of detail comparable to what you would tell a human assistant who you were working together with on a project, such as a freelancer or a coworker.

If we are to treat ChatGPT and other comparable tools as our assistant, i.e., in the same way we would treat a fellow human developer, then we should make a few important assumptions that shape the way we interact with not only AIs but other humans.

In one particular series of articles, the author described that their approach to the AI was that they meant to treat it like a comparable-level human assistant; one could assume that in this thought exercise they were either at this person's level of programming expertise, better than they were, or at a more beginner stage of understanding. Not particularly relevant, but the amount of variation possible yet left unspecified is important to keep in mind. 

Upon receiving 'finished code' results that any newbie dev would probably be lowkey embarrassed to publish on github, which further still had to be corrected of multiple errors manually, the author didn't yet seem to realize that in all their interactions with the assistive tool, they started from a presumption that included by default a huge amount of smugness towards the AI's capabilities, which actually strongly affected the results they got. 

By expecting that it would be difficult for the AI to complete tasks which would seem like low-level assignments for a junior dev to readers in-the-know, but only inputting vague instructions simplistic enough that there was barely anything to work with, you get a resulting attitude best summed up like this: _Humans and AI are suuuper different! The AI is somehow smart enough to figure exactly what I meant by reading my mind, but still too dumb to figure out how to do it correctly! _

If you were communicating with an actual human dev (especially a beginner), this way of giving instructions would be hard to follow through on properly, even irritating.

Let's imagine for a moment that you are a professional developer yourself. You very well may be, considering you're reading this! ;P Cool. So you're a dev, and let's say that you had an assistant who was recently hired to your company, maybe hadn't been filled in on all the project details and objectives yet. 

You have been tasked with guiding this assistant in their own task, which is to complete some kind of coding project on their own. From what you've heard, they're even a completely self-taught coder, and this is their first tech job. 

Now, would you give this person instructions to complete said coding project that were missing huge amounts of information as to the particular ways you would prefer the task to be completed? And then give no opportunity for them to ask follow-up or clarification questions of their own? Not even actively encouraging them to do so? 

It's just common sense and basic courtesy as any type of instructor to make sure that, for anyone you are trying to help that is learning how to do a task for you and trying to help you complete it successfully, you should at least make sure that person comprehends any of your requirements and specifications first. You should give details of the plan to accomplish a task with sufficient instructional context so that they could self-correct as needed based on the assignment's expectations too. 

My point is this: Considering the level of attention to detail that is necessary to use when giving instructions to a human assistant, why is it somehow some sort of 'haha look at how dumb the results from this AI were, it's not gonna take our jobs you guys I promise' gotcha to give super vague instructions to an AI and then be shocked, just shocked, to see that it 'can't' make something that looks anywhere near whatever may have you had in mind, but, quite possibly, failed to mention to your assistant. 

If you're looking for a tip to create better prompts for your ChatGPT usage, I've found great success with giving multi-step prompts that sound something like this:

"i'm trying to do [whatever i'm trying to do, at least 2 sentences about it] i'm about to give you [whatever type of informational text i have that would be relevant to the instructions] and i'll tell you what to do with the information next, so don't get started without my specific instruction!"

You can even have the tool explain to you, in a detailed step-by-step guide, the best way to do something specific. Just ask it to do so! And then use what you learn from its instructions to give _it_ instructions on how to proceed with your task.

I've also found huge success in taking result text from Perplexity.ai query threads and using it to inform a dialogue with ChatGPT. 

Comparing the two use cases, Perplexity is capable of more accurate, current-year-relevant, non-hallucinatory results which automatically include citation of specific sources as evidence for claims, but is also capable of describing based on real working knowledge how to do hypothetical things you can't necessarily find an article anywhere about. It also has a really good memory IME not only for things within same-thread discussions, but also for whatever you add in your profile in the 'secret' section where you answer questions with info about yourself that will inform it of a sort of meta-approach to what could be relevant to include in results that is interesting or useful to you personally! Very cool to have something I've previously mentioned randomly be discussed in an unrelated question I'm asking. Suuuuuper useful, and very fun. 

ChatGPT, on the other hand, is best at generating original text that you can instruct it to do document modifications across the board with; it has a good memory for things within the same chat thread, and can do things like 'critique my essay' 'add relevant emoji bullet points' 'make it 25% shorter and mildly sarcastic' 'take out all instances of capitalized letters unless they are names or acronyms' 'format as markdown codebox' etc. 

But yeah, back to the more essayish talk.

On another note: it is widely encouraged for aspiring developers to learn programming online, with many oft touting a wide variety of freely available resources and cost-effective learning platforms. It is common to encourage people of all ages, types, and backgrounds to "Learn to code online!!!!!1!!!11" in order to improve not only their intelligence and functional skills in programming but also to create for themselves a career path based on their own interests, chosen from of the plethora of content available as far as 'subjects to learn' and 'ways to apply them practically and creatively to solve real-world problems'. 

Now, it is often recommended that such a student learn from freely-available resources: blogs, YouTube tutorials, podcasts featuring the latest updates from experts, forums where any question can be answered by people with experience, books available online for free or for a price, participating in publicly available codebases for open-source programs or other projects on GitHub, and any other useful tools that devs tend to use to make their own lives easier at work; even full courses (free or paid) by professionals on how to start from zero knowledge and become a master at any subject possible. 

Whether you are a young high-schooler looking to skip the student debt crisis and become a self-taught developer who at least knows enough basic stuff in the area of your choosing to land a legit, well-paid job where you can get some decent hands-on experience to improve and learn even more; a seasoned professional developer with decades of experience who needs to come up to speed with the newest updates in your field, maybe even trying to pivot into experience in a different but related sector of the world of programming; or even an unemployed NEET with nothing in particular going for you except the gazillionaire guru's starter kit: good old internet connection, and a laptop, and a dream of having a successful career and a lasting impact on the technological world. None of the differences in situation should matter significantly when it comes to the actual, proven possibility of training yourself from scratch to success. 

Considering all that, I would like to ask this: if it's easy to accept that anyone can learn to code online, why is it not way easier to accept that AI tools, which are trained on huge swathes of data from all sorts of sources (some more conspicuous than others), and then actively modified by human responses and tweaking until they give answers that aren't so inaccurate that it would be dangerously misleading or publicly embarrassing for a company to release as a product—are obviously very, very capable of learning programming far more efficiently and easily than a human beginner, potentially even using much of the same widely available information as a training set? 

The immense knowledge accessible to AI, combined with its ability to rapidly process and comprehend information, should not be underestimated.

By disregarding AI's vast capacity for learning and problem-solving and inadvertently undermining AI's role as a valuable collaborator to the professional developer, it becomes way easier to skew the results of your own experiments with AI in a way that makes it easy for many to stay convinced that it will massively under-perform. 

But the complex nature of AI deserves further exploration and careful consideration in order to navigate the potential risks and maximize the benefits it can bring to us all.


----

What do you think? Say hi in the comments and share some thoughts! I'd love to have a further discussion about this.