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.
the concept of “the umwelt” coined by biologist Jakob von Uexküll in 1909 — the idea that different animals in the same ecosystem pick up on different elements of their environment and thus live in different micro-realities based on the subset of the world they’re able to detect. Eagleman stresses the importance of recognizing our own umwelt — our unawareness of the limits of our awareness:
I can see this in different ecosystems I observe – the entrepreneur ecosystem, the learning ecosystem and the microcosm of our own product teams and businesses.
In the startup ecosystem, different players – startups, investors, mentors and customers have different micro-realities about products, businesses, and markets. While they overlap somewhat, sometimes they are very different.
In the learning ecosystem similar micro-realities exist between institutions, teachers, students and learning experts.
But the best example, I have seen of these different micro-realities is in a product team or a business.
“What are you doing?”, my wife asked. Most of the time I grunt something. I think of this question as more of a greeting than a question. This time, however, I said enthusiastically “I am reading about the Wiki Wiki Web”. This cracked up the entire family (two kids included). Wiki Wiki means quick in Hawaiian. This was in the early 90s before the days of Wikipedia. I was browsing through c2 wiki.
Wikis became mainstream when Wikipedia became popular and now my family does not laugh at me anymore.
There are times you have a hunch about certain trends. I felt strongly about – Databases in the 80s, Wikis and application components in 90s, XML, Python in early 2000 and now ML and Chatbots. This resulted in my working on an SQL database engine in the mid-80s, database components in 90s, an XML chip in the 2000s and on Python since 2006. Now, it is ML and chatbots and Natural Language Processing.
Not every thing I was excited about became mainstream. RDF and Semantic Web, OLE from Microsoft, Domain Specific Languages and Pattern Oriented Languages did not go very far.
Over a period, I have built a few thumb rules about paying attention to early signals in emerging technologies.
What is the research behind the technology and how long has it been going on? For example, neural networks and ML are several decades old. AI has gone through several difficulties.
What is the volume and velocity of research papers?
Is government funding research in this space? (Internet, Page Rank algorithm, self driving cars and many others started as funded Government research).
Who are the major companies involved in the early adoption of these technologies? For XML it was Microsoft, Sun Microsystems, and several others.
What are pilot projects being done for commercialization and who is working on those?
Who is hiring in this space?
Which business publications are covering topics about this space?
What companies are getting funded? Funding is both a leading and lagging indicator depending on who is funding and why they are doing it.
How is the information about this space being propagated? Who is propagating it?
What are the conversations going on in Twitter?
Are there books on the subject? Books are most of the time lagging indicators.
Are these technology topics being covered in conferences?
Some of these indicators are easy to find. You need to look for others.
Some of the best bloggers I know work hard at writing their posts and sometimes I feel like I am cheating. But these posts are worth sharing and if I am lucky, some of them may even start conversations.
The half-life of knowledge or half-life of facts is the amount of time that has to elapse before half of the knowledge or facts in a particular area is superseded or shown to be untrue. These coined terms belong to the field of quantitative analysis of science known as scientometrics.
Here are a few things to think about:
What is the half-life of entrepreneur knowledge? Can we take lessons from the past and use them today?
What is the half-life of knowledge about software architecture and design?
What is the half-life of knowledge about sales and marketing techniques?
Some of the knowledge may have a shorter half-life, some of it may not be. To stay relevant in your industry you need to figure out how much of your knowledge is still useful.