Wednesday, October 13, 2010

The Passionate Programmer : Part 2: Investing in your product

This are my notes from part 2 of The Passionate Programmer: Creating a Remarkable Career in Software Development written by Chad Fowler.

Part 2 : Investing in your product

Learn to fish

How does it work ? Why does it have to happen ? You may not even be able to answer the questions, but the very act of asking them will put you into a new frame of mind and will generate a higher level of awareness about your work environment.
Pick one of the most critical but neglected tools in your toolbox to focus on. Allot yourself a small period of time each day to learn one new thing about the tool that will make you more productive or put you in better control of your development environment.

Learn how businesses really work

Get a basic book on business (e.g. "The Ten Day MBA").

Find a mentor

Be a mentor

Look for someone to take under your wing. Help out on an online forum.

Practice, practice, practice : work through the 21 kata's, keep a diary of your experiences with the kata. When finished write your own and share it.

The way that you do it

Pick a software development methodology, and pick up a book, read websites and join a mailinglist. Look at the methodology with a critical eye.

On the shoulders of giants

Studying the work of masters is an essential part of becoming a master. Pick a project and read it like a book. Make notes. Outline the good and bad. Find at least one trick or pattern that you can use from it. Find at least one bad thing that you observed that you will add to your "What not to do" checklist.

Automate yourself into a job

Pick a task your normally do repetitively, and write a code generator for it. Think of a way to raise the level of abstraction of what your generating. Research Model Driven Architecture (MDA).

Friday, October 8, 2010

The Passionate Programmer: Part 1: Choosing Your Market

The next notes I want to publish here are my notes from The Passionate Programmer: Creating a Remarkable Career in Software Development written by Chad Fowler. As the subtitle says this book is all about creating a remarkable career in software development.

It's a nice book with a lot of short chapters with useful advice. Here are my notes from Part 1.

Part 1: Choosing your market

Lead or bleed ?

Make a list of early, middle and late adoption technologies based on todays market. Push yourself to find as many technologies in each part of the spectrum as possible. Mark the ones you consider yourself strong in and the ones you have some experience with. Where are most of your marks. Are there any technologies around the far edges you have some special interest in ?

Supply and demand

Research the current technical skill demand. Use job posting and career sites to find out which skills are in high demand and which in low demand. Find the websites of some offshore companies. Compare the skills available via these companies with the high demand list you compiled.

Coding don't cut it anymore

Know your business. Schedule lunch with a business person. Pick up a trade magazine for your company's industry.

Be the worst

Find a "be the worst" situation for yourself. Check for developer group meetings nearby. Pick an open source project that you admire and whose developers appear to be at the "next level" and create a patch for a bug or a new feature.

Invest in your intelligence

Learn a new programming language that makes you think in a new way? Work through enough code that you truly feel the difference.

Don't listen to your parents

For each career decision : asses how much the decision was driven by fear?

Be a generalist

List the dimensions for which you may or may not be generalizing your knowledge and abilities. For each dimension write your specialty. To the right write one or more topics you should put in your "to learn" list.

Be a specialist

Learn about the internals of how your VM works, study what happens when you compile a source file. Teach a class on some aspect of a technology, teaching is one of the best ways to learn.

Don't put all your eggs in someone else's basket

Try a small project twice, once in your home base technology and the once in a competing technology.

Love it our leave it

Go find a job you're actually passionate about. 2 wees log excitement to go to work (1-10). Next 2 weeks : plan every morning how you're going to make tomorrow great. Each day log yesterdays excitement level. If after 2 weeks things look sad you might consider a major change.

Next: Part 2: Investing

Monday, May 3, 2010

The Art of Learning : Part 3

This my last post with my notes from The Art of Learning: An Inner Journey to Optimal Performance by Josh Waitzkin.

Part 3 : Bringing It All Together

The better we are at recovering, the greater potential we have to endure and perform under stress. Cardiovascular training can have a profound effect on your ability to quickly release tension and recover from mental exhaustion. When doing interval training (e.g. weightworkouts) monitor precisely how much time to leave between sets so that your muscles have ample time to recover, but are still pushed to improve their recovery time e.g. 3 sets of 15 reps -> 45 s. rest, 3 sets of 12 reps -> 50 s. rest, 3*10 -> 55 s., 3*8 -> 1 min. In time with consistent work, rest periods can be incrementally shortened.

1st step to mastering the zone is to practice the ebb and flow of stress and recovery => interval training. With practice, increase the intensity and duration of your sprints, and gradually condense rest periods. Incorporate the rhythm of stress and recovery into all aspects of your life.

