Can You Protect Your Tech Job Against AI? | Dice.com Career Advice

This post was originally published on this site.

Let’s be honest: Developers are nervous. They’re worried that AI, particularly chatbots that can write code, will soon make their jobs redundant. Young people interested in software development are wondering whether they should go into the field. Older developers are worried they’ll be phased out and replaced by automation.

But let’s all take a collective sigh and pause for a moment. New technologies have terrified people for decades. When the automotive industry started introducing robots into their production lines, workers thought the robots would replace their jobs; when offices introduced personal computers, people thought we wouldn’t need office workers anymore; and even back in the industrial revolution, people thought new steam- and coal-powered machines would replace skilled artisans.

But in all cases, technology ended up assisting humans in their work. The key is that humans need to adjust to the new tech. Workers in the auto industry, for example, had to learn to control and manage the robots and work alongside them. In the office, people had to learn how to use word processors and spreadsheets.

That’s where we are with AI in software development. As developers, we need to embrace the technology, learn what we can about it, and figure out how to make it a part of our careers.

And let’s be realistic: If we don’t embrace it, we very well may end up with sizable job destruction. But how is that any different from the way it’s always been in software development? In the 1980s and 90s, COBOL programmers had to learn newer languages like C++ or they risked unemployment. A decade ago, front-end developers proficient in jQuery had to start learning React and Angular. This truly is nothing new. As long as we want to stay in software development, we need to stay on top of technology.

So let’s look at how we can embrace AI and keep plowing forward as software developers.

First: Learn AI!

As software developers, there are two primary aspects to AI integration:

  • Using AI as an assistant to help us write code.
  • Adding AI features into our applications.

Let’s talk about how you can learn both.

Using AI as a Coding Assistant

Right now, the tech ecosystem is filling rapidly with AI tools that will supposedly help you code faster than ever before. While it’s impossible to tell which of these tools will win out and dominate the market, we can spy a few feature commonalities among the offerings:

  • Coding suggestions inside IDEs
  • Chatbots that can answer questions
  • AI-automated debuggers
  • Test generators
  • Documentation generators

Before going into detail about these, bear in mind that one of the touted “features” of such tools is “faster development time.” But we’re doing ourselves a huge disservice if we limit ourselves to just the idea of getting work done faster. Instead, treat these tools as 24/7 assistants, always there for you—but still in need of expert guidance.

With the right AI models, these tools hold a wealth of information and can help you produce code not just faster, but code that is correct, optimal, scalable, and robust. For example, if you’re working on a new feature for a product, you can provide an AI chatbot with a list of use cases and ask the bot if it can think of any additional use cases you’re missing; the tool might provide some unit test cases you didn’t think of. In a sense, it’s almost like doing paired programming with a robot who has a huge amount of experience and knowledge to share with you.

Breaking Down AI Coding Feature Sets

For coding suggestions inside IDEs, you have several options, but right now the most popular one is GitHub Copilot. This tool provides an extreme form of autocomplete. It reads your existing code and your comments, parses function names, and provides complete code suggestions—not just variable name suggestions, but multiple (even dozens) of lines of code. It’s not always correct, but it can be a huge productivity boost.

You need to carefully review every line of code it creates, because it’s not always right. But after reviewing and possibly tweaking it, you’ll likely end up with good, solid code that you created at a fraction of the time, and the code may be better than what you would have come up with alone.

Copilot isn’t free, but at the time of this writing it’s only $10 per month and well worth it. (Remember, not only will it help you with your code, but your peers and competitors are using it for sure. If you’re still on the fence, keep that in mind.)

Another great tool is Amazon Q. Developers who have worked with both Copilot and Q often favor the latter, but it hasn’t quite built up the popularity that Copilot has. Try them both and see which you like better.

Chatbots

Next, we have chatbots, including good old ChatGPT. While a lot of people are still leery of such tools, they can answer almost any software development question you throw at them. For example, suppose you’re in the planning stages of a project, and you haven’t decided whether to use a SQL or NoSQL database. Log into ChatGPT, upgrade your plan so you have access to the best models, and ask away. It’s okay if you type multiple paragraphs; describe your plan in as much detail as possible, and then ask the question: “I’m trying to decide between MySQL and MongoDB. What are the pros and cons of each, relating to my particular project?”

No matter how skilled you are in both technologies, there’s a good chance it will present some ideas you had not considered. (And I’ll say it again: Your peers and competitors are already using chatbots to help them make informed decisions.)

AI Debuggers

Next are AI debuggers. These are still in their early phase. One way to help with debugging is to simply copy and paste parts of your code into ChatGPT and ask what problems it can find with the code. Again, as long as you’re using the latest models, it’s definitely up to the task.

