Wesley McGhee |
3/20/24

AI is Here to Help Your Job, Not Steal It

3/20/24

AI is Here to Help Your Job, Not Steal It

Wesley McGhee |
AI is Here to Help Your Job, Not Steal It

So I started writing this article around March 8th, I did some work on it, got about halfway done, and then went to start the work week.  Tuesday, a lot of people started talking about Devin, now who is Devin?  Devin is an AI that just came out from Cognitive. What does Devin do, well it’s an AI that is designed to replace software engineers, as a software engineer. I do look at that statement with fear.  After diving into Devin, and knowing what its capabilities are, this article is a bit of a lie.  Devin has completed some jobs on Upwork.  What I am going to get into is why this shouldn’t be scary, and why Devin is going to be a great tool for devs, and increase productivity.

To start we should probably go into how an AI works, more specifically a Generative AI.  For this example, we are going to look at ChatGPT.  ChatGPT is an app that uses a Large Language Model (LLM), in this case GPT3.5, to have an interactive conversation with an AI.  The key thing to take out of that sentence is LLM, what is an LLM?  Well an LLM is an AI that specializes in sentences, it’s been trained to guess the next word in a sentence.  So as humans, we can do this if I give you an incomplete sentence, (The quick brown)  you may guess that the last word is fox, and you may go as far as to say “Fox jumps over the lazy dog”. GPT3.5 would guess the same, if you want to test it go to ChatGPT, and type in “The quick brown” and it will output that. 

What makes things like ChatGPT so amazing, is that these LLMs are trained off unlabeled data.  That means I can feed it a sentence, and it will start to find patterns in the sentence without having to label the sentence like this sentence is about foxes, or This sentence is about code.  That makes the training process much easier and also makes it more in-depth.  One key thing that we can pull from this process is how humans learn their first language. Which is pretty similar, we take in a bunch of data from text or speech, and then start to make generalizations on what these words mean. Then we start making sentences ourselves.  Here’s the difference between humans and AI though.  AI can’t think of something new, it can only think about what it’s been trained from.  This is the major downside of AI, as there is no innovation from AI, only stuff we’ve known.  Don’t get me wrong it does it well when it doesn’t hallucinate, but when paired with a human, AI can become a really powerful tool!

Now what we all came here for Devin, this AI is sending shivers down many developers' spines.  Here’s how Devin works, it uses an LLM as well, but it’s put into a loop, and given more tools to work with.  It has a browser, a terminal, a code editor, and a few other tools at its disposal.  Where it takes the output of those tools that are generally used by developers, and feeds that into the same LLM to output the code again until it has an app that functions, and it up to the prompts requirements.  This sounds like it’s the final nail in the coffin for developers.  Unfortunately or fortunately for our team, it’s a bad software developer.  Sorry, Devin right now you wouldn’t get hired at most companies.  Devin is a big step forward for AI though, right now it completes around 13.86% of GitHub issues, in the AI world that’s huge! It’s almost triple of second place, and that number will only rise. With that number though, it can’t complete almost 86% of issues.  So although Devin is probably one of the best coding AIs out there, it’s not stealing our jobs any time soon.  I think another thing that we have to consider is that this benchmark is called the SWE Benchmark.  There is a chance that this AI has been optimized for the SWE Benchmark, and gamed the system to get the 13.86%, I don’t think that this diminishes the achievements that Cognitive has made with Devin, but I do think it’s worth considering in the argument that Devin is going to steal our jobs. 

Anyway, let’s get down to how we can use tools like Devin to help us in our careers as developers.  Our team works on a wide variety of projects, in a wide variety of roles.  We have Product Managers, Designers, and Developers, and we all work in harmony to accomplish our mission.  With such a wide base of the tech industry, I started by reaching out to these incredibly talented people and asking how they use AI.  I know how I would use AI, in a developer sense, but I think we should look at how these other roles use it first.  