Spend a few minutes a day doing some simple meditation practice in which your mind gathers and releases with the ebb and flow of your breath. Get better at releasing tension and coming back with a full tank of gas in your everyday activities, both physical and mental. Learning how to relax under pressure is a key first step to tapping into the potential of the unconscious mind.

A roadblock to release the tension during breaks of intense competition is the fear of whether we will be able to get it back. Important to relax between two matches. In long tournaments, the ability to sleep at night is one of the most decisive factors.

Simplicity, the everyday is where success, let alone happiness emerges.

Building a trigger for the zone :

  • when are you closest to serene focus ? (e.g. taking a bath, jogging, swimming, listening to music, ...)
  • create a four- or five-step routine that builds up to this activity: e.g.
    1. eat a light consistent snack for 10 min
    2. 15 min of meditation
    3. 10 min of stretching
    4. 10 min of listening to music you like (always the same long song)
    5. perform the activity you chose
  • go through this routine everyday for at least a month
  • after that replace step 5 by an activity for which you want to be in the zone

The result is that a physiological connection is formed between the routine and the activity it precedes. Once the routine is internalized, it can be used before any activity and a similar state of mind will emerge. Determine your personal routine by your individual taste.

Next step is to gradually alter the routine so that it is similar enough so as to have the same physiological effect, but slightly different so as to make the "trigger" both lower maintenance and more flexible. Key is to make the changes incrementally. This type of condensing practice can do wonders to raise our quality of life, once a simple inhalation can trigger a state of tremendous alertness, our moment-to-moment awareness becomes blissful.

Key to nutrition in unpredictable environments is to always be prepared for exertion by being nourished, but never have too full a stomach and thereby dull your senses.

3 steps to resilient, self-sufficient performance :

  1. learn to flow with distraction, like a blade of grass bending in the wind
  2. learn to use distraction, inspire yourself with what initially would have thrown you off your game
  3. learn to re-create the inspiring settings internally
Only way to succeed is to acknowledge reality and funnel it, take the nerves and use them. We must be prepared for imperfection. If we rely on having no nerves, on not being thrown off by a big miss, or on the exact replication of a certain mindset, then when the pressure is high enough, or when the pain is too piercing to ignore, our ideal state will shatter.

Soft zone approach is much more organic and useful than denial. Instead of running from our emotions or being swept away by their initial gusts, we should learn to sit with them, become at piece and with their unique flavors and ultimately discover deep pools of inspiration.

Introspect. Discover what states work best for you and build condensed triggers so you can pull from your deepest reservoirs of inspiration at will.

Once you have found the profound refinement of a skill, no matter how small it may be, we can then use that feeling as a beacon of quality as we expand our focus onto more and more material. The technical afterthoughts of a truly great one can appear to be divine inspiration to the lesser artist. Create a body of theory around a fleeting moment of inspiration.

This where my notes from the last part of The Art of Learning: An Inner Journey to Optimal Performance by Josh Waitzkin. As in part 1 and part 2 does the last part contain lots of personal stories from Josh with as last chapter a great story about Josh becoming a Push Hands World Champion.

Friday, April 30, 2010

The Art of Learning : Part 2

In this post you will my notes from the second part of The Art of Learning: An Inner Journey to Optimal Performance by Josh Waitzkin.

Part 2 : My Second Art

Investment in loss is giving yourself to the learning process. Put your ego on the side. Aim to minimize the number of times you make the same mistake, by having an eye for consistent psychological and technical themes of error.
Essential to have a liberating incremental approach that allows for times when you are not in a peak performance state.
Great ones are willing to get burned time and again as they sharpen their swords in the fire.

Have a beginner's mind and invest in losses.

Depth over Breadth

Plunge into the detailed world of the micro in order to understand what makes the macro thick. Our attention deficit culture is an obstacle to this. We are bombarded with more an more information (TV, internet, ...). There is a constant supply of stimulus -> potential to turn us into addicts, always hungering for something new and prefabricated to entertain us.
Then when nothing exciting is going on, we might get bored, distracted, separated from the moment -> so we look for new entertainment.
If caught in this rhythmes, we are like tiny current-bound surface fishes, floating along a two-dimensional world without any sense for the gorgeous abyss below. When these socially induced tendencies translate into the learning process, they have a devastating effect.

Making smaller circles : subtle internalization and refinement is much more important than the quantity of what is learned. Depth beats breadth any day of the week, because it opens a channel for the intangible, unconscious, creative components of our hidden potential.

3 critical steps in a resilient performer's evolving relationship to chaotic situations :

  • 1. learn to be at peace with imperfection.
  • 2. learn to use that imperfection to your advantage.
  • 3. learn to create ripples in your consciousness, little jolts to spur us along, so we are constantly inspired whether or not external conditions are inspiring.