But there are more sophisticated tools arriving regularly. Amazon CodeGuru is a tool that provides both code reviews and code profiling, and it’s shockingly good at both functions. (At the time of this writing it only supports Java and Python code.) It also integrates with several code repository sites, including GitHub and BitBucket.

Test Generators

Then we have test generators. As usual, ChatGPT is great at offering unit test suggestions. However, it’s imperative that you go about this correctly. Don’t just paste your code into ChatGPT and ask for unit tests. Why? Because without any additional information to go on, including detailed comments, ChatGPT will start by assuming your code is correct. And it will from there generate a series of unit tests that your code will pass. And that’s kind of pointless.

Instead, describe the function’s intended purpose in as much detail as possible, including parameters, return types, and details on expected results. Then, in the spirit of true test-driven development, before we write a line of code, ask ChatGPT for a list of test cases. If you’re using the best models (again, plan to pay a small monthly fee), you’ll probably get the right test cases you need.

What about other test generators? This area is still brand new. At this point we’re not recommending any additional ones, as we haven’t had a chance to review them. But ask ChatGPT and Google both about AI-powered test generators, and see if any of the early ones appeal to you.

Documentation Generators

And finally we’re up to documentation generators. (For tech writers reading this, fear not: We’re a long way from documentation generators producing copy as good as what a great writer produces.) Documentation generators can analyze your code and, in theory, generate documentation from it. Like other AI tools, they’re far from perfect. But for a great rundown, check out our piece here.

AI is here to assist you and help you write better code. And if you’re up for a challenge, you can take your code to the next level by adding AI features inside it.

Adding AI Features to Your Apps

Because of the mass influx of AI across the industry, right now there’s a public perception that any piece of software worth a dime must have AI capabilities built into it, usually in the form of a chatbot. Software developers know that’s not particularly realistic. For example, how badly does a calculator app need an AI chatbot? We could certainly think of examples where it might be helpful, but in general, it’s not really required.

This obsession will settle down soon. The appeal will shift, and users will figure out when AI really is helpful and important.

While it’s helpful to learn how to integrate a chatbot into whatever app we’re building as a sales feature, let’s also focus on how we can truly integrate important and useful aspects of AI into our applications. That means learning about the different branches of AI and where they fit into our software development.

For example, if we’re building an app for the medical field, AI image recognition can be important. Dentistry is a great example. Dentists can only see so much with their eyes, but with macro-level cameras combined with AI-powered imaging tools, they could potentially detect problems with a patient’s mouth long before they’re visible to the naked eye.

Another great example is in the financial space and fraud detection. Today’s fraud detection tools are light years ahead of the older ones that used basic statistical analysis to detect a card charge that’s suspicious. Today AI can notice patterns the earlier tools couldn’t, and can find a fraudulent charge that might otherwise have gone undetected.

This means learning about the different areas of AI. The list is long, but here’s a starting point for you:

Machine Learning and Deep Learning: This fits in with the fraud detection I already mentioned, as well as online shopping suggestions, and more.

Computer Vision: We already mentioned the medical uses; other areas where this is important are security surveillance and autonomous vehicles.

Generative AI: This is the name of chatbots such as ChatGPT. Given a prompt, they generate text that sounds like it was produced by a human. This, of course, is a huge topic, and extends far beyond simply adding a chatbot to your app. A great example here is building a corporate knowledge base that users can interact with as comfortably as they would a chatbot.

Natural Language Processing (NLP): This is a broad area that includes chatbots. There are many examples, such as the legal industry; law teams often need to dig through hundreds or thousands of legal documents just for a single case. NLP tools can be a huge help here, effectively “reading” the documents, and providing summaries, and even generating conclusions.

Speech Recognition: This refers to both recognizing human speech in different languages and even generating speech. Apple’s Siri is a great example here. While integrating with other forms of AI after speech has been processed, the first step is recognizing the speech itself. While speech recognition has been around for some time, long before the current AI boom, the tools have improved significantly with the help of modern AI. For example, every human talks just a little bit differently. And some people have difficulty speaking due to various health conditions. Today’s AI is excellent at processing and understanding all forms of human speech.

Conclusion

One area we didn’t mention here is AI research and development itself. This is an exploding field, certain to keep people employed for many years to come, but it’s not for the faint of heart. AI research requires advanced knowledge (and generally advanced degrees) with solid foundations in advanced mathematics, computer science, machine learning and more.

In any case, we’re a long way from having AI “take our jobs.” But like any new technology, it’s vital that we embrace and move forward with it.