1. The right attitude makes hard stuff easier.
2. You get to choose your attitude and I’ll show you few habits to help.
3. If you are a successful application developer, you have the skills to integrate AI into your software.
1. Think of 3 use cases for AI in your domain.
Gaining proficiency in any new technology requires a bit of tenacity. So before we dig into the details of integrating AI into your software, let’s take a moment to get into the right headspace. After all, this is something very different, powerful, and shrouded in hype.
For most application developers it’s tempting to jump right in and start writing code. I’ve done that many times and, after a few hours or days of great fun, I’ve found myself confused and stuck. For many of us, using AI in our software is a very different technique with new rules. I think it is important to start this learning with the right mindset. Being prepared and having tools at hand will make it much easier to work through difficulties. If you are about to stop reading to go write some code, please bookmark this article and come back if you hit a wall and get stuck with your AI project.
When we start working with AI, it is important to reinforce the right attitude because the rules of the game are different. The way we evaluate and test traditional, imperative software is different than the way we ensure the accuracy and reliability of AI functionality. Because the types of problems we hit are not what we’re used to, some of your long-trusted techniques and concepts might not hold up.
For example, it is probably second nature for you to take a use case and decide on your software strategy. But with AI, there are usually several approaches that could meet a specific use case. The best strategy will depend on factors such as:
data availability and quality,
complexity of building and training the model,
the runtime performance of the model, and
the ease and cost of tuning the model once it’s in production.
Sometimes very innovative strategies achieve the best results. Some developers have achieved great results using AI techniques with visualizations of data instead of using the raw, numerical data.
In my experience, I’ve had to think about hardware specs, cloud usage costs, data characteristics, and managing very large quantities of data much more than I ever have in the past. I’ll describe all these new concerns and offer suggestions in future articles.
Adjusting your mental model, habits, techniques will help you learn to “thinking in AI”. Let’s look at what can make the learning process easier.
As I described in part 1 of this series, using AI definitely does not have to be as complicated as it is often presented. At the same time, it is a conceptual shift for many developers. It’s important to approach you journey into AI with the right attitude -- Let’s say patient enthusiasm.
I keep a print out of JB’s Rules for Success nearby to maintain perspective:
The first and last rules, in particular, are great guide posts for starting to learn to integrate AI into your software work.
These “rules” were shared in a Reddit post by former Apple employee, Huxley Dunsany. He explains that the card was given to him by his supervisor, John Brandon. Huxley describes John Brandon and the atmosphere he created:
He was a great guy in my interactions with him, despite his lofty position relative to my total-noob status back then. He really seemed to live by these rules and made the whole organization feel like something really special.
The Four Stages Of Competence
The Four Stages of Competence Model is used in psychology to chart the states of progress in acquiring a new skill. It can serve as a roadmap for your journey to AI superpowers.
I use it to clarify my expectations as I move through any challenging learning process.
Also, it seems significant that the four stages of this model correspond to the four stages of the Gartner Hype Cycle:
This correlation tells us that this cycle is completely natural. Also, AI is so different and so powerful that the enthusiasm is justified. But it might take some time and some frustration to work out where it fits and how best to apply it.
Unconscious Incompetence – We Don’t Know What We Don’t Know
When we first start working with a new technology, we usually experience the excitement of learning about something new, maybe having a gut feel for its potential, but we don’t yet know what we don’t know. For example, a new developer might see the power of using the file system, “if I could save some data to a file, I could reuse it for all kinds of cool features”. Then, as we try it out, we often hit roadblocks. Things aren’t as easy as we hoped, and we begin to confront the tedious details of using any technology. And then, we start to understand that there’s a lot we don’t yet know.
Conscious Incompetence – We Know What We Don’t Know
Continuing with the example of writing to a file, we have many questions:
“Is csv the right thing?”
“Why do I keep getting file not found errors because the path looks good to me?”
“Should I write all my data at once or in small chunks?”
The list goes on and on. This stage can be stressful because we haven’t yet acquired competence, we struggle with a lot of small mistakes, and our confidence might waiver. This stage is first cousins with the Trough of Disillusionment of the Hype Cycle
And, the more powerful the technology, the more daunting this stage can be.
Know When To Pump The Breaks
I hope I’m not the only one who has wasted hours in a spiral of stuck thinking while wrestling with a problem. Do you know what I’m talking about? Your mind is insisting, “I’m so close, just try to one more thing and it will work,” as hours of frustration and the lines of useless code pile up.
When you notice that you’ve got so many questions in your head that you don’t know what to do next, it’s time to pump the breaks. Step away from the keyboard and reflect on what you’re doing. I’d suggest getting out pen and paper and writing down
What are the questions or problems that have you stuck?
What have you learned so far?
What’s the next thing you need to figure out?
This kind of perspective taking can be a valuable tool to clear your head, reduce frustration, and learn most effectively. I’ve found it can be very encouraging to get out of the mindset of confusion and to see everything I’ve learned so far. This also helps to reinforce what you’ve learned. Do this for a week and take a look at your notes to see everything you’ve learned. A lot of clarity and confidence can come from this exercise.
Conscious Competence - We’re Good At It, With Effort
With patience, a little tenacity, and probably support from online resources, we eventually figure it out. This new technology is now part of our developer toolset, but it requires effort and focus to use effectively. A key characteristic of this stage is we can use the technology, but we aren’t yet comfortable enough to design solutions with it. We don’t yet have an intuitive feel for how it fits in a application’s workflow. This is the time to use the technology as much as possible. With AI, I’ve found it incredibly helpful to write a lot of small toy applications. For example, when I was learning how to design neural networks, I wrote
a few small computer vision applications
to identify objects and
classify cars by make and model as well as
a couple text applications
to classify emails as positive or negative and
to find the main subject of paragraphs.
Creating small applications on your own and applying the technology in different ways helps you understand it in all its aspects.
Unconscious Competence – It’s Second Nature
Finally, as we use this new tool, our experience deepens, we become fluent with the technology, and we see better ways to integrate this functionality into a software system to build software that users love. For example, we learn to stop hard-coding file system paths, understand the value of using proper exception handling, work through synchronized access to a file that is shared across processes, and log what’s happening so that a support engineer can troubleshoot.
Most of us no longer need to think about how to write to a file or database, but you once did. Now, we barely remember those early struggles and confusion. So, how can you reach that point with AI? How can you get comfortable with it so that you can start using it and not dedicate the next six months to learning linear algebra, calculus, and neural network design?
Over the coming weeks, I will be publishing articles on specific use cases and best practices to help application developers start using AI. Some of the topics will be how to use AI to automate the curation of a custom dataset, how to integrate an AI model into a web application, and continuously improve your AI function by letting it learn from its mistakes.
I hope this article has made you feel confident about integrating AI into your application. The most important thing to remember is, you get to choose your attitude. When you hit frustration, it’s important to remember that this is a sign that you’re learning a lot.
This is the perfect time to start applying AI. The technology and tooling are now mature enough to be adopted by application developers. And the current economic climate is the perfect time to look for new opportunities.
This Is A Time Of Opportunity
The current social and economic uncertainty caused by the COVID-19 pandemic is an example of change and uncertainty we can’t miss and we can’t ignore. The world-famous investor Warren Buffet has always advised people that an economic downturn is an opportunity. So, can we see the challenges of learning AI as a unique opportunity to grow our skillset and advance our career? And is the current economic situation an opportunity to advance software to a new plateau with the power of AI?
As a company the powers of AI can help your product solve your customers pain points. And as an individual, the ability to add AI to your applications can advance your career to the next level. Contact Advances in AI to learn more about what’s possible.
At Advances in AI, we strive to make AI functionality intuitive and fun. If you can imagine how easy it is to write to a file or send an API request to a web server, then know that we make the power of AI equally as simple.