Product managers and designers came up with very similar answers.  They said that they use it to help them start emails and conversations. If they need to make a write-up about a design or feature, they go to ChatGPT to figure out how to start. Then they take it from there, this is the start to the AI productivity flowchart.  Getting you started, humans are bad at thinking of what to start with, we get writer's block, or something similar depending on what you are doing.  AI doesn’t suffer from that, it can look at its mass amount of data and see how it would start this message.  Now you're rolling, you went from knowing how to start a sentence to on your way to finishing that report.  This can be used for students who are writing papers.  Now this needs human supervision and fact-checking.  There was an incident where a lawyer used AI in a court case, and it massively hallucinated laws, and ended up getting the lawyers fined, and fired.  So with some human supervision, we can get rid of writer's block.  One thing that you can do also is when you get stuck or don’t know where you want your paper, or story to go.  Give it a basic rundown on what you have so far, then ask for ideas on how you should continue. They’re are ways to make it so your prompt gives some better information, and Prompt Engineering is something you should look into.

Now I think that we should get into how developers use AI to increase productivity.  No more putting this off, let's get into it.  The first way is being a rubber duck.  Sometimes when you are writing code you just need to explain it to something to get your answer.  Now imagine a rubber duck to something that can respond a little bit, and maybe set you on the right path, or just give you the answer.  This is AI, sometimes this power is amazing, and some developers on our team swear by it. Other Times it just doesn't have a clue and will tell you nonsense, or give you indirect answers that don’t give you any helpful information, but it’s better than that rubber duck on your desk that does nothing, well sometimes.  The last thing I want to touch on this little life hack is if it gives you a code output for an answer that you don’t understand.  You can quickly ask it questions about the code it generated.  What each function or method does, how it works, and it will tell you.  Then you gain a better understanding of not only how it works, but why it works.  It’s also still good to go and read the docs, and also get code reviewed, after all this might not be best practice and could be inefficient code.  That’s just the human touch we still need in software.  

Using AI as a learning tool, now if you are learning a new language, or technology AI can be extremely helpful.  I am going to take an example of learning Rust with the Rust book. You are in the ownership section, you have no idea how memory allocation works to begin with.  You will be in a whirlwind for the first week or so trying to understand this concept.  So you are reading this section over and over again, and something just isn’t clicking.  How can you use AI to help? Let’s just start by breaking this down a bit, what’s ownership in Rust? One thing that I’ve heard from our team is that using “Explain to me like I’m five ~” helps a lot with learning new concepts.  Sometimes it just gives weird examples and plays off the you are 5 bit, but it helps a lot for complex topics.  From here it’s best to allow yourself to go down rabbit holes with the AI and the docs.  Asking the AI for code examples is helpful too, personally, it helps with concreting the information.  Lastly, you can ask ChatGPT to give you some assignments that help let you write the code for yourself.  Then you get hands-on experience with learning how a feature, or concept works.  You can also feed your answer into ChatGPT again, and then it will tell you about ways to improve.  

The last thing I will get into is the most important feature for increasing productivity.  This is the auto-complete feature, using something like Github Copilot, our team has said that it’s like very smart intellisense.  You can get boilerplate code in an instance, as well as write some annoying SQL code. It’s great, but also really bad at times.  This is why you need to look at what it implements, and maybe fix it a bit.  Being able to generate this code, and fix it some, can increase your productivity a lot.  There is no more trying to write out this boilerplate code that takes a few minutes, so now you just hit tab, and the code is written and you save that time.  As you’ve seen me state this needs human supervision, just like self-driving cars.  We are writing code that affects people, our team works with companies that help millions of people.  Those people have data, and jobs that are reliant on our code sometimes.  If we implement bad code because we blindly trust in AI, and that causes a data breach, or production being down, that’s on us, not on AI.  This is mainly why AI won’t replace devs, it will only make developers stronger.

So here we learned how AI is not going to steal our jobs it’s going to help secure our jobs.  We at the end of the day use programming languages like tools, same thing with AI it’s just a tool that we can use to accomplish a task.  We need to understand the downsides of AI, just like we understand the downsides of certain programming languages and services.  I think that not adopting AI in your workflow now is probably fine, but in the next five years, it’s going to put you at a disadvantage.  You are going to be able to write more code quickly, solve problems faster, and learn new things better.  You just have to think of it like your second, more inferior, but better memory mind.  If you coarse it the right way, it will give you the information that you need. Just like any tool, the more you use it the better you will become with it.