I have written about programming careers, the virtue of hard work, and other similar stuff in the past few weeks. This week I wanted to write something different. Something more inspiring and less practical. While scratching my head about what to write, I remembered a Quora thread I had read a long time back about weekly wisdom Professor John Ousterhoust gave to his students at Stanford. Professor Ousterhoust's classes are weekly wisdom are much sought after among Stanford's CS students. I'll summarize his weekly wisdom and link some of the points he makes, to software development and similar stuff others have said, but be sure to also read the thread to get his raw transcribed words.
What I mean is that how fast you learn is a lot more important than how much you know to begin with. So in general I say that people emphasize too much how much they know and not how fast they're learning. -- Prof Ousterhoust
Let me give you an example. People who are afraid will do things that they know are wrong. For example, when people cheat on assignments, in most cases, it's when people are up late the night before an assignment is due and they get desperate and afraid and made a silly decision to steal somebody else's work. In industry, CEO's are afraid to announce that their company had a bad quarter, so they allow their salespeople to report sales from the next quarter. Then in the next quarter, they have to cheat even more and eventually it all comes tumbling down. -- Prof Ousterhoust
Programmers tend to worry too much and too soon about performance. Many college-level Computer Science classes focus on fancy algorithms to improve performance, but in real life performance rarely matters. Most real-world programs run plenty fast enough on today's machines without any particular attention to performance. The real challenges are getting programs completed quickly, ensuring their quality, and managing the complexity of large applications. Thus the primary design criterion for software should be simplicity, not speed. -- Prof Ousterhoust
Intuition is a wonderful thing. Once you have acquired knowledge and experience in an area, you start getting gut-level feelings about the right way to handle certain situations or problems, and these intuitions can save large amounts of time and effort. However, it's easy to become overconfident and assume that your intuition is infallible, and this can lead to mistakes. So, I try to treat intuition as a hypothesis to be verified, not an edict to be followed blindly. -- Prof Ousterhoust
This has implications both for teaching and for working in unfamiliar areas. In teaching it's crucial to give lots of examples when introducing a new concept; otherwise the concept won't make sense to the students. Edward Tufte describes this process as "general-specific-general": start by explaining the concept, then give several specific examples to show where the concept does and does not apply, then reiterate the concept by showing how all the examples are related. -- Prof Ousterhoust
Nine times out of ten this approach doesn't really fix the problem; it just submerges it (for example, the system timing might have changed so that the problem doesn't happen as frequently). In a few weeks or months the problem will reappear. -- Prof Ousterhoust
Many people worry that not knowing something is a sign of weakness, and that if a leader seems not to have all the answers they will lose the confidence of their team. .......However, this approach ultimately backfires. Sooner or later people learn the truth.......On the other hand, if you admit that you don't know the answer, or that you made a mistake, you build credibility. People are more likely to trust you when you say that you do have the answer, because they have seen that you don't make things up. -- Prof Ousterhoust