Let the machines do the routine and brute work, we think. Sounds like a reasonable argument. But machines are not capable of replacing humans in every aspect of work. In some cases (like fighting Covid19, it will be nice if machines can completely take over, but they can’t). They can do parts, but not the whole.
The trick is in figuring out the division of labor between the man and the machine. A consensus (for now) seems to be that certain tasks may be automated but and not jobs. We can start with that assumption.
This week I read two articles which talk about this topic.
Working smarter describes what machines are good at and where humans excel. The author recommends personal knowledge mastery as a way to stay ahead of machines using human capabilities like sharing, and network connections.
“There is not much more need for machine-like human work which is routine, standardized, or brute. But certain long-term skills can help us connect with our fellow humans in order to learn and innovate — curiosity, sense-making, cooperation, and novel thinking.”
In 2017, the researchers in DeepMind created AlphaZero, a single program that masters three distinct board games: chess, shogi and Go. To be fair, AlphaZero isn’t the first algorithm created that can beat human in a board game. However, it is the first model that can master three games at the same time, with the performance far better than professional human players as well as all algorithms existed at that time. As a matter of fact, AlphaZero is not only good at these games. People who have witnessed it played described that the deep reinforcement learning algorithm was “toying” with its opponents, “tricking” them, even making one of them (i.e., Stockfish) crashed during the game. This leads some of them to believe that AlphaZero is insightful, and it has actually “understood” the nature of chess, shogi and Go.
Slowly more and more products are incorporating elements of Machine Learning and AI. Product Managers need to understand what the technologies are about and their impact. These articles ease you gently into the role of a product manager and provide some great tips.
Even simple machine learning projects can be difficult, and managing these projects in a real business is much harder than most people realize; that’s why Venture Beat claims 87% of machine learning products never make it into production, and Harvard Business Review says that “The first wave of corporate AI is bound to fail.” Machine learning is not fairy dust you can sprinkle on your existing product.
In “The AI Hierarchy of Needs,” Monica Rogati argues that you can build an AI capability only after you’ve built a solid data infrastructure, including data collection, data storage, data pipelines, data preparation, and traditional analytics.
Start with a simple project, build your infrastructure, learn how to use your data effectively.
Assuming that the selected machine learning technique is suitable, the product manager will have to make several important decisions about the model.
A product manager must decide whether to refactor the research code, determine the scope of the ML model’s inference engine, decide on model format , ensure that the modeling technique can support the service level agreement of the AI system, and plan for deployment and maintenance.
The foundation of any data product consists of “solid data infrastructure, including data collection, data storage, data pipelines, data preparation, and traditional analytics.” A product manager for this phase prepares the way for putting products into production by building the infrastructure needed to support the design, development, and use of future products.
So what did I learn? Start a Machine Learning product without using ML! And manage expectations carefully (your own and others). But the most essential learning is that we should understand the technologies and their current state of development. Building ML products is a lot of work.
I first encountered the third article, read it, and followed two links and read the other two.
I also tried a small experiment and cheated a bit. I fed each one article to a text summarizer, reviewed these summaries and took portions of them to use as context.
The three quoted blocks above were written by a Machine Learing app!
Yesterday I tweeted about “learning to learn” and mentioned that AI would help us learn better. One of my students asked me to share some useful links. Here are a few starting points. I am going to use Education as a proxy for Learning even though they are not exactly the same.
Discovered an International Journal of Artificial Intelligence in Education. Lost of useful resources and they have conferences.
A search for “Artificial Intelligence in Education” got me a bunch of tweets. Here is a link. This is snapshot as of 16th May. If you are interested in these tweet streams, let me know. Will maintain a separate page for these tweets.
I like it when one of my students (current or past) asks me a question. It makes me research a bit more and helps me learn too. Thanks, Hemamalini. This is the first post to answer a small part of your question. There will be more!
If you are just starting out programming, you may want to learn a language, and start exploring by building small applications.
Don’t worry that you don’t know object-oriented analysis/modeling and design. You can learn them when you need them. This is true of algorithms, data structures, object-orientation, software engineering as well.
You can build simple apps with procedural programming and learn to reuse first using functions. As your apps grow in complexity, you appreciate the need for organizing these functions as classes/methods. (You may not even get there if you start out with a functional programming language).
As you deploy your apps and fix bugs, you will come to appreciate testing. If you need to update your app frequently, you will understand the need for automated testing.
As your apps get used more and more, you will understand the need for improving the app. You will learn the need to simplify the code (helping you fix problems faster), and the need for profiling to identify slow performing subsystems.
Learning to build computer application by step-wise refinement is a path to learning and improving. If you need to rework the code, you will learn to re-factor. Automated tests will improve your confidence in refactoring without breaking existing functionality.
Programming is a creative endeavor. It is enjoyable, because you are solving problems big and small. Puzzling over the parts that do not work, trying out things, learning from others, is all part of the experience.
Programming is a journey of self-discovery. The little bits of happiness during the journey add up.
Just finished reading this book. I was tweeting a few quotes as I was reading the book. Here is the full list.
Before you read the quotes, please remember the context Charlie was mostly answering questions about being an Investor.
Let us first look at these quotes.
There is no way you can live an adequate life without making many mistakes.
The best thing a human being can do is to help another human being know more. Being an effective teacher is a high calling.
Those of us who have been very fortunate have a duty to give back. Whether one gives a lot as one goes along as I do, or a little and then a lot (when one dies) as Warren does, is a matter of personal preference.
Spend each day trying to be a little wiser than you were when you woke up. Day by day, and at the end of the day-if you live long enough-like most people, you will get out of life what you deserve.
What are the secret of success? One word answer: rationality.
There’s only one way to the top: hard work. Do what you like and are good at.
Understanding both the power of compound interest and the difficulty of getting it is the heart and soul of understanding a lot of things.
Quickly eliminate the big universe of what not to do, followup with a fluent, multidisciplinary attach on what remains, then act decisively when, and only when, the right circumstances appear.
If you always tell people why, they’ll understand it better, they’ll consider it more important, and they’ll be more likely to comply.
…it never ceases to amaze me to see how much territory can be grasped if one merely masters and consistently uses all.
My habit of committing far more time to learning and thinking than to doing is no accident.
Some people are extraordinarily good at knowing the limits of their knowledge, because they have to be.
So the game is to keep learning, and I don’t think people are going to keep learning who don’t like the learning process. You need to like the learning process.
If you’re capable of understanding the world, you have a moral obligation to become rational.
For me there were many takeaways. There is a note of warning. Whoever edited this book did not do a good job. There are too many repetitions. Please remember it if you buy and read the book. Despite bad editing, the book is full of gems. So it is worth a read.
A few reflections.
The importance of reading. I do read though not anywhere near being “a book with a couple of legs sticking out.”.
When we were programming in early 70s, we spent far more time learning and thinking than doing. Now it is very different. There is a lot more doing. Charlie’s quote “This habit of committing far more time to learning and thinking than to doing” is right on.
Spend each day trying to be a little wiser than you were when you woke up. This can be a powerful micro-habit and a daily goal to shoot for.
This is the fifth edition of a book I started writing in 1999, when I was teaching at Colby College. I had taught an introductory computer science class using the Java programming language, but I had not found a textbook I was happy with. For one thing, they were all too big! There was no way my students would read 800 pages of dense, technical material, even if I wanted them to. And I didn’t want them to. Most of the material was too specific—details about Java and its libraries that would be obsolete by the end of the semester, and that obscured the material I really wanted to get to.
The other problem I found was that the introduction to object-oriented programming was too abrupt. Many students who were otherwise doing well just hit a wall when we got to objects, whether we did it at the beginning, middle or end.
So I started writing. I wrote a chapter a day for 13 days, and on the 14th day I edited. Then I sent it to be photocopied and bound. When I handed it out on the first day of class, I told the students that they would be expected to read one chapter a week. In other words, they would read it seven times slower than I wrote it.
The philosophy behind it
Here are some of the ideas that make the book the way it is:
Vocabulary is important. Students need to be able to talk about programs and understand what I am saying. I try to introduce the minimum number of terms, to define them carefully when they are first used, and to organize them in glossaries at the end of each chapter. In my class, I include vocabulary questions on quizzes and exams, and require students to use appropriate terms in short-answer responses.
To write a program, students have to understand the algorithm, know the programming language, and they have to be able to debug. I think too many books neglect debugging. This book includes an appendix on debugging and an appendix on program development (which can help avoid debugging). I recommend that students read this material early and come back to it often.
Some concepts take time to sink in. Some of the more difficult ideas in the book, like recursion, appear several times. By coming back to these ideas, I am trying to give students a chance to review and reinforce or, if they missed it the first time, a chance to catch up.
I try to use the minimum amount of Java to get the maximum amount of programming power. The purpose of this book is to teach programming and some introductory ideas from computer science, not Java. I left out some language features, like the switch statement, that are unnecessary, and avoided most of the libraries, especially the ones like the AWT that have been changing quickly or are likely to be replaced.
The minimalism of my approach has some advantages. Each chapter is about ten pages, not including the exercises. In my classes I ask students to read each chapter before we discuss it, and I have found that they will do that and their comprehension is good. Their preparation makes class time available for a discussion of the more abstract material, in-class exercises, and additional topics that aren’t in the book.
But minimalism has some disadvantages. There is not much here that is intrinsically fun. Most of my examples demonstrate the most basic use of a language feature, and many of the exercises involve string manipulation and mathematical ideas. I think some of them are fun, but many of the things that excite students about computer science, like graphics, sound and network applications, are given short shrift.
The problem is that many of the more exciting features involve lots of details and not much concept. Pedagogically, that means a lot of effort for not much payoff. So there is a tradeoff between the material that students enjoy and the material that is most intellectually rich. I leave it to individual teachers to find the balance that is best for their classes. To help, the book includes appendices that cover graphics, keyboard input and file input.
One of my students wanted a suggestion for a Java book. I Googled and found some. When I saw this book, I thought it may be a good one to start with. I like Allen’s books. There are three reasons I like Allen’s books.
The chapters are small and easy to read. For a beginning programmer, they are not very intimidating.
Allen’s Python book had a creative common’s license, and I noticed that a few authors have taken his material and reused parts of it and came up with new books.
The most important reason is this philosophy behind the book (and also why I copied the entire section in this post).
From a few experiments I have conducted so far, I found that the first challenge in teaching computer programming to students is to make it interesting. Once students are interested and feel confident, they can create simple programs with reasonable effort, they tend to explore more. Many programming books, however start out with too much detail. If you can teach the basic concepts in a few sessions and get them to code, you have won half the battle.
How do you bootstrap a culture of Innovation and Entrepreneurship in your college?
Start an Innovation and Entrepreneurship development activity. Find a few mentors from the industry. Involve your nearest TiE/NASSCOM/NEN/CII chapters. Have each mentor adopt a few projects. They can teach students how to generate ideas, build demonstrable prototypes, find initial users and validate ideas. Pick simple ideas that benefit people or industry. Encourage projects with an element of social innovation.
Adopt The Lean Startup method. The concept of a lean startup is to build early prototypes and validate product/service ideas. There is a great free course on Udacity on building The Lean Startup.
Create a set of student startups (have a goal of doing 10-20 startups in every batch). Associate a faculty member and an industry expert with each group. Create a plan for brainstorming ideas, building prototypes to test the feasibility.
Develop student skills on user centric design, communicating with potential customers, validating ideas. They can start in the Second Year of college.
Give course credit to innovation and entrepreneurship activity. Kerala government is doing this, and it is a great idea to adopt it in your institution.
Focus on finding at least 5-10 customers/users for each startup, in the first year of entrepreneurship. Every following year, try to raise that number by a factor of 10.
Allow for failures. Don’t discourage them. Make students blog about their experiments, what worked and what did not. This will be useful for students. Have open sessions to discuss these experiments.
By creating a practical program for student entrepreneurship and getting faculty involved, you will change the culture of your institution. You are sending a message that practice is as important as theory.