It's important to undulate between external and internal (concrete vs abstract, technical vs abstract) training. If your opponent is temporarily tied down qualitatively or energetically more than your are expending to tie him down, you have a large advantage. You have to make obstacles spur you to new creative angles. You should always come off an injury or a loss better than when you went down.

Intuition is our most valuable compass in this world. It's the bridge between the conscious and unconscious mind.
Road to mastery :

  • start with the fundamentals
  • get a solid foundation fueled by understanding the principles of your discipline
  • expand and refine your repertoire, guided by your individual predipositions while keeping in touch with what you feel abstractly to be the essential core of the art.
The result of this is a network of deeply internalized, interconnected knowledge that expands from a central, personal locus point.

Chunkin : mind's ability to assimilate large amounts of information into a cluster that is bound together by certain patterns or principles.
Carved neural pathways : process of creating chunks and the navigation between chunks.
The conscious mind can only take in and work with a certain limited amount of information in a unit of time. Making networks of chunks by practicing moves huge piles of data to the unconscious. That way your consciousness has less to deal with and can focus on details. The key is practice.

This was part 2. I left out all the personal stories which greatly exemplifies the advices. On to the last part.

Sunday, April 11, 2010

The Art of Learning : Introduction

The second book I want to talk about here is The Art of Learning: An Inner Journey to Optimal Performance by Josh Waitzkin. This book is all about the road to excellence and how he managed to first become a chess master and then a World Champion martial artist.

I really enjoy reading this book. Its an easy and entertaining book with examples and stories from his life coupled with the insights he gained throughout all these years of learning. But lets get started with my first notes.

Part 1 : The Foundation

Advice to teachers :

  • first get to know one another
  • don't only tell, but prove it (show it)
  • earn respect, win trust
  • keep balance between personal style of the student and formal training
  • keep love for the field alive, don't let technical material kill it
  • be a guide, discuss instead of lecturing
  • ask questions (about the thought process)
  • help the decision making process, make them think

Deliberate practice is the key. Practice a lot, experiment, try out, take the lessons, repeat.
Take breaks from the intensity of practice.

"Entity" and "incremental" theories of intelligence

enity theorist incremental theorist
intelligence and skill level perceived as a fixed entity with hard work, difficult material can be grasped
more brittle and prone to quit when challenged step by step the novice can become a master
"learned helplessness orientation" "mastery oriented response" when presented challenging situations
It's a parenting responsibility.
Smart boy! Great job !
It's not your thing Study a little harder

It's never too late

The key to pursuing excellence is to embrace an organic long-term learning process, and not to live in a shell of a static, safe mediocrity. Usually growth comes out at the expense of previous comfort or safety.

Successful people shoot for the stars, put their hearts on the line in every battle, and ultimately discover that the lessons learned from the pursuit of excellence mean much more then the immediate trophies and glory.

  • draw wisdom from every experience, "good" or "bad"
  • first focus on the essentials, for example in chess focus on end games instead of openings
  • see losing as an opportunity to grow
  • critical strength of a superior competitor is the ability to dictate the tone of the battle
  • good competitors tend to rise to the game of the opposition

Process-first approach : praise good concentration, a good day's work, ... When winning, spotlight on the road to that moment and beyond opposed to the glory. But when we have worked hard and succeeded at something, we should be allowed to smell the roses. When losing, disappointment is a part of the road to greatness, try to learn the lessons.

As adult we need to put ourselves out there, give it our all, and reap the lesson, win or lose. We learn by pushing ourselves and finding what really lies at the outer reaches of our abilities.

Hard zone vs Soft zone

Learn to flow with whatever comes.
Mental resilience is a critical trait of a world class performer.
Don't avoid discomfort but become at peace with it.

Important to regain presence and clarity of mind after making a serious error (take a deep breath, ...).
Brilliant creations are often born of small errors.

Study form to leave form

Learn the hard from the soft, learn this from that.
In fields of learning and performance:

  • Careful balance of pushing yourself relentlessly, but not so hard that you melt down. Muscles and mind need to stretch to grow, but if stretched too thin, they will snap.
  • Competitor should always look for stronger opponents to spur growth, but also keep winning enough to maintain confidence.
  • Release current ideas to soak in new material, but not so much that we lose touch with our unique natural talents.

This are my notes from the first part of three from The Art of Learning: An Inner Journey to Optimal Performance. On to the next part.

Sunday, March 28, 2010

Personal Development for Smart People: Spirituality

This article is part of my series on Personal Development for Smart People. If you are new here I recommend you to first read my introduction to the book.

