I'm a CS professor and department chair at a primarily-undergraduate college with a lot of experience conducting searches and hiring. I can give you some perspective on teaching positions at traditional colleges; others might be able to talk about teaching for bootcamps or online programs.

Ordinarily, I would say that the job market is strong for good candidates interested in teaching CS (demand has been higher than supply for at least the last five years), but the pandemic has put almost all universities into hiring freezes, mine included. I would expect only a small number of searches next year, with more openings happening in 2021 or 2022. My program has at least one position that we need to fill but I'm not planning on a search until Fall 2021 at the earliest.

I'm assuming from how your question is written that you're not looking at a tenure-track assistant professor position. That leaves you with two main kinds of teaching jobs:

1. Adjunct positions, where you're paid a (low) fixed rate to teach a specific class. Adjuncting can be a way to get some classroom experience and decide if you like teaching, but it isn't a career, there's no stability, and it's basically impossible to earn a living wage.

2. Full-time salaried not-tenure track teaching positions. These are usually advertised (in the U.S.) as lecturers, and typically run on one to three year contracts. Some schools offer "security of employment" to established lecturers, which is like a tenure guarantee: you're ensured reappointment as long as the program is financially viable. Teaching loads can vary from one or two huge courses per semester at a large university to three or four small classes.

Most ads want minimum of a Master's degree in CS or a related field for their teaching faculty, which is partly due to meeting accreditation requirements. It's more difficult, but possible, for Bachelor's degree holders with significant industry experience to be appointed. The term "Professor of the Practice" is sometimes used for teaching faculty with an industry background.

Universities are typically looking to their teaching faculty to cover the core undergraduate classes, so the ability to teach across standard basic and intermediate courses is helpful: intro programming, data structures, web development, etc. Take a look at the curricula for the colleges you're interested in and see how your experience can fit with the classes they would need. Having experience in NLP/ML could make a difference---teaching faculty in those areas have been extremely rare recently---but any program would still want the ability to contribute to the standard undergrad curriculum.

Other things to think about:

- Salaries can range from not great to pretty okay, depending a lot on the school and location. You will almost certainly be giving up a lot of income compared to what you could make as an experienced NLP/ML engineer in industry.

- When applying, think about your teaching philosophy and how it connects to the mission and philosophy of the institution. Give concrete examples of things you have done in the classroom and what you've learned. This will set you apart.

- Analytics is also a growth area, so positioning yourself for those roles will open up more options. An interdisciplinary analytics program may also place higher value on candidates that have industry experience. Again, I wouldn't expect a lot of job postings in the next year, but there will be more options once university budgets stabilize.

- Last point: you have to pay attention to the financial viability of any school you're applying to. Everyone is going to get crunched next year, but institutions that were already vulnerable pre-COVID are going to be closing or drastically reconfiguring themselves in a desperate bid for survival. Medium term, the CS and analytics fields are going to continue to be in demand.