Showing posts with label learning. Show all posts
Showing posts with label learning. Show all posts

2012-09-04

Learning

"10. Get into a rut early: Do the same processes the same way. Accumulate idioms. Standardize. The only difference (!) between Shakespeare and you was the size of his idiom list - not the size of his vocabulary. " -Alan Perlis


Thinking about how you spend your time is worthwhile. As a legitimation for this document, this is the first rule. Just like Paracelsus said, though, "The dose makes the poison". Spend too much time just planning how to become efficient, and there will not be enough time left to really be efficient.

Stay open


To expand your knowledge and understanding, you need to do three things. If you do not even know of a solution, you cannot learn how to use it. Therefore, it is important to snoop around and widen your horizon. Stay informed. The most effective way to do this I know of is reading domain journals like c't. Journals have lots of staff, who do nothing else than look around for new products, methods and technologies, and filter the interesting ones for easy consumption. Of course formal training like visiting a university, can be very helpful here, too. There you are fed preselected information to give you an overview. Conferences are another good way to learn about new developments. As are twitter feeds of eminent people in the field. The limiting resource here as everywhere is time. Getting informed and snooping around can usually be done as a spare time activity, but will take more then half a day per week.

There may be some solution that is so far out that nobody else in the world before tried to apply it to your problem, like it was the case at some time with Markov models, or the application of genetics to programming in genetic algorithms. To be able to discover something like that, you have to think laterally and also have interests different from your problem field.

Learn from masters


Any first idea you get on how to solve something you do not know anything about, will be naive. There you go, programming a bubblesort, since you never heard of quicksort or heapsort. You can save lots of time, get better results and deepen your insights by looking on how some wizard did that stuff. It helps immensely if you have masterful works to inspire you and help direct you in your practice. One has to stand upon the shoulders of giants to achieve something in a field that is complicated and large. And contrary to Perlis' epigramm, you should sometimes try to change your behaviour patterns if there is a better way to do it.

Practice


Then you have to practice, practice, practice, to understand why he did things that way and not another way. All real understanding comes from practice. There's a German proverb: "Übung macht den Meister." (Practice makes perfect.)

You learn best by solving problems. You learn programming by programming and examining how good programmers program. Another excellent review on learning to learn is Peter Norvig's page. The bottom line is, that you are learning the best if what you do is fun and if you learn to solve a direct problem - problem oriented learning. When you are working on a project you'll experience problems. Since you want to solve the direct problem, you understand the problem, and you are highly motivated to learn and understand what to do to tackle it.

I read through general Unix books several times, and still I do not really have a good grasp on Unix. Because without really working much on Unix I never knew what of all this stuff was really of practical use for me in my day to day work, what to watch out for. Also without a direct application, the urge to really understand something complex was not big enough - I just skimmed over the difficult parts, never gaining real insight. The mind is not so easily fooled and protests to remember lots of probably irrelevant detail. I learned much more about Unix just by looking over the shoulder of my co-worker, the great INGMAR, for two hours. Because what he did and used was the stuff that you really needed.

Focus


You cannot learn everything. Just poring through books and more books doesn't give you real knowledge. There is much more knowledge printed than you ever could read, much less remember. I still sometimes fall into the book trap, losing touch with my actual work and thereby learning less, slower and wasting time. That's not to say books are bad, they help you get started on a subject, and help you look things up, when you need them. But you need something to help you focus. You cannot learn everything. You have to select the important stuff and concentrate on that. Having a goal helps you to select.

There is a saying from Goethe, the great German writer: "Ein Mann, der recht zu wirken denkt, muss auf das beste Werkzeug halten." ("A man that wants to be effective, has to use the best tools.") It is often worth to invest the time and learn using a good tool, since the tool will make you much more productive. How to find the best tools? Just look what the gurus are using. In hacker culture, these are to a large extent open source free software tools.

One of the problems is that the tools on Windows and Unix are so different. When I switched from NT, Java, Textpad/VisualCafe to Unix, Perl, Emacs to write a small script, it took me a whole day, since suddenly I had to use other key bindings, other language syntax etc. Again, focus on one set of tools, get used to it.

Play


Creativity and fun are important. Half of your brain is concerned with associative, wholistic thinking. Normally in school you are taught to use only the other, logical, analytic half. But memory doesn't work analytically, it works by connecting and associating things, thus giving them a relation to live in. Just think about how much easier it is to remember emotionally important stuff than technical facts. Just observe how much faster you learn by playing around and having fun with what you do. Actually, enjoying your work should always be the highest priority on your list.

First Things First


... second things never. You get work done fast by doing the work that has to be done. IT'S THAT SIMPLE. It is very easy to get distracted by all the marvellous toys that are out there, and many of which probably are even worth looking at, like compiler compilers, how compilers work, metadata, grammars etc. All of these, if mastered might make it possible to do your work in a much better way - but mastering them, or even grasping the concepts, takes time. Time you will not spend on your actual work, which won't progress. And without the feedback of work, what you look at cannot be truly understood. So it comes down to this simple phrase (which I saw in the film "My name is Joe", pinned to the kitchen cupboard of an alcoholic). Spend too much time on learning, and there will be no time to be productive. Spend too much time on production, and you will waste it because there would be a better way. (See PC/P balance.)

Here is an interesting story by a real programmer, jwz, about working. What I learned from checking his site is something I realised also from reading Feynman's "Surely you are joking, Mr. Feynman": these guys were or are great because of a) their huge minds and b) working on their stuff, instead of reading educated articles about how one should work, or reading biographies about other great men (or women) and how they did it. I can try that, too. Knowledge is personal, so is thinking. You have to find your own way. The only way to learn programming is programming. I also get the impression that jwz separates his work strictly from his other activities, like private hacks, writing etc. Good idea.

Get organized*


Structure your work processes and data. You can sort all of your working activities into three domains: productive work, learning, and administrative work. I think it is best to try to go into batch mode (to borrow that idea from Don Knuth) and do only one of those at the time. Of course this is often not easy, but improves productivity. Start with productive work until you get tired. Then it might be a good time to browse a bit, read up on news and when you are a bit refreshed, go on to learning (about the things you encountered during the working part). Don't do the administrative stuff early in the morning "to get it out of the way", do it in the evening, or it will eat up your whole day (downloading, communication, planning). The meta stuff (reflecting on what you do) can be in between but updating documents such as this should be done on the weekend.

Try to structure your data and work processes, so you do not have to spend time re-thinking stuff you thought about before. Organise your information, so you do not have to search for that address again etc.

When I was back in school I thought people that used index cards were idiots. I just wrote everything neatly down into my notebook, at the end of the year I'd have a nice book on linear algebra for example. If I wanted to look something up later, I just got the book and there it was. Right at my fingertips. Others wrote everything into one big binder, to "sort it out" later, and of course, most of the time nothing got sorted, everything was mixed up, and you couldn't find anything anymore.

Unfortunately I had to discover, that this plan only works while in school: there you get all the information pre-ordered. In real life, you work on a lot of things and piece stuff together all the time. The order of incoming information is not well structured, and so you are often forced to restructure your notes later. You always should try to reuse your notes, on the principle that if you don't, what were they good for in the first place. You will just write that same stuff down again? Because of that, it is much better to use ring binders, where you can resort the sheets or even better yet, computer files. Also, even if you have all the information reorganisable, you should create a central repository.

I tried several planning systems (a la filofax) and none of them worked for me. I'd start out with a burst of filled days, then nothing else follows. I thought that probably I'm just too undisciplined to use them, until I discovered Getting Things Done. I also learned that if it's bigger than my pocket, I won't take it everywhere and it will be useless. Now, in the age of smartphones, you can always have your calendar and contacts and notes with you.

When working with the computer, look out for repetitive tasks that eat up time. It might be worth to automate them with a small shell or perl script, if possible.

Example work distribution during my Ph.D.:

PRODUCTIVE LEARNING ADMINISTRATIVE
  • programming, debugging
  • documenting and application design
  • staying up-to-date on news, products, technology discussions
  • learning usage of tools, protocols, programming techniques
  • communicating with programmers, collegues, vendors
  • ordering stuff, filling out forms
  • meta-work, planning and reflection like this
  • downloading stuff
  • meetings


Learn from mistakes


Do not repeat useless actions. To learn the right things, you first have to understand what the problem is. You have to ask yourself the right question, have to limit the options. Maybe in the very beginning when you do not have enough information to see what is important at all, you have to just skim around, looking here and there, until some kind of map builds up in your mind. It will do this automatically, don't worry about it. Your brain will do this for you. Then, when you recognise the crucial points, you look there.

When I was small, I lived in a room under the roof. The window above my bed was set into the roof and thus was not vertical, but tilted at about 45°. To open it, you tilted it a bit more about a horizontal axis. It also had the glass pane set into a wooden frame, so that the frame worked like a small rim around the window. Now, under that roof we also had a wasp-nest, and every now and then, when the window was open a wasp would err into the room. Once inside it would see the big blue sky through the window, whereas the room was dark and shady. So in a futile attempt to get out again, the wasps bumped their head against the glass pane. Again and again, hours on end. In the end the wasps fell down into my bed, exhausted, and died there. Some of them checked all of the pane, until they reached the rim, but they couldn't see an exit there, either, so they went on along the rim or back inside the pane.

So all the wasps died, because they were too dumb to learn. They just repeated the same mistake over and over. It would have been so easy to escape and survive. All they had to do was understand that what they had done didn't work and back up a bit. Freedom was just a few inches away.

I have seen the same behaviour many times later on, but not with wasps, which can hold up to their defense that they are only small insects with even smaller brains, but with people, including myself. They try something, it doesn't work, they try it again. Then again. If something doesn't work, try doing it differently. Just repeating it over and over will get you nowhere. You have to change some parameters.

As an aside, there is the story of the two frogs in a bowl of milk, drowning, where one gives up and drowns, while the other struggles, trying again and again to jump out, until finally the milk changes to cream and he escapes. There also is an variation on this: "I'm so deep in sh*t, I can struggle all I want, it just won't turn to cream."

Also, if you want to eliminate a problem, first you have to find out what the problem really is in a complex system like a computer. If something won't work, there can be lots of reasons. Check out the different levels from low to high with elementary tests, to find out where things go wrong. This goes along with finding out what to learn.

*Meetings

Writing this nearly 20 years later in life, the challenges on my time have changed. Back then I was a single contributor, and had the freedom to of having most of my time to myself. I listed meetings and communications as a subitem of administrative. Now with a leadership role in a larger organisation, most of my time is eaten up by meetings, often meetings that I did not put on the agenda. 

In this situation, it becomes even more important to batch and compartmentalise time. As outlined in Maker's schedule, Manager's schedule by Paul Graham, it helps to block at least half-days for immersive work, thinking and learning, and to batch meetings. And I learned via Tim Ferris, "Your inbox is everybody else's agenda for your time." Control your own priorities and time, and do not let others dictate it to you.

2009-02-06

My years with General Motors

By Alfred P. Sloan, Jr.

According to Bill Gates the single most useful book you can read on business. I agree it is great. This book states Sloan's business ideas in the unassuming voice of a personal memoir. Sloan must have been one of the best managers the world has ever seen. Read this book, and understand where all the stuff that Drucker wrote came from. Enough laurels, what does it say?

Sloan introduced organizational structures balancing central policy with decentralized execution (a lot of the most difficult issues he considers really come with size). He gave employees freedom to act guided by objectives and incentives. He was big on grasping reality, by collecting key operational data, by working out solutions by meetings of stakeholders. He looked ahead to preempt problems and see opportunities for innovation. And he did this on a level of success where it really becomes a bit scary.

Some concrete points:
Energy and logical action in accordance with facts and circumstances.

Purpose: The primary objective of the corporation is to make money, not just to make a product -- pay dividends and increase capital value. ROI is the unifying measure for each business unit.

Value: The future of the corporation depends on the ability to design and produce products of maximum utility in quantity at minimal cost. To succeed in business in the long run you must render service to the public.

Strategy: Companies compete in broad "policy" (i.e., strategy) as well as in products. Every enterprise needs a concept of its industry and the CEO must understand the industry. Think about what you are trying to do, in addition to the constraints imposed by customer demand, competition, technology, economic conditions and evolution. Establish principles and work from them.

Measurement: Measuring, organizing and presenting the significant facts about what is going on in and around a business is one of the chief bases for strategic business decisions. Finance can not exist in vacuum but has to be integrated with ops.

Consensus: Co-ordinate by committee. The executive committee is to pass policy in a clear cut way to supply the basis for authorized executive action, e.g. on quality standards, price schemes, market and competitive moves. It should have enough representatives from operations to come to realistic conclusions. The role of the executive is policy making. Have an operations committee of all unit heads. Gets all available data about performance, and includes executives. The goal: to bring about common understanding.

The Executive: There is a need need for authority of the chief. If possible have the boss be in charge of operations. A group can make policy, but only individuals can administer policy. If a company does not execute well, all policy is for naught.

Capital approbation for projects:
- what is the relative value of the project as compared to other projects in ROI and in necessity to support company operations as a whole
- does it work as a commercial venture?
- has it properly been developed technically?
- is it proper considering company interest as a whole (not just for the unit proposing)

Small projects can be authorized by the unit manager, large ones need a procedure and approval by top management/finance, and need to present their economic and technological benefit.

Organisational structure: Independent units coordinated by central management. There is need to separate divisional and corporate functions. The juncture between staff and line can be paralyzing if it turns into a battlefield. Have line representatives on staff committees to get buy-in and adequate representation of needs. Functions include development, engineering, production, sales, finance. There should be a separation between advanced product engineering and long term research.

Have representative members in parallel function from each unit get together to exchange and co-ordinate, give them authority and power so this coordination can be constructively applied. Confine the scope to problems/info exchange of common interest. Keep away from details, focus on basic problems. Keep sessions business like and to the point. Have a secretary to support the committee.

Personal productivity: Spend days with inspection and observation, nights with discussion. Only 5 direct reports to have time for large scale issues thinking. Put all your energy and experience into your work. Even at the cost of personal sacrifice.

2008-12-07

The equation that couldn't be solved

By Mario Livio



Evchariste Galois was a genius and a romantic who forever changed maths by inventing group theory before he was shot at the age of 20 in a duel, and his life would make a fine subject for a hollywood movie a la "A beautiful mind".



The life stories of him and a bunch of other mathematicians who quested to solve quadratic, cubic, and quartic formulas and prove that there can be no general formulistic solution for the quintic make up the bulk. There is an explanation of what a group is (closure, associativity, identity, inverse) and a few simple examples of groups plus explanations that they are used to describe symmetry. There is a nice section showing that if you are looking for the best mate, but can't go back to earlier ones you separated from, sampling about one third of the overall you could have and then sticking to the first one better than all these after that is the best strategy - which means if the best one was in the first third, you'll have to try all and will get stuck to the last one ... I assume unless you'd turn out to not be their final choice and end up alone.

2008-11-29

The economic naturalist

By Robert H. Frank

This popular economics book, is written by the academic who wrote the Principles of Economics textbook which I dearly love.
This book contains short essays that try to answer from first economic principles puzzling questions like "Why are round trip airfares from Kansas City to Orlando lower than round trip airfares from Orlando to Kansas City?", or "Why is it easier to find a partner when you already have one?", or "Why are soda cans not shorter and wider, and thus cheaper by using less alloy for the same amount of liquid?"

The principles invoked are scarcity, opportunity cost, price discrimination, supply and demand, the tragedy of the commons, externalities. In many cases they fall short of giving a good explanation, and the answers resort to speculation about human psychology. Some answers are altogether unsatisfactory. Soda cans remain a mystery to me.

2008-11-08

The Logic of Life

by Tim Harford

Another entertaining "popular economics" book. Although not quite as good as the undercover economist, is covers a wide range of everyday experiences and explains why the apparently unreasonable makes sense - for example: why your boss is overpaid, why real wages in the world's large metropolitan cities are lower (hint: not mainly because you can go out in the evening), why divorce rates are high and eligible bachelors scarce, why rich neighborhoods have better streets and infrastructure (hint: not because they are chummy with those in npower or bribe politicians), why race discrimination at work is hard to stamp out even if employers don't have any personal preferences.

Usually it comes down to rational decisions that each individual makes, which in aggregate lead to irrational outcomes or freeze in bad situations.

2008-09-12

Push the enevlope

When you are making no mistakes, you are not trying hard enough.

It only is possible to avoid mistakes by not trying out something new, instead staying on familiar ground where you know how things work. Or by being a genius or incredibly lucky.

2008-08-21

Books vs Life

Reading books is well and all, but real understanding is only through experience.

Reading a book is like listening to the person that wrote it. It gives you access to the thoughts of people that you normally never could meet, never could have as your mentors, people who had the experience and did great things.

There are two caveats, however:

First, every situation is different, and sometimes you may end up like the generals that are perfectly prepared to fight the last war: you will have to come up with own new ways to do things. You will have to think on your feet. You will have to keep your eyes and ears open and soak up information for your specific situation. Still, many things do not change that easily, at least about people and how they behave, and you can learn something.

Second, listening to somebody telling you how it is doesn't mean you get it. You have to experience the thing first to really understand what he is talking about, and to turn the theoretical statement into something you understand in your guts.

2008-07-30

Persuasion

by James Borg

A tedious read. First, there is no red thread to the book. Part it is popular psychology heavy on theory from body language to Jung's personality types; part are practical scenarios like what to say on the telephone to get through a secretary. It is filled with pointless made-up dialogues that claim to show how failing communication attempts are transformed into easy victory by its wisdom. As if.

The good points I took from it were that you should show empathy and sincerity: respect the people you deal with, by not wasting their time, by listening and focusing your attention to them and putting yourself in their shoes to understand their feelings and needs. Take interest in them and their plans. And as everyone is different, not just extrapolate from yourself, but try to understand what they need to feel comfortable - be it socializing and praise, or detailed facts and numbers, or visions. Nothing new, though, that's straight out of Dale Carnegie.

The chapter about how to talk on the phone at least was practical and hands-on.

I found the chapter on attention interesting, how it and momentum get destroyed by interruption. So remind your partner where the discussion left off when resuming, or if possible postpone to discuss again later, and avoid rejection today. Also apparently, you should look people in the eye a lot.

It is fitting that the book, contrary to what it's cover says, is somewehere down in the nether regions of sales on Amazon.

2002-03-27

Fundamentals

You have to stand firm on the things that are important to you. You have to communicate them, so others can understand. You should be generous when it comes to unimportant stuff.

From Sascha I learned: you learn things by just tackling them. Don't begrudge the facts. Recognize problems and stuff that went wrong, think about how you can avoid what went wrong the next time, and think what you can do in the given situation.