What follows are my notes from the last chapter which takes about spirituality.


  • intro
    • spirituality : collection of beliefs about reality and your personal role in the universe
    • highest ideal for your spiritual philosophy is intelligence
    • if a spiritual philosophy succumbs to falsehood, disconnects you from life, weakens you it will only leas you astray
  • & truth
    • each believe system you consider provides another way of viewing the same underlying data
    • view reality through multiple belief systems in order to seek the big picture
    • spiritual sensory equipment
      • 1st, 2nd and 3rd-person viewpoints
      • subjective and objective viewpoints
      • intuition and instincts
      • logic and reason
      • dreams and visions
      • religious and philosophical beliefs
      • cultural, social, political and economic beliefs
      • functional beliefs
      • personal beliefs
    • learn to consider reality from multiple perspectives to overcome many of the limitations of individual belief systels
  • & love
    • gain spiritual lessons from your inner world and your outer world
    • answers will come from stillness and from direct communication
  • & power
    • decouple your spiritual beliefs from your identity
    • your beliefs can never define you
    • a fixed belief system can only limit your ability to grow
    • center your life around service to others in order to balance yourself financially, emotionally and spiritually
    • find others with different belief systems that seem to empower them in some specific way, and learn from them
    • whenever you close your mind to new ideas, you fall out of alignment with power
  • & oneness
    • our personal spirituality has a collective impact
    • abandon beliefs that label other human beings as unworthy, damaged or evil
    • your individual spiritual duty is to ensure that you harbor beliefs that are aligned with the principle of oneness
  • & authority
    • you must be the ultimate authority in your life, not God or some guru, master or teacher
    • beliefs must satisfy the following criteria
      • 1. accurate, consistent with your observations of reality
      • 2. all-inclusive, collectively address your entire field of experience
      • 3. flexible, adapts well to new circumstances
      • 4. ethical, don't encourage violence or dishonesty
      • 5. congruent, internally consistent with each other
      • 6. consciously chosen
      • 7. pleasure-increasing and/or pain-reducing, make you feel good, reduce fear by bringing truth to the unknown
      • 8. empowering, should allow you to experience what is technically possible
    • hidden falsehoods may be revealed by considering the alternatives
  • & courage
    • think for yourself
  • & intelligence
    • don't compartmentalize your spiritual practice

List of all posts in this series:

Thursday, March 25, 2010

Personal Development for Smart People: Relationships

This article is part of my series on Personal Development for Smart People. If you are new here I recommend you to first read my introduction to the book.

This post contains my notes on the chapter about relationships.


  • intro
    • relationships are a huge source of learning and growth
    • there are lots of different types of relationships
  • & truth
    • assessment
      • how do you feel about your current relationships ?
      • what do you contribute to the people closest to you
      • observe the breadth and depth of your current relationships
    • prediction
      • where do you see your current relationships heading ?
      • which one are growing closer or drifting ?
      • make reasonable guesses, honest expectations
    • pay attention to your feelings
    • accept the truth, don't deny it
    • all human relationships are guaranteed to be temporary
    • don't take other people for granted
  • & love
    • building and expanding relationships by connection with people and allow others to connect with you
    • most basic way of connecting is through communication
    • three communication channels truth (facts, info), love (empathy, compassion, affection) and power (action)
    • what is/are your dominant communication channel(s)
    • in order to connect we need a base level of compatibility
    • use your dominant connection strategy to regain closeness with your partner
    • use your differences to intentionally help each other
  • & power
    • best relationships server to increase your power
    • conscious relationship requires effort and commitement on both sides
    • your relationships have a tremendous effect on your self-development
    • use your power to break disempowering relationships
    • improve your alignment with truth, love and power to attract high caliber partners
  • & oneness
    • we are all individual cells in the same body
    • assume a preexisting connection, just have to tune in to it
    • be prepared for fascinating social experiences as your alignment with oneness increases
    • focus on the opportunities to connect
    • rejection is a sign of incompatibility, so it's not a bad outcome
    • be open to receive advances from others
    • if your primary relationship prevents your from connecting with others, you have cage not a conscious partnership
  • & authority
    • you're in charge of your own destiny
    • to improve your relationship skills enlist the help of a mentor
    • identify someone you know who seems to have an easy time connecting with people and ask advice
    • interpersonal skills must be developed through action
    • put your ideas into practice
  • & courage
    • courage to initiate new connections
    • courage to intimately connect with people
    • courage to face the truth about relationships that have gone wrong
    • courage to end those relationships that no longer serve you
    • take the initiative to bring new relationships into your life
    • when discussing problems speak from the first-person (I think, feel, believe,...) and speak your truth (don't hold back)
    • when you end a relationship, be direct, honest, compassionate and strong
  • & intelligence
    • build authentic relationships with other people
    • they won't turn out perfectly but that's not necessary
    • to attract new people focus yourself on your own self-expression

The last post in this series is about Spirituality.

All posts: