<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Software Creation Mystery &#187; People</title>
	<atom:link href="http://softwarecreation.org/category/people/feed/" rel="self" type="application/rss+xml" />
	<link>http://softwarecreation.org</link>
	<description>What are the forces behind software development?</description>
	<lastBuildDate>Mon, 11 Jul 2011 01:12:57 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Three Spirits in The Soul of a Software Developer</title>
		<link>http://softwarecreation.org/2011/three-spirits-in-the-soul-of-a-software-developer/</link>
		<comments>http://softwarecreation.org/2011/three-spirits-in-the-soul-of-a-software-developer/#comments</comments>
		<pubDate>Mon, 21 Mar 2011 00:11:24 +0000</pubDate>
		<dc:creator>Andriy Solovey</dc:creator>
				<category><![CDATA[Job]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[People]]></category>

		<guid isPermaLink="false">http://softwarecreation.org/?p=225</guid>
		<description><![CDATA[I noticed that three spirits are fighting in the soul of a software developer &#8211; Great Artist, Reliable Worker and Selfish Pragmatist. Great Artist If you hear a voice within you say, ‘You cannot paint,’ then by all means paint, and that voice will be silenced. &#8211; Vincent van Gogh The first spirit is a [...]]]></description>
			<content:encoded><![CDATA[<div><img class="alignnone" title="Battle" src="http://softwarecreation.org/images/2011/battle.jpg" alt="" width="600" height="257" /></div>
<div><span id="internal-source-marker_0.4501636205241084">I noticed that three spirits are fighting in the soul of a software developer &#8211; Great Artist, Reliable Worker and Selfish Pragmatist.</span></div>
<div>
<h3>Great Artist</h3>
<p><em> If you hear a voice within you say, ‘You cannot paint,’ then by all means paint, and that voice will be silenced.</em> &#8211; Vincent van Gogh</p>
<p>The first spirit is a <em>Great Artist</em> who pushes our fellow programmer to work on challenging tasks, invent new approaches and seek for self realization. The spirit gives power and desire to create state of art solutions and move forward with learning and practice. The <em>Great Artist</em> spirit is behind the best software; it makes the developer to think out of box, strive for beautiful code and forget everything outside the problem. It is powerful spirit but dangerous for ordinary business &#8211; there is no predictability and assurance that developer will remember what client really needs. The developer driven by this spirit tend to reject mediocre, but good enough solutions, will do stuff his own way and go far beyond what is necessary. This developer has zero tolerance to poor code and will refactor most important pieces of code even night before important demo&#8230; after testers go home to sleep.</p>
<p><span id="more-225"></span></p>
<h3>Reliable Worker</h3>
<p><em> No man is an island, entire of itself; every man is a piece of the continent.</em> &#8211; John Donne</p>
<p>The second spirit is a <em>Reliable Worker</em> who puts interests of the team, company and client on the first place. The developer driven by this spirit completely dedicates himself to success of the project and Greater Good. The <em>Reliable Worker</em> spirit  suppresses creativity and code that is not sanctioned by management and could fail. The developer will stay late to meet deadlines and fix embarrassing bugs; he will test after testers and verify installation after administrators.This altruistic spirit makes a developer focused, accountable and disciplined citizen of the company, but sometimes cause stress, uneasiness and feeling of wasted talent.  The danger is that  Reliable Worker spirit can evaporate fast if a company don’t care about developer’s hard work and sacrifices.</p>
<h3>Selfish Pragmatist</h3>
<p><em> Life is what happens to you while you&#8217;re busy making other plans</em>. – John Lennon</p>
<p>The spirit of <em>Selfish Pragmatist</em> is concerned about personal interests, financial well being, job security and career growth. This spirit forces a developer to accept shit and concentrate mostly on paycheck and managers recognition. The <em>Selfish Pragmatist</em> spirit becomes stronger with age as family and personal matters take over dreams of building great software and day-to-day problems kick out illusions about dedication and loyalty at work. Sometimes the developer influenced by this spirit starts to focus on stuff that is more beneficial for personal growth, produce tangled code for better job security and increase complexity for longer contacts or even work on own side projects, business or simply waste time on Internet. This spirit is fed by natural desire to achieve personal goals, secure own future and have life outside work. The danger of this spirit is that the developer could become counter-productive and don’t care about quality and long-term success of  	the project and company.</p>
<p>Each of spirits have positive effects: <em>Great Artist</em> provides creative power, <em>Reliable Worker</em> encourage discipline and focus on results and <em>Selfish Pragmatist</em> ability to meet personal interests. But there are also side effects:  <em>Great Artist</em> overdoes and misses real needs, <em>Reliable Worker</em> causes burn down and fear of change and <em>Selfish Pragmatist</em> downplays company and client best interests.</p>
<p>These spirits tear on pieces many poor developer&#8217;s souls and prevent peace in their minds. What is usual result of this battle of spirits?  I saw many developers who end up with one spirit rule (unfortunately often with Selfish Pragmatist) and no longer have much struggle. Other developers will flip between spirits depending on circumstances: some companies spark creative Great Artist and some provoke defensive Selfish Pragmatist.</p>
<p>The existence of the spirits is my subjective observation and theory, but it helps to explain many interesting phenomena in life of software teams. So, I have few questions to you, my dear reader.</p>
<p>Do you agree that these spirits exist?  Can you handle and balance them well? Did I miss any other important spirit or force in the soul of the software developer?</p></div>
<img src="http://softwarecreation.org/?ak_action=api_record_view&id=225&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://softwarecreation.org/2011/three-spirits-in-the-soul-of-a-software-developer/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>How to Become an Expert: Creativity</title>
		<link>http://softwarecreation.org/2010/how-to-become-an-expert-creativity/</link>
		<comments>http://softwarecreation.org/2010/how-to-become-an-expert-creativity/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 04:20:08 +0000</pubDate>
		<dc:creator>Andriy Solovey</dc:creator>
				<category><![CDATA[Expertise]]></category>
		<category><![CDATA[People]]></category>
		<category><![CDATA[Skills]]></category>

		<guid isPermaLink="false">http://softwarecreation.org/?p=122</guid>
		<description><![CDATA[cre·a·tiv·i·ty -the ability to transcend traditional ideas, rules, patterns, relationships, or the like, and to create meaningful new ideas, forms, methods, interpretations Creativity can be developed and improved. Here is my Theory of Creativity in 3 parts Prepared Mind &#8211; prepare your mind to be creative Right challenges &#8211; know what challenges you should embrace [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-family: verdana,arial,helvetica,sans-serif;"><span style="color: #333333;"><strong>cre·a·tiv·i·ty -</strong><em>the ability to transcend traditional ideas, rules, patterns, relationships, or the like, and to create meaningful new ideas, forms, methods, interpretations</em></span></span></p>
<p><img class="alignnone" title="Vladimir Kush" src="http://softwarecreation.org/images/2010/windmills.jpg" alt="" /></p>
<p>Creativity can be developed and improved. Here is my Theory of Creativity in 3 parts</p>
<ol>
<li><strong>Prepared Mind</strong> &#8211; prepare your mind to be creative</li>
<li><strong>Right challenges</strong> &#8211; know what challenges you should embrace now</li>
<li><strong>Creative ideas</strong> &#8211; use powerful techniques to get new ideas</li>
</ol>
<h3>I. Prepared Mind</h3>
<div>Your mind is the main tool for generating ideas. Empty, timid and rigid mind will not produce successful ideas.</div>
<p>What should be the qualities of the mind to get great ideas and solve complex problems?</p>
<ol>
<li><strong>Knowledgeable </strong>- know problem domain and other fields that can inspire new ideas</li>
<li><strong>Flexible </strong>- able to vary and adapt the ways of thinking</li>
<li><strong>Forceful </strong>- eager and resolute to find a solution</li>
<li><strong>Easy </strong>- clear and free from stress and fear</li>
<li><strong>Playful </strong>- can surprise and break rules</li>
<li><strong>Intuitive </strong>- come up with ideas without thinking and reasoning</li>
</ol>
<div>How can you develop these qualities and prepare your mind to be creative?</div>
<div><span id="more-122"></span></div>
<h4>1. Feed Head &#8211; make mind knowledgeable</h4>
<div><em>&#8220;If you want to make an apple pie from scratch, you must first create the universe.&#8221;</em> &#8211; Carl Sagan</div>
<p><em> </em>Organize regular information channels for delivering intellectual food for your head and push your mind outside of familiar boundaries.</p>
<p><strong>Build optimal flow of information in areas of your interests </strong></p>
<ul>
<li>Subscribe to blogs, magazines, podcasts, rss, twitter, etc.
<ul>
<li>Balance <strong>broad </strong>(e.g. <a id="fgdm" title="techcrunch.com" href="http://techcrunch.com/">techcrunch.com</a>, <a id="hmvu" title="digg.com" href="http://digg.com/">digg.com</a>) and <strong>deep </strong>sources (specialized sites or thought leaders blogs).</li>
<li>Group online sources (rss, blogs, twitter) based on <strong>frequency </strong>of updates and <strong>value </strong>to avoid missing valuable posts in the pile of shallow news.</li>
<li>Periodically review existing sources and re-arrange or remove them to keep the feed optimal for your current needs</li>
</ul>
</li>
</ul>
<ul>
<li>Scan for new books, blogs and articles
<ul>
<li>amazon.com is the best site to find great new books</li>
<li>Collect references and mentions from trusted sources</li>
<li>Use sites like <a id="wu9s" title="www.stumbleupon.com" href="http://www.stumbleupon.com/">www.stumbleupon.com</a> to discover new blogs and articles</li>
</ul>
</li>
</ul>
<p><strong><br />
Probe other fields</strong> &#8211; regularly try new fields for potentially useful information, interesting ideas and new perspectives.<br />
<em><br />
<span style="font-style: normal;">Start with general fields &#8211; history, art, economy, philosophy, management, psychology, physics, engineering and many others. Dig deeper if you find the field interesting.</span><br />
</em></p>
<ul>
<li>Subscribe to magazine and websites with interesting articles in wide range of fields targeted for general audience (e.g. <a id="s8lo" title="New Scientist" href="http://www.newscientist.com/">New Scientist</a> for science fields)</li>
<li>Search for highly ranked sources that are interesting and deliver good overview of the selected field.</li>
<li>Again, amazon.com and Google search are good starting points</li>
<li>Connect new information to your field &#8211; approaches, concepts, problems, solutions</li>
</ul>
<p><strong>Content analysis</strong> &#8211; keep your hand on pulse of your society and industry &#8211; general trends, key events, statistics, buzzes, news. All this information can be a valuable source for understanding present and future.</p>
<p><strong>Take notes</strong> &#8211; write down facts, thoughts and problems that can give rise to the new ideas, solutions or topics for future investigation</p>
<ul>
<li>Find good tools to capture your thoughts &#8211; otherwise you can lose great thoughts and ideas forever</li>
<li>Maintain Brainbank &#8211; collection of idea starters (undeveloped idea briefs) for specific topics in designated virtual or physical folders</li>
</ul>
<h4>2. Prime Your Mind &#8211; make it flexible</h4>
<p><em>&#8220;The mind is everything. What you think you become.&#8221;</em> &#8211; Buddha <em> </em></p>
<p><em> </em>Train mind to be creative, flexible and open to the world. Do not allow to stale &#8211; shake and exercise it every day with</p>
<ul>
<li><strong>daily idea quote</strong> &#8211; come up with few ideas every day for any aspect of your professional, public or private life.</li>
<li><strong>routines </strong>- change what you do and how you do from time to time</li>
<li><strong>experiences</strong> &#8211; strive for new experiences &#8211; travel, engage in the new activities, meet new people and attend new events</li>
<li><strong>thinking techniques</strong> &#8211; improve how you think, always look for new approaches</li>
</ul>
<h4>3. Explorer&#8217;s Drive (Energy, Courage, Self-Belief) &#8211; make mind forceful</h4>
<p><em>&#8220;The wind and the waves are always on the side of the ablest navigators.&#8221; <span style="font-style: normal;">- Edward Gibbon</span><br />
</em></p>
<div>Eager, brave and energetic mind can tackle any challenge and overcome any difficulty. A human without this explorer&#8217;s drive is passive bystander following beaten paths. This person will not be creative.</div>
<div>Believe in yourself. Remove psychological and physical barriers to be creative. It is a complex topic how to overcome these barriers and develop a strong inner self. You can find many recommendations &#8211; raising self-esteem, finding meaning in life, positive thinking, improving health and lifestyle, diet, physical exercises and <a id="ach7" title="fulfilling daily activities" href="../2008/the-happiness-programmers-edition/">fulfilling daily activities</a> and so on. Whatever it takes, but make an effort to ignite the drive, if you miss it.</div>
<div>You should believe in three things:</div>
<ul>
<li>better ideas exist</li>
<li>you will find them</li>
<li>you can make mistakes</li>
</ul>
<div>Explorers often fail, but you will fail for sure if you don&#8217;t try and don&#8217;t believe in yourself.</div>
<h4>4. Clear Mind &#8211; make it easy</h4>
<div><em>&#8220;The time to relax is when you don&#8217;t have time for it.&#8221;</em> &#8211; Jim Goodwin</div>
<div>Anxious, overwhelmed and stressed mind will not cooperate well. Meditate, relax and slow down sometimes to make your mind ready to be creative.</div>
<h4>5. Fun, Play, Being a Child &#8211; make your mind playful</h4>
<p><em>&#8220;All children are artists. The problem is how to remain an artist once he grows up.&#8221;</em> &#8211; Pablo Picasso</p>
<div>A normal adult becomes more serious and conservative with age that incur heavy cost &#8211; decreasing ability to find surprising and groundbreaking ideas.</div>
<p>Try to</p>
<ul>
<li>have fun, play</li>
<li>forget dogmas, break rules</li>
<li>be curious and spontaneous</li>
<li>be silly and illogical</li>
</ul>
<p>Encourage your inner child and don&#8217;t let him to grow up :)</p>
<h4>6. Train gut feeling &#8211; make mind intuitive</h4>
<div><em>&#8220;It is through science that we prove, but through intuition that we discover.&#8221;</em> &#8211; Jules H. Poincare</div>
<div>Our subconscious mind is much more powerful than linear conscious mind and in the same time it is much more difficult to control. The greatest thinkers know how to use both minds. In essence, gut feeling is your internalized experience, a form of pattern recognition and the way to communicate with subconsciousness. It can be <a id="cb7r" title="encouraged" href="http://www.cyc-net.org/features/ft-gutfeeling.html">encouraged</a> and <a id="qp_q" title="trained" href="http://www.ehow.com/how_2060669_develop-intuition.html">trained</a>.</div>
<div>Every time you have problem try to come up with ideas and solutions without thinking. Good intuition enable you to</div>
<ul>
<li>know how to attack the problem without know how you know</li>
<li>relate problems in one field to unrelated another field</li>
<li>recognize the crux of the problem</li>
<li>see general solution to the problem</li>
<li>recognize solution because it feels right</li>
</ul>
<p>(by George Turin, of the University of California)</p>
<h3>II. Right Challenges</h3>
<p><em>&#8220;He who knows when he can fight and when he cannot will be victorious&#8221; -</em> Sun Tzu</p>
<p>And still, creative person with prepared mind can waste talent and energy on solving irrelevant problems. You should focus on the most important problems instead of stretching yourself to fight any challenge.</p>
<ul>
<li>Select few important battles that you can win instead of squandering your energy in useless fights.</li>
<li>Actively prioritize, select or reject your outstanding challenges.</li>
<li>Select challenges that you are ready to accept and come up with ideas and solutions.</li>
<li>Focus and work the challenge</li>
</ul>
<h4>1. Know your problems</h4>
<div><em>&#8220;You won&#8217;t find a solution by saying there is no problem.&#8221;</em> &#8211; William Rotsler</p>
<p>Monitor your life, inquire your situation and make your problems explicit. Solving right problems in the right time is the best way to apply your creativity and improve your life.</p></div>
<p>Regularly,</p>
<ul>
<li><strong>keep the journal of interesting problems</strong> &#8211; problems you want to solve</li>
<li><strong>see waste</strong> &#8211; useless activities and commitments in your life. Streamline your life to have more time for important stuff.</li>
<li><strong>measure key parameters of your life</strong> &#8211; health, happiness, career, achievements, wealth. Small changes that you barely notice could lead to serious future problems.</li>
<li><strong>go and see</strong> (<a id="xf9i" title="Genchi Genbutsu" href="http://en.wikipedia.org/wiki/Genchi_Genbutsu">Genchi Genbutsu</a>) &#8211; if you feel that something is wrong, do not hide, but understand and face the challenge</li>
<li><strong>ask 5 whys</strong> (<a id="e9dp" title="Kaizen" href="http://en.wikipedia.org/wiki/Kaizen">Kaizen</a>) &#8211; find root causes of your problems. Do not discard problems as impossible to solve &#8211; convert into challenges and opportunities for making your life better.</li>
</ul>
<p>(the list is inspired by <a id="r7gs" title="Toyota Production System" href="../2009/how-to-rescue-failing-software-projects-toyota-way/">Toyota Production System</a>)</p>
<h4>2. Accept challenge</h4>
<p><em>&#8220;Even if you&#8217;re on the right track, you&#8217;ll get run over if you just sit there.&#8221; - <span style="font-style: normal;">Will Rogers</span></em></p>
<p>The last step before working on the challenge is to <strong>accept it</strong>. We have so many distraction in our life, we procrastinate and keep postponing actions. You have to make a serious deal with yourself to succeed with challenges. Accept the challenge means to commit yourself to work on it. Period. Commit, focus and work the problem, otherwise your attempts will be in vain.</p>
<h3>Questions to assess your mind preparation</h3>
<ol>
<li>Do I have good sources of information and adequate knowledge?</li>
<li>Do I have broad perspective of various fields?</li>
<li>Am I flexible and open-minded?</li>
<li>Do I have drive, energy and courage to embrace challenges?</li>
<li>Is my mind clear and relaxed?</li>
<li>Am I playful, curious and free of dogmas?</li>
<li>Does my intuition work well?</li>
<li>Do I know my challenges?</li>
<li>Do I accept them?</li>
</ol>
<h3>Action Plan</h3>
<table id="xhs4" border="1" cellspacing="0" cellpadding="3" width="100%" bordercolor="#000000">
<tbody>
<tr>
<td style="background-color: #000000; color: #ffffff; text-align: center;" width="25%"><strong><br />
</strong></td>
<td style="background-color: #000000; color: #ffffff; text-align: center;" width="25%"><strong>Daily</strong></td>
<td style="background-color: #000000; color: #ffffff; text-align: center;" width="25%"><strong>Weekly</strong></td>
<td style="background-color: #000000; color: #ffffff; text-align: center;" width="25%"><strong>Monthly</strong></td>
</tr>
<tr>
<td style="background-color: #eeeeee;" width="25%"><strong>Feed Brains</strong>: blogs, twitter, websites, rss, podcasts, books, magazines, audio, video</td>
<td style="background-color: #eeeeee;" width="25%">
<ul>
<li>read</li>
<li>think</li>
<li>take notes</li>
</ul>
</td>
<td style="background-color: #eeeeee;" width="25%">
<ul>
<li>scan for new information sources</li>
<li>rearrange or remove sources to keep them optimal</li>
<li>plan learning for the week</li>
<li>content analysis &#8211; news, events, buzzes</li>
</ul>
</td>
<td style="background-color: #eeeeee;" width="25%">
<ul>
<li>select a new general field for learning: get overall picture, find top ranked sources, add to learning plan</li>
<li>set and evaluate strategic learning goals and plans</li>
<li>analyse industry trends and statistics</li>
</ul>
</td>
</tr>
<tr>
<td style="background-color: #cccccc;" width="25%"><strong>Prime mind</strong></td>
<td style="background-color: #cccccc;" width="25%">
<ul>
<li>generate 5 ideas daily</li>
<li>change routines</li>
</ul>
</td>
<td style="background-color: #cccccc;" width="25%">
<ul>
<li>meet new people</li>
<li>look for new experiences</li>
</ul>
</td>
<td style="background-color: #cccccc;" width="25%">
<ul>
<li>learn new thinking techniques and improve existing</li>
<li>travel, visit new places</li>
</ul>
</td>
</tr>
<tr>
<td style="background-color: #eeeeee;" width="25%"><strong>Clear mind</strong></td>
<td style="background-color: #eeeeee;" width="25%">
<ul>
<li>meditate</li>
</ul>
</td>
<td style="background-color: #eeeeee;" width="25%">
<ul>
<li>connect to nature</li>
<li>do what you like</li>
</ul>
</td>
<td style="background-color: #eeeeee;" width="25%">
<ul>
<li>retreat and rest</li>
</ul>
</td>
</tr>
<tr style="background-color: #cccccc;">
<td width="25%"><strong>Boost driv</strong>e &#8211; energy, courage and self-believe</td>
<td width="25%">
<ul>
<li>diet</li>
<li>physical exercises</li>
<li>fulfilling activities</li>
</ul>
</td>
<td width="25%">
<ul>
<li>praise your achievements, work on weaknesses</li>
</ul>
</td>
<td width="25%">
<ul>
<li>find meaning in the life</li>
</ul>
</td>
</tr>
<tr>
<td style="background-color: #eeeeee;" width="25%"><strong>Have fun, play</strong></td>
<td style="background-color: #eeeeee;" width="25%">
<ul>
<li>laugh, play and don&#8217;t miss any opportunity to have fun</li>
</ul>
</td>
<td style="background-color: #eeeeee;" width="25%">
<ul>
<li>have fun, do stupid things (within crime code and human norms :))</li>
</ul>
</td>
<td style="background-color: #eeeeee;" width="25%">
<ul>
<li>have a lot of fun :)</li>
</ul>
</td>
</tr>
<tr>
<td style="background-color: #cccccc;" width="25%"><strong>Train intuition</strong></td>
<td style="background-color: #cccccc;" width="25%">
<ul>
<li>come up with ideas without thinking</li>
</ul>
</td>
<td style="background-color: #cccccc;" width="25%">
<ul>
<li>sharpen gut feeling &#8211; evaluate success of your intuitive ideas</li>
</ul>
</td>
<td style="background-color: #cccccc;" width="25%">
<ul>
<li>spend time understanding your inner-self</li>
</ul>
</td>
</tr>
<tr>
<td style="background-color: #eeeeee;" width="25%"><strong>Know your problems and work on them</strong></td>
<td style="background-color: #eeeeee;" width="25%">
<ul>
<li>log problems</li>
<li>work on accepted challenges</li>
</ul>
</td>
<td style="background-color: #eeeeee;" width="25%">
<ul>
<li>monitor life parameters</li>
<li>Kaizen &#8211; ask 5 whys, find root causes</li>
<li>streamline and remove waste from your life</li>
</ul>
</td>
<td style="background-color: #eeeeee;" width="25%">
<ul>
<li>Long-term planning and life review</li>
<li>Convert problems into opportunities</li>
<li>Accept or reject challenges</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p>If your mind is prepared, you are ready to use your creativity for solving challenges. The next post will equip you with powerful techniques for getting new ideas.</p>
<h4>Resources</h4>
<p><a id="e5ix" title="Thinkertoys: a handbook of creative-thinking techniques" href="http://www.amazon.com/gp/product/1580087736?ie=UTF8&amp;tag=softwcreatmys-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=1580087736">Thinkertoys: a handbook of creative-thinking techniques</a>, Michael Michalko<br />
<a id="o-le" title="How to get ideas" href="http://www.amazon.com/gp/product/1576754308?ie=UTF8&amp;tag=softwcreatmys-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=1576754308">How to get ideas</a>, Jack Foster</p>
<img src="http://softwarecreation.org/?ak_action=api_record_view&id=122&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://softwarecreation.org/2010/how-to-become-an-expert-creativity/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>How to Become an Expert: Making Ideas Stick</title>
		<link>http://softwarecreation.org/2010/how-to-become-an-expert-making-ideas-stick/</link>
		<comments>http://softwarecreation.org/2010/how-to-become-an-expert-making-ideas-stick/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 03:49:05 +0000</pubDate>
		<dc:creator>Andriy Solovey</dc:creator>
				<category><![CDATA[Expertise]]></category>
		<category><![CDATA[Job]]></category>
		<category><![CDATA[People]]></category>
		<category><![CDATA[Skills]]></category>

		<guid isPermaLink="false">http://softwarecreation.org/?p=106</guid>
		<description><![CDATA[Are ideas born interesting or made interesting? &#8211; Chip &#38; Dan Heath angelderoca You have 2 options to communicate your ideas: Tell people what is interesting for you &#8211; easy, but unfortunately, your ideas will be wasted because of other people low interest, incomplete knowledge or disagreement. Make your ideas interesting for other people &#8211; [...]]]></description>
			<content:encoded><![CDATA[<div style="margin-top: 10px; margin-bottom: 10px;"><em>Are ideas born interesting or made interesting?</em> &#8211; Chip &amp; Dan Heath</div>
<div><span style="font-weight: normal; font-size: 13px; "><img class="alignnone" title="ideas" src="http://softwarecreation.org/images/2010/apple-snake.jpg" alt="" width="500" height="429" /></span></div>
<div><a class="photocredit" href="http://www.flickr.com/photos/angelderoca/3998624908/">angelderoca</a></div>
<p>You have 2 options to communicate your ideas:</p>
<div>
<ol>
<li>Tell people what is interesting <strong>for you</strong> &#8211; easy, but unfortunately, your ideas will be wasted because of other people low interest, incomplete knowledge or disagreement.</li>
<li>Make your ideas interesting <strong>for other people</strong> &#8211; hard, but you have chances that other people will pay attention, understand, remember and act upon your ideas.</li>
</ol>
</div>
<div>This post is devoted to people who are interested in the second option.</div>
<p><strong>Why should a programmer care about communicating ideas to other people?</strong></p>
<p>It is true, the primary job of a programmer is to feed computers with ideas. But you cannot quietly hide behind a computer forever. You have to deal with other people:</p>
<div>
<ul>
<li>team &#8211; to contribute and explain your programming ideas</li>
<li>customers &#8211; to discuss and build trust in your solutions</li>
<li>end-users &#8211; to make your programming ideas useful for users</li>
<li>programmers of the world &#8211; to share your knowledge and exchange ideas</li>
<li>capitalists &#8211; to sell your ideas</li>
</ul>
<ul>
<li>low tech crowd &#8211; to promote technology ideas</li>
</ul>
<p><strong>Why is it so hard to make ideas interesting for other people?</strong></p>
<ol>
<li><a id="f62:" style="color: #551a8b;" title="Curse of knowledge" href="http://37signals.com/svn/posts/213-the-curse-of-knowledge">Curse of knowledge</a> &#8211; once you know something, it is hard to imagine not knowing it and communicate to novices</li>
<li><a id="nwtu" style="color: #551a8b;" title="Resistance" href="http://changingminds.org/disciplines/change_management/resistance_change/rationale_resistance.htm">Resistance</a> &#8211; many people ignore or resist new ideas</li>
<li>Limited brains &#8211; people have short <a id="edk2" style="color: #551a8b;" title="attention span" href="http://en.wikipedia.org/wiki/Attention_span">attention span</a> and can be easily overwhelmed by new and complex information</li>
</ol>
<p><span id="more-106"></span></p>
<p>The turning point in my professional life was Kent Beck&#8217;s book &#8211; <a id="tr45" title="Extreme Programming Explained" href="http://www.amazon.com/gp/product/0321278658?ie=UTF8&amp;tag=softwcreatmys-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=0321278658">Extreme Programming Explained</a>. Kent Beck made me think beyond technical aspects of software development. In addition to algorithms, computer languages and technologies, I started to realize very important factors &#8211; simplicity, feedback, business value and people interactions. Kent Beck influenced not only me, but millions of programmers by introducing Agile approach (Extreme Programming), iterations, user stories, refactoring, unit testing, pair programming, continuous integration and other practices. Kent transformed new and existing ideas into the form that made them widely accepted and used by almost any professional programming team now. Kent Beck knows how to make his ideas <a id="xoei" title="sticky" href="http://www.amazon.com/gp/product/1400064287?ie=UTF8&amp;tag=softwcreatmys-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=1400064287">sticky</a>.</div>
<div>
<h3>Principles of Stickiness</h3>
<p>Chip and Dave Heath defined 6 principles of sticky ideas in the book <a  title="Made to Stick" href="http://www.amazon.com/gp/product/1400064287?ie=UTF8&amp;tag=softwcreatmys-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=1400064287">Made to Stick</a>: Simple Unexpected Concrete Credible Emotional Stories (SUCCESs).</p>
<h4>Simple</h4>
<div>
<p><img style="width: 240px; height: 180px;" src="http://softwarecreation.org/images/2010/Inukshuk.jpg" alt="" width="240" height="180" /><br />
<a class="photocredit" href="http://www.flickr.com/photos/manning999/2165379782/">manning999</a></p>
</div>
<p>Usually people will remember only one idea from your message. They will remember nothing, if your ideas are complex and difficult to get. Therefore, distill your ideas into the simple and compact form.</p>
<ol>
<li><strong>Find core of your idea</strong> &#8211; remove all unimportant information, keep bare essential minimum</li>
<li><strong>Prepare <a id="xifw" title="Commander Intent" href="http://en.wikipedia.org/wiki/Commander's_intent">Commander Intent</a></strong> &#8211; plain statement of <span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="font-size: x-small;">the purpose of the operation and the desired end state.</span></span> Example: <em>The goal of this iteration is to build minimal end-to-end order flow &#8211; capture and save order, display it to an administrator.</em></li>
<li><strong>Build people understanding on familiar knowledge</strong> &#8211; introduce new ideas gradually, compare and merge with existing. Example: <em>Design patterns &#8211; we can use Factory method here to have full control over object creation.</em></li>
<li><strong>Use metaphors and analogies</strong> as a base for the new thinking. Substitute something easy for something difficult. Best examples are proverbs: <em>&#8220;A bird in the hand is worth two in the bush&#8221; &#8211; lets build first version on the proven technology to avoid risk of missing release date.</em></li>
<li><strong>Establish common language</strong> &#8211; with the same meaning to everybody. Domain Driven Design has <a id="kvfs" style="color: #551a8b;" title="ubiquitous language" href="http://domaindrivendesign.org/node/132">ubiquitous language</a> as a core principle for communication between business and technology people.</li>
</ol>
<h4>Unexpected</h4>
<div>
<p><img style="width: 240px; height: 160px;" src="http://softwarecreation.org/images/2010/judo.jpg" alt="" width="240" height="160" /><br />
<a class="photocredit" href="http://www.flickr.com/photos/parrhesiastes/2566999335/">parrhesiastes</a></p>
</div>
<p>
The sad truth is that people won&#8217;t get your idea if they don&#8217;t pay attention. You have to get and hold attention if you are serious about success of your ideas. It is similar to judo &#8211; once you get good grip on your opponent, you become in control and open possibility for many effective techniques. You cannot do much without solid grip.
</p>
<ol>
<li><strong>Surprise people and violate their expectations</strong>. Example: <em>my idea will remove half of the existing code and make the system much faster<br />
</em></li>
<li><strong>Stimulate curiosity</strong>: open gaps in knowledge and fill them with interesting answers, be provocative: <em>We can increase traffic to your website 10 times in two weeks. Do you want to know how?<br />
</em></li>
<li><strong>Make you message interesting for people</strong>. Use new information, twists, suspense and humor. Example: <em>Do you know that you current system is open for hackers and important information is leaking to Internet?</em></li>
</ol>
</div>
<div>
<h4>Concrete</h4>
<div>
<p><img class="alignnone" src="http://softwarecreation.org/images/2010/montessori.jpg" alt="" width="181" height="200" /></p>
</div>
<p>People have hard time to understand abstract vague language. Use instead definite and concrete language. Often <a id="y3iz" style="color: #551a8b;" title="bullshit" href="http://www.erikandanna.com/Humor/bullshit_generator.htm">bullshit</a> is disguised as abstract and conceptual language.<br />
Compare A to B:<br />
A. Our IT governance mandate requires us to carefully consider all the aspects of software quality, scalability and performance. We use comprehensive QA methods to meet wide range of possible live system usage scenarios and challenges. We employ best resources to accomplish this mission.<br />
B. We need one more week for thorough testing.</p>
<ol>
<li><strong>Make ideas clear and tangible</strong> &#8211; everybody should understand your message the same way</li>
<li><strong>Provide real examples</strong>, discuss real scenarios to nail down understanding, let customers play with concrete working implementation as early as possible</li>
<li><strong>Help to visualize ideas</strong> &#8211; one image is worth thousands words &#8211; build prototypes, wireframes, draw on paper</li>
</ol>
<h4>Credible</h4>
<div>
<p><img class="alignnone" src="http://softwarecreation.org/images/2010/einstein.jpg" alt="" width="300" height="180" /></p>
</div>
<p>People will believe in your ideas only if they are credible. Establish credibility with</p>
<ol>
<li><strong>Facts, statistics and arguments</strong> &#8211; build a strong case for your idea, provide clear explanation and rationale</li>
<li><strong>Proven solutions</strong> &#8211; reference similar ideas that are already implemented and successfully working</li>
<li><strong>Past success</strong> &#8211; quotes, testimonials and live examples of your previous solutions; use Sinatra test: <em>if you </em><em>can make it there, you </em><em>can make it anywhere </em>(he referred to success in New York)</li>
<li><strong>Reliable methods</strong> &#8211; disclose your QA and verification process, monitoring and troubleshooting procedures; build trust in your ability to deliver quality implementation</li>
<li><strong>Control and transparency</strong> &#8211; give impression of control to your clients by providing testable solutions and full information to understand and manage the system independently.</li>
</ol>
</div>
<div>
<h4>Emotional</h4>
<div>
<p><img class="alignnone" src="http://softwarecreation.org/images/2010/goal.jpg" alt="" width="140" height="200" /></p>
</div>
<p>People can do wonders if they care. They will care about your ideas if you wake their emotions and feelings. Emotions motivate and move us.</p></div>
<ol>
<li><strong>Make ideas connected with people, not abstractions</strong>. Tell them about Joe who was frustrated with our search or Jenny who was so excited with our website new features.</li>
<li><strong>Appeal to the senses of responsibility and professional dignity</strong> &#8211; make people conscience aware about quality problems, system security concerns, low user satisfaction</li>
<li><strong>Use self-interest</strong> &#8211; what is in this idea for the person: survival in the company, career growth opportunity or interesting challenge</li>
<li><strong>Appeal to identity</strong> &#8211; people care about their image and status: &#8220;what could someone like me do in this situation?&#8221; <em>A good developer not only cares about working code, but also about usability of a solution.</em></li>
</ol>
<div>
<h4>Stories</h4>
<div>
<p><img class="alignnone" src="http://softwarecreation.org/images/2010/storyteller.jpg" alt="" width="179" height="200" /></p>
</div>
<p>Stories are the best and oldest communication tool. The brain even process them differently (with <a id="sive" title="episodic memory" href="http://en.wikipedia.org/wiki/Episodic_memory">episodic memory</a>). We remember stories longer and recall them better. Stories are</p>
<ol>
<li><strong>Inspirations</strong> &#8211; <em>about a developer who build overnight prototype of super fast search fixing most frequent complain for past year.</em></li>
<li><strong>Simulations</strong> &#8211; <em>about crashes of the system and hours of downtime, long desperate troubleshooting under guns of management that were caused by a small bug with infinite loop</em></li>
<li><strong>Lessons</strong> &#8211; <em>about the programmer who committed code without testing</em></li>
<li><strong>Awareness</strong> &#8211; <em>about users who couldn&#8217;t figure out how to complete simple tasks on a website</em></li>
</ol>
<h3>Finally,</h3>
<p>Programmers expertise grows not only with increased technical knowledge, but also with ability to transform and communicate ideas. Expert programmers know how to make their ideas interesting, working and successful.</p></div>
<div>In short, their ideas are</div>
<div>
<ul>
<li><strong>simple &#8211; </strong>to understand</li>
<li><strong>unexpected &#8211; </strong>to pay attention</li>
<li><strong>concrete </strong>- to make sense</li>
<li><strong>credible </strong>- to believe</li>
<li><strong>emotional &#8211; </strong>to care</li>
<li><strong>stories </strong>- to remember</li>
</ul>
<p>I wish you many great ideas that people will love, remember and follow.</p>
<p><strong>Reference:</strong></p>
<div><a id="jo9y" title="Made to Stick: Why Some Ideas Survive and Others Die" href="http://www.amazon.com/gp/product/1400064287?ie=UTF8&amp;tag=softwcreatmys-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=1400064287">Made to Stick: Why Some Ideas Survive and Others Die</a>, Chip Heath, Dan Heath</div>
</p>
</div>
<img src="http://softwarecreation.org/?ak_action=api_record_view&id=106&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://softwarecreation.org/2010/how-to-become-an-expert-making-ideas-stick/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>What do programmers really do?</title>
		<link>http://softwarecreation.org/2009/what-do-programmers-really-do/</link>
		<comments>http://softwarecreation.org/2009/what-do-programmers-really-do/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 00:21:28 +0000</pubDate>
		<dc:creator>Andriy Solovey</dc:creator>
				<category><![CDATA[Concepts]]></category>
		<category><![CDATA[Job]]></category>
		<category><![CDATA[People]]></category>

		<guid isPermaLink="false">http://softwarecreation.org/2009/what-do-programmers-really-do/</guid>
		<description><![CDATA[Computers are useless. They can only give you answers. &#8211; Picasso Many people (including my mother-in-law) think that computers are becoming so smart that programmers will be no longer needed in the near future. Other people think that programmers are geniuses who constantly solve sophisticated math puzzles in front of their monitors. Even many programmers [...]]]></description>
			<content:encoded><![CDATA[<p><em>Computers are useless. They can only give you answers.</em> &#8211; Picasso</p>
<p>Many people (including my mother-in-law) think that computers are becoming so smart that programmers will be no longer needed in the near future. Other people think that programmers are geniuses who constantly solve sophisticated math puzzles in front of their monitors. Even many programmers don&#8217;t have clear idea what they do.</p>
<p>In this post I want to provide some explanation to uninformed people what programmers really do:</p>
<blockquote><p><strong>Programmers are translators of human ideas into the language of computers.</strong></p></blockquote>
<p>They are a link between two worlds &#8211; human and computers. Do you think it is easy to maintain this link?</p>
<p><img src="http://softwarecreation.org/images/2009/translator.jpg" height="500" width="500" /></p>
<p><span id="more-85"></span></p>
<h3>Human World Background</h3>
<p><em>The problem with people is that they&#8217;re only human.</em> -  Bill Watterson</p>
<p>Humans are product of biological evolution and have a unique and precious organ for producing ideas for programmers &#8211; the brain. The brain is a complex combination of neocortex (unique to humans) and older structures inherited from mammals and reptiles. Older brain structures are mostly responsible for reproduction (sex) and survival (finding food or escaping danger). Neocortex evolved to support these function better, however it started to cause strange side effects &#8211; consciousness, thinking and curiosity. Thanks to these effects humans invented civilization and thousands years later computers.</p>
<p>Somebody could believe that after thousands years of development humans should become completely dull, predictable and rational species, but it didn&#8217;t happen &#8211; their old brain structures, complex psychology and social behavior often make people irrational, unpredictable and deceiving. In addition, humans have poor memory, strong emotions and personal interests. However, programmers don&#8217;t have choice of working with more rational species and have to work with human beigns to translate their ideas into the language of computers.</p>
<h3>Computer World Background</h3>
<p><em>Part of the inhumanity of the computer is that, once it is competently programmed and working smoothly, it is completely honest.</em> &#8211;  Isaac Asimov</p>
<p>A computer is the best invention of human civilization. It consist of CPU, motherboard, memory, hard drive, monitor and <a href="http://en.wikipedia.org/wiki/Computer_hardware" title="some other parts" id="uump">some other parts</a>. Computers moved our civilization to the new level, filled our life with meaning and entertainment and compensated weaknesses of our brains. There are good chances that computers will become <a href="http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-2-becoming-intelligent/" title="more intelligent than humans" id="m-o4">more intelligent than humans</a>. (However, I am a bit concerned if computers need human programmers after it happens.)</p>
<p>Modern computers are completely logical, straightforward and obedient. It is pleasure to work with a computer if you know what it should do and how to instruct it. The only problem is that computers will do exactly what you tell them to do. Therefore, you should have very clear ideas and instructions for a computer to avoid feeling miserable when you see your boss or customer.</p>
<h3>Translation Between Humans and Computers</h3>
<p>There are three main challenges in translation:</p>
<ol>
<li><strong>Language ambiguity.</strong> Human language is vague, complex and ambiguous &#8211; for example: &#8220;This program doesn&#8217;t provide good user experience&#8221;. Culture, background and context affect communication and meaning. On the contrary, any computer language is exact, straightforward and context-free.</li>
<li><strong>Levels of details</strong>. Humans communicate often in general terms without many details &#8211; for example: &#8220;I want this f* program work right&#8221;. It allows them to save time and energy, but cause two big problems &#8211; misinterpretation and possibility that important details are missing. And a computer requires all details &#8211; everything should be spelled out.</li>
<li><strong>Thinking style</strong>. Humans often think in terms of needs, outcomes and solutions &#8211; for example, &#8220;This report should run in 2 seconds instead of 2 hours&#8221;. However, computers need algorithms &#8211; sequence of steps how to achieve desired outcomes.</li>
</ol>
<p>In order to write good software, programmers have to overcome these challenges, understand humans and translate their ideas into the computer language.</p>
<h3>Skills of a Super Programmer</h3>
<p><img src="http://softwarecreation.org/images/2009/superman.jpg" /><br />
As we can see a super programmer should have two distinct sets of skills to deal with both worlds.</p>
<p><strong>Understand humans and create solutions:</strong></p>
<ol>
<li><strong>Communication </strong>-ability to establish contact with humans, talk with them without alienating and even heroic attempts to share own opinion.</li>
<li><strong>Meaning </strong>- extract useful information from conversations with humans, decode and make sense from it</li>
<li><strong>Logic </strong>- clearing, removing ambiguity and controversy from human ideas for uncompromising reality of computers</li>
<li><strong>Creativity </strong>- dig, twist and play with human ideas to create good solutions</li>
<li><strong>Design </strong>- wrap programming ideas with human friendly interfaces and convenient interactions</li>
<li><strong>Big Picture</strong> &#8211; know how solutions fit into world of users, business and Universe to make your program useful.</li>
</ol>
<p><strong>Tell computers what to do and build solutions:</strong></p>
<ol>
<li><strong>Logic (again)</strong> &#8211; organize programmer&#8217;s thoughts into cohesive software ideas and instructions for computers</li>
<li><strong>Technology </strong>- uncovering and understanding the black box of technology (black box for 99% of population)</li>
<li><strong>Programming Languages</strong> &#8211; learn the beautiful, logical and unambiguous languages for feeding computers with programmer&#8217;s ideas</li>
<li><strong>Algorithms </strong>- master the most effective ways how a computer can accomplish a task</li>
<li><strong>Modeling  </strong>- create abstractions and models for grasping and manipulating ideas in software code</li>
<li><strong>Practices </strong>(as Refactoring, Unit Testing, Continuous Integration) &#8211; recurrent activities to keep system solid, healthy and possible to change</li>
</ol>
<p>There is a big difference between a human-oriented and hardcore object / system &#8211; oriented programmer.<br />
A programmer who is specialized to work with computers only is a half of the good programmer. Great solutions require skills for <strong>computers</strong><strong> <u>and</u> </strong><strong>human</strong> worlds.  Connect both worlds and become a super good programmer!</p>
<img src="http://softwarecreation.org/?ak_action=api_record_view&id=85&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://softwarecreation.org/2009/what-do-programmers-really-do/feed/</wfw:commentRss>
		<slash:comments>30</slash:comments>
		</item>
		<item>
		<title>Three Dimensions of a Software Programmer: How to get things done</title>
		<link>http://softwarecreation.org/2009/three-dimensions-of-a-software-programmer-how-to-get-things-done/</link>
		<comments>http://softwarecreation.org/2009/three-dimensions-of-a-software-programmer-how-to-get-things-done/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 04:43:40 +0000</pubDate>
		<dc:creator>Andriy Solovey</dc:creator>
				<category><![CDATA[Job]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[People]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Skills]]></category>

		<guid isPermaLink="false">http://softwarecreation.org/2009/three-dimensions-of-a-software-programmer-how-to-get-things-done/</guid>
		<description><![CDATA[What you are as a person is far more important that what you are as a basketball player. &#8211; John Wooden People are amazing, surprising and interesting. They change reality with power of thought and make things happen. What is most exciting &#8211; all people are completely different in their attitudes and behavior. But this [...]]]></description>
			<content:encoded><![CDATA[<p>    <em>What you are as a person is far more important that what you are as a basketball player.</em> &#8211; John Wooden</p>
<p>People are amazing, surprising and interesting. They change reality with power of thought and make things happen. What is most exciting &#8211; all people are completely different in their attitudes and behavior. But this comes with price &#8211; it is difficult to understand people and even more difficult to find the best way to deal with them.<br />
Many people, who see programmers as extensions of their computer systems, will be surprised to discover that programmers are amazing individuals too. Programmers exhibit similar to other people behavior, they have different personalities and need individual approach.</p>
<p>I offer in this post a simple theory about <em>Three Dimensions of a Software Programmer</em> that could help to put relations with these individuals on some rational basis.</p>
<p id="fw_e" style="text-align: left"><img src="http://www.softwarecreation.org/images/2009/3DArchetypes.jpg" style="width: 500px; height: 500px" width="500" height="500" /></p>
<h3>Axioms</h3>
<p>There are two basic axioms in foundation of the theory</p>
<ol>
<li><strong>Constancy </strong>- some programmers consistently outperform others under same conditions.</li>
<li><strong>Variability </strong>- performance of a programmer varies under different conditions.</li>
</ol>
<p><span id="more-84"></span></p>
<h3>Talents (constants)</h3>
<p><em>Talents are recurring patterns of thoughts, feelings and behavior that can be productively applied. &#8211; </em><a href="http://www.amazon.com/First-Break-All-Rules-Differently/dp/0684852861" title="First, Break All the Rules: What the World's Greatest Managers Do Differently" id="kq_b">First, Break All the Rules</a><br />
Genes and upbringing form an adult human with specific talents and personality, strengths and weaknesses. These core individual characteristics of a programmer are difficult to change (except some limited success with consumption of large quantities of beer). Programmers are different &#8211; creative, thorough, funny, systematic, laid-back, curious, analytical, spontaneous and so on. Some people cannot be programmers at all.<br />
Each unique programmer has a base performance level that is constant and almost impossible to change.</p>
<h3>Three Dimensions (variables)</h3>
<p>Now we can move to the part of equation that can be changed. Can we make programmers permanently performing above their base level? To answer this question lets review three variables of programmer&#8217;s performance.</p>
<p><img src="http://www.softwarecreation.org/images/2009/energy-icon.gif" style="width: 20px; height: 20px; float: left; margin-left: 0pt; margin-right: 1em" /><strong>X. Energy</strong><br />
<em>measures amount of work and power of ideas that could change and improve reality</em>.<br />
Here I consider a specific kind of energy &#8211; creative positive energy that is directed to build better software and aligned with company and customers goals. Individual&#8217;s desire to act, create and achieve is the source of this energy. As we discussed above, part of this energy is based on character and predetermined. However, there is a big variable component of individual energy that is driven by motivation and environment.</p>
<p><img src="http://www.softwarecreation.org/images/2009/discipline-icon.gif" style="width: 20px; height: 20px; float: left; margin-left: 0pt; margin-right: 1em" /><strong>Y. Discipline</strong><br />
<em>measures ability to focus and follow necessary steps to achieve goals with good quality</em>.<br />
Accountability, self-organization and focus are core elements that keep individuals to perform on a high level. Personality matters here &#8211; some people will promise and forget immediately, give up experiencing first difficulties or become distracted by more interesting tasks. Some will fight until the end and go beyond limits to meet commitments, exceed expectations and bring excellent results. However, significant part of programmer&#8217;s discipline is variable and depends on context and expectations.</p>
<p><img src="http://www.softwarecreation.org/images/2009/expertise-icon.gif" style="width: 20px; height: 20px; float: left; margin-left: 0pt; margin-right: 1em" /><strong>Z. Expertise</strong><br />
<em>measures knowledge and experience in programming, technology and a customer domain.</em><br />
Expertise includes <em>know how</em> to build software, make right decisions and implement good solutions with minimal troubles. There is no doubt that expertise is growing with time, but individual variations are big. Many people consider expertise as the only important characteristic of a programmer. I believe that it has much lower value without two other variables.</p>
<h3>Programmer&#8217;s Archetypes</h3>
<table border="1" bordercolor="#aaaaaa" cellpadding="1" cellspacing="0" width="100%">
<tr>
<td></td>
<td valign="top" width="80"></td>
<td>Energy</td>
<td>Discipline</td>
<td>Expertise</td>
<td>Description</td>
</tr>
<tr>
<td style="font-family: Comic Sans MS; text-align: center; font-size: 14px"><strong>Creator<br />
</strong></td>
<td valign="top">
<p id="ow2o" style="text-align: left"><img src="http://www.softwarecreation.org/images/2009/3D-creator.jpg" style="width: 80px; height: 80px" width="80" height="80" /></p>
</td>
<td style="text-align: center">
<p id="l6jp"><img src="http://www.softwarecreation.org/images/2009/energy-icon.gif" style="width: 20px; height: 20px" /></p>
</td>
<td style="text-align: center">
<p id="yyzo"><img src="http://www.softwarecreation.org/images/2009/discipline-icon.gif" style="width: 20px; height: 20px" /></p>
</td>
<td style="text-align: center">
<p id="ibqr"><img src="http://www.softwarecreation.org/images/2009/expertise-icon.gif" style="width: 20px; height: 20px" /></p>
</td>
<td>Highly productive, creative and successful, know how and what to do; have energy, discipline and desire to accomplish tasks on the highest level</td>
</tr>
<tr>
<td style="font-family: Comic Sans MS; text-align: center; font-size: 14px"><strong> Enthusiast<br />
</strong></td>
<td valign="top">
<p id="xdnc" style="text-align: left"><img src="http://www.softwarecreation.org/images/2009/3D-enthusiast.jpg" style="width: 80px; height: 80px" width="80" height="80" /></p>
</td>
<td style="text-align: center">
<p id="l6jp"><img src="http://www.softwarecreation.org/images/2009/energy-icon.gif" style="width: 20px; height: 20px" /></p>
</td>
<td style="text-align: center">
<p id="yyzo"><img src="http://www.softwarecreation.org/images/2009/discipline-icon.gif" style="width: 20px; height: 20px" /></p>
</td>
<td style="text-align: center">-</td>
<td>Great drive and energy to make things happen; however makes unnecessary mistakes and poor decisions</td>
</tr>
<tr>
<td style="font-family: Comic Sans MS; text-align: center; font-size: 14px"><strong> Artist<br />
</strong></td>
<td valign="top">
<p id="a0t6" style="text-align: left"><img src="http://www.softwarecreation.org/images/2009/3D-artist.jpg" style="width: 80px; height: 80px" width="80" height="80" /></p>
</td>
<td style="text-align: center">
<p id="l6jp"><img src="http://www.softwarecreation.org/images/2009/energy-icon.gif" style="width: 20px; height: 20px" /></p>
</td>
<td style="text-align: center">-</td>
<td style="text-align: center">
<p id="ibqr"><img src="http://www.softwarecreation.org/images/2009/expertise-icon.gif" style="width: 20px; height: 20px" /></p>
</td>
<td>A talented and experienced individual who could create great solutions; however inconsistent and unpredictable</td>
</tr>
<tr>
<td style="font-family: Comic Sans MS; text-align: center; font-size: 14px"><strong> Doer </strong></td>
<td style="text-align: center">
<p id="a0t6" style="text-align: left"><img src="http://www.softwarecreation.org/images/2009/3D-doer.jpg" style="width: 80px; height: 80px" width="80" height="80" /></p>
</td>
<td style="text-align: center">-</td>
<td style="text-align: center">
<p id="yyzo"><img src="http://www.softwarecreation.org/images/2009/discipline-icon.gif" style="width: 20px; height: 20px" /></p>
</td>
<td style="text-align: center">
<p id="ibqr"><img src="http://www.softwarecreation.org/images/2009/expertise-icon.gif" style="width: 20px; height: 20px" /></p>
</td>
<td>A disciplined and knowledgeable programmer, who is strong in implementation, but lacks creativity and drive</td>
</tr>
<tr>
<td style="font-family: Comic Sans MS; text-align: center; font-size: 14px"><strong>Noise Maker </strong></td>
<td valign="top">
<p id="yv.b" style="text-align: left"><img src="http://www.softwarecreation.org/images/2009/3D-noise-maker.jpg" style="width: 80px; height: 80px" width="80" height="80" /></p>
</td>
<td style="text-align: center">
<p id="l6jp"><img src="http://www.softwarecreation.org/images/2009/energy-icon.gif" style="width: 20px; height: 20px" /></p>
</td>
<td style="text-align: center">-</td>
<td style="text-align: center">-</td>
<td>A lot of energy and movement without much useful results</td>
</tr>
<tr>
<td style="font-family: Comic Sans MS; text-align: center; font-size: 14px"><strong> Bureaucrat<br />
</strong></td>
<td valign="top">
<p id="f.um" style="text-align: left"><img src="http://www.softwarecreation.org/images/2009/3D-bureaucrat.jpg" style="width: 80px; height: 80px" width="80" height="80" /></p>
</td>
<td style="text-align: center">-</td>
<td style="text-align: center">
<p id="yyzo"><img src="http://www.softwarecreation.org/images/2009/discipline-icon.gif" style="width: 20px; height: 20px" /></p>
</td>
<td style="text-align: center">-</td>
<td>Consistent and rational, but does not have creative energy and knowledge to be productive</td>
</tr>
<tr>
<td style="font-family: Comic Sans MS; text-align: center; font-size: 14px"><strong> Sage<br />
</strong></td>
<td valign="top">
<p id="ddpc" style="text-align: left"><img src="http://www.softwarecreation.org/images/2009/3D-sage.jpg" style="width: 80px; height: 80px" width="80" height="80" /></p>
</td>
<td style="text-align: center">-</td>
<td style="text-align: center">-</td>
<td style="text-align: center">
<p id="ibqr"><img src="http://www.softwarecreation.org/images/2009/expertise-icon.gif" style="width: 20px; height: 20px" /></p>
</td>
<td>Deep knowledge and vast experience without willigness to perform and change anything</td>
</tr>
<tr>
<td style="font-family: Comic Sans MS; text-align: center; font-size: 14px"><strong> Lost soul<br />
</strong></td>
<td valign="top">
<p id="a3w9" style="text-align: left"><img src="http://www.softwarecreation.org/images/2009/3D-lost-soul.jpg" style="width: 80px; height: 80px" width="80" height="80" /></p>
</td>
<td style="text-align: center">-</td>
<td style="text-align: center">-</td>
<td style="text-align: center">-</td>
<td>Don&#8217;t want to do anything and don&#8217;t know how to do it anyway</td>
</tr>
</table>
<p><a href="http://kael.civfanatics.net/" class="photocredit" title="FfHII" id="g4u5">FfHII</a></p>
<h3>How to Improve</h3>
<p>A programmer can be 10 times more productive than other programmer and 10 times more productive than himself under different conditions. Therefore right people under right conditions could be 100 times more productive than others.</p>
<p>How can you influence programmer&#8217;s performance with these three dimensions? Hopefully, you found right people with right talents. It is a waste of time to change personality and push in direction where talent is absent. However, it is possible to amplify natural strengths and create conditions for super productivity.</p>
<p><img src="http://www.softwarecreation.org/images/2009/energy-icon.gif" style="width: 20px; height: 20px; float: left; margin-left: 0pt; margin-right: 1em" width="20" height="20" /><strong>Energy</strong><br />
goal: <em>make people empowered, motivated, interested and satisfied; engage them to perform above their base level of energy</em></p>
<p><u>job design</u></p>
<ul>
<li>  interesting work &#8211; brings inspiration and motivation</li>
<li>control &#8211; over own work and decisions &#8211; pushes people forward</li>
<li>self-organization &#8211; opportunities to find own ways that bring best results</li>
<li>creative tension &#8211; goals on the edge of capabilities to focus energy and open new energy sources</li>
<li>defined outcomes &#8211; clear direction that reduces anxiety and doubt and increases productivity</li>
</ul>
<p><u>psychology</u></p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Flow_%28psychology%29" title="flow" id="c9qo">flow</a> &#8211; put mind in a state of energized focus, full involvement, and success</li>
<li>  positive experience &#8211; good emotions and healthy team relations; comfortable and trusted environment</li>
<li>personal interests &#8211; decision making considers and takes care of individual interests</li>
<li>right incentives  &#8211; <a href="http://softwarecreation.org/2007/fair-compensation-for-programmers-is-it-possible/" title="compensation" id="iobi">compensation</a>, rewards, recognition are the great source of energy and motivation</li>
</ul>
<p><u>environment</u></p>
<ul>
<li>  space for mistakes &#8211; tolerance and open ways to fix mistakes make people think about moving forward instead of covering assess</li>
<li>  productive environment &#8211; where people think about work instead of nuisances</li>
<li>fit &#8211; between personal and company goals, culture and views &#8211; amplify people desire to work</li>
<li>reasonable pressure &#8211; normal workload, minimal stress, time slack to avoid energy drains</li>
</ul>
<p><img src="http://www.softwarecreation.org/images/2009/discipline-icon.gif" style="width: 20px; height: 20px; float: left; margin-left: 0pt; margin-right: 1em" /><strong>Discipline<br />
</strong>goal: <em>make people focused, responsible and aligned; make them performing in the right way</em></p>
<p><u>support system</u></p>
<ul>
<li>established process &#8211; align actions with goals and support their execution (Agile is the best way to go)</li>
<li>transparency &#8211; reasons for decisions should be clear, problems should surface quickly</li>
<li>pull system (<a href="http://en.wikipedia.org/wiki/Kanban" title="kanban" id="cggp">kanban</a>) &#8211; signaling system to trigger action based on actual needs</li>
<li>  control mechanisms, check and balances, audit, risk management (e.g. iterations)</li>
</ul>
<p><u>zone of responsibility </u></p>
<ul>
<li>clear areas of responsibility &#8211; what is included and what is not</li>
<li>balance of responsibility and authority &#8211; adequate authority to accomplish goals; restrictions to avoid damage</li>
<li>  <a href="http://en.wikipedia.org/wiki/Rules_of_engagement" title="rules of engagements" id="gyw1">rules of engagements</a>  &#8211; when, where, and how force (bold actions) shall be used</li>
<li>  match confidence with responsibilities &#8211; an individual is prepared and ready for the new responsibilities</li>
</ul>
<p><u>standards</u></p>
<ul>
<li>  safety regulations &#8211; mandatory rules for everyone</li>
<li>professional standards &#8211; recommended parameters of work and products (security, performance, availability, etc.)</li>
<li>best practices &#8211; spread approaches that work</li>
</ul>
<p><img src="http://www.softwarecreation.org/images/2009/expertise-icon.gif" style="width: 20px; height: 20px; float: left; margin-left: 0pt; margin-right: 1em" /><strong>Expertise</strong><br />
goal: <em>make people knowledgeable, experienced and growing based on their talents</em></p>
<p><u>career</u></p>
<ul>
<li><a href="http://softwarecreation.org/2007/how-to-be-happy-at-work-short-tutorial/" title="right career path" id="ypa_">right career path</a> &#8211; built on persons strengths &#8211; enable growth in area of competence and natural strengths without switching into paths that don&#8217;t match talents (e.g. management). Avoid consequences of raising to the level of incompetence (<a href="http://en.wikipedia.org/wiki/Peter_Principle" title="Peter Principle" id="hviz">Peter Principle</a>).</li>
<li>broadbanding &#8211; build levels of achievements and pay schemes that allow to achieve and earn more within the same profession</li>
<li>  match expertise and challenges- keep people always interested and challenged, avoid boring or over complicated tasks</li>
<li>assist self-discovery &#8211; help search for the better career and role</li>
</ul>
<p><u>perspective</u></p>
<ul>
<li>  diversity in tasks and activities &#8211; accelerates growth and understanding</li>
<li>  big picture, direct communication with customer &#8211; informed people make more optimal decisions</li>
<li>exposure to different subject areas &#8211; broader knowledge opens new possibilities and solutions outside the narrow specialization</li>
</ul>
<p><u>learning and practice</u></p>
<ul>
<li>  feedback loop &#8211; continuous evaluation and improvements based on feedback</li>
<li>opportunities for learning &#8211; grow expertise beside direct work tasks</li>
<li>sharing, coaching, communication &#8211; peer and experts access and support for growth</li>
</ul>
<p>There is no standard way to increase performance of an individual programmer. Each individual is unique and requires personal approach. The theory of Three Dimensions of a Software Programmer suggests framework for these approaches.<br />
It takes a huge effort to understand every programmer in your team individually and craft personalized approach, path and conditions. But it makes sense to do. <strong>People will be productive, engaged and happy. The company will grow and succeed.</strong></p>
<p>What could be a better outcome in our civilized hard working world?</p>
<img src="http://softwarecreation.org/?ak_action=api_record_view&id=84&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://softwarecreation.org/2009/three-dimensions-of-a-software-programmer-how-to-get-things-done/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>How to become an Expert. Embrace Reality.</title>
		<link>http://softwarecreation.org/2009/how-to-become-an-expert-embrace-reality/</link>
		<comments>http://softwarecreation.org/2009/how-to-become-an-expert-embrace-reality/#comments</comments>
		<pubDate>Tue, 12 May 2009 04:19:01 +0000</pubDate>
		<dc:creator>Andriy Solovey</dc:creator>
				<category><![CDATA[Concepts]]></category>
		<category><![CDATA[Expertise]]></category>
		<category><![CDATA[People]]></category>
		<category><![CDATA[Practices]]></category>
		<category><![CDATA[Skills]]></category>

		<guid isPermaLink="false">http://softwarecreation.org/2009/how-to-become-an-expert-embrace-reality/</guid>
		<description><![CDATA[Reality is merely an illusion, albeit a very persistent one &#8211; Albert Einstein An expert have much better models of reality and methods to build them than an ordinary specialist. The expert, armed with these models, can quickly put pieces of a problem puzzle together, find explanations and solve the problem. Models can be related [...]]]></description>
			<content:encoded><![CDATA[<p><em>Reality is merely an illusion, albeit a very persistent one</em> &#8211; Albert Einstein</p>
<p>An expert have much better models of reality and methods to build them than an ordinary specialist. The expert, armed with these models, can quickly put pieces of a problem puzzle together, find explanations and solve the problem.</p>
<p id="ejcw" style="text-align: left"><img src="http://softwarecreation.org/images/2009/expert-models.jpg" width="600" height="600" /></p>
<p>Models can be related to anything &#8211; software systems, business domain or your personal relationships. <span id="more-83"></span></p>
<h3><strong>Predictions and </strong><strong>Solutions!</strong></h3>
<blockquote><p><em>A theory is a good theory if it satisfies two requirements: It must accurately describe a large class of observations on the basis of a model that contains only a few arbitrary elements, and it must make definite predictions about the results of future observations.</em></p>
<p align="right">Stephen Hawking, A Brief History of Time</p>
</blockquote>
<p>Any expert as good as he can effectively predict future outcomes and solve new unforeseen problems. Solutions and predictions are not coming out of blue. They stem from good understanding of reality in an expert&#8217;s head. Internal models of reality help to explain problems, find relations and play with future scenarios. These models establish the base for effective thinking and direct expert&#8217;s effort to solve problems. If you have poor models of reality, you will make bad decisions. Good models of reality allow reliable predictions and efficient solutions than vague guesses and ad-hoc spontaneous fixes.</p>
<p>Characteristics of a good model:</p>
<ol>
<li><strong>Explanation </strong>- provides understanding of elements, processes, events, root causes and effects</li>
<li><strong>Testable predictions </strong>- a model that makes no predictions that can be observed is not a useful model.</li>
<li><strong>Simple </strong>- you can remember and use a model without titanic effort</li>
<li><strong>Frameworks </strong>- knowledge how to recognize common patterns and deal with range of similar problems. Frameworks allow to extend and apply existing models to new situations without building new models.</li>
</ol>
<h3>Brains &#8211; the main tool of an expert</h3>
<p><em>I think, therefore I am</em> &#8211; Rene Descartes</p>
<p>An expert&#8217;s brain carry and operates with models of reality. Unfortunately, our brains are not ideal for this task. Models they create are not identical to reality. Here is why.</p>
<p><strong>limitations</strong></p>
<ul>
<li><em>perception </em>- our senses deliver to brain partial and incomplete information</li>
<li><em>memory </em>- our brains can process and memorize only fraction of available information; and even more &#8211; we quickly forget this knowledge without practice</li>
<li><em>imagination </em>- brains automatically filling gaps for missing information, substitute with interpretation based on internal representation of the outside world</li>
</ul>
<p><strong>cognitive biases</strong> (bugs in brain software)</p>
<ul>
<li><em>anchoring or priming</em> &#8211; previous irrelevant experiences prime your consequent thinking and decisions</li>
<li><em>need for closure</em> &#8211; we are uncomfortable with doubt and uncertainty; we have urge to resolve and find convenient explanations quickly without much thinking</li>
<li><em>confirmation bias</em> -  from all facts we unconsciously pick facts that confirm our beliefs and predispositions</li>
<li><em>symbolic reduction</em> &#8211; we are anxious to reduce complexity for better understanding and tend to form simplified generalizations ignoring complex details and relations.</li>
<li>and <a href="http://en.wikipedia.org/wiki/List_of_cognitive_biases" title="many others" id="fa5u">many others</a></li>
</ul>
<p><strong>social behavior</strong></p>
<ul>
<li><em>subconscious models and believes</em> &#8211; our minds carry beliefs and views imposed by our parents, teachers and culture.  These subconscious models deeply influence our models of reality without much awareness.</li>
<li><em>peer pressure, conformity</em> &#8211; our minds are wired to conform and agree with other people making us blind for inconvenient facts, ready to follow crowd and accept conventional views without critical revision</li>
</ul>
<h3><strong>Objective Reality</strong></h3>
<p><em>There are no facts, only interpretations.</em>  &#8211; Friedrich Nietzsche</p>
<p>Even smartest brains will have challenges to understand reality.</p>
<p>We deal with <strong>complex situations</strong>:</p>
<ul>
<li><em>incomplete information</em> &#8211; we rarely have access to full information and even if it is available we don&#8217;t have capacity to collect and absorb all of it</li>
<li><em>perpetual changes</em> &#8211; reality is very fluid and changes every second</li>
<li><em>complex relations and behavior</em> &#8211; complex systems are difficult to understand: causes and effects, correlations, feedback loops, influence of processes in external systems</li>
<li><em>difficult to test</em> &#8211; we often cannot afford large number of experiments, trials and errors to come up with right models and explanations</li>
</ul>
<p>We deal with <strong>people</strong> who make our reality very complicated:</p>
<ul>
<li><em>unpredictable </em>- people are difficult to predict, they are often irrational and inconsistent</li>
<li><em>confusing </em>- people cannot clearly explain their thinking and feelings or even don&#8217;t understand themselves</li>
<li><em>deceiving </em>- sometimes people have difficulty to tell truth or simply lie for own advantage</li>
</ul>
<h3><strong>Building Models</strong></h3>
<p><em>The test of a first-rate intelligence is the ability to hold two opposed ideas in the mind at the same time, and still retain the ability to function.</em> -  F. Scott Fitzgerald</p>
<p>We understand reality different ways &#8211; learning, investigating problems, finding new solutions and practicing. For years we can concentrate on solving immediate problems and do our work without attempts to understand the big picture. Many good specialists have incomplete understanding and fragmented knowledge that still allow to perform well. But it is impossible to become an expert without deep understanding and conscious effort to build good models of reality.</p>
<p>For example, we can stumble for a long time with challenges and failures in building software without understanding its <a href="http://softwarecreation.org/2007/what-is-software-development/" title="essence" id="y:mc">essence</a>  and <a href="http://softwarecreation.org/2007/human-forces-and-software-creators/" title="forces" id="iufv">forces</a>. (By the way, search for this understanding is the reason for this blog existence).</p>
<p>Potentially everything what we do in life could help to build and improve our models of reality. We just need to consciously relate our experience and learning to our understanding of reality. And we can do it on the go without special preparation, when we actively engage our minds &#8211; working, talking, reading, practicing, traveling, thinking and even sleeping. Just focus on reality modeling.</p>
<p>The models of reality could be explicit (<strong>facts and theories</strong>) and implicit (<strong>intuition and tacit knowledge</strong>).<br />
<img src="http://softwarecreation.org/images/2009/models-composition.jpg" width="300" height="300" /></p>
<p>You can use several strategies to build models in your whole mind.<br />
<strong>A. Analytical</strong></p>
<ul>
<li>find what is most important, map and connect main elements, players and subsystems; learn relations; draw Mind Maps</li>
<li>understand influence of context and main forces</li>
<li>create stories, metaphors and patterns &#8211; make your models better suited for your brain</li>
<li>repeat the process for the most important subsystems</li>
</ul>
<p><strong>B. Empirical</strong></p>
<ul>
<li>find most pressing problems, contradictions or real life facts</li>
<li>understand how do they fit into your models of reality</li>
<li>it is great if they don&#8217;t fit &#8211; you have opportunity to improve your models</li>
</ul>
<p><strong>C. Synthesis</strong> &#8211; reconcile your models with existing knowledge and leading models</p>
<ul>
<li>find what are dominating models, views and believes; what other experts think</li>
<li>critically analyze this information and theories behind</li>
<li>find the best opposing theories and try to combine them to form better model</li>
</ul>
<p><strong>D.</strong> <strong><a href="http://en.wikipedia.org/wiki/Scientific_method" title="Scientific method" id="yk9g">Scientific method</a> </strong> &#8211; use it for practical evaluation of models and confirmation of your theories.</p>
<ul>
<li>build hypothesis about reality and outcomes of your actions</li>
<li>test it in practice</li>
<li>learn from results and adjust your models</li>
</ul>
<p><strong>E. People interests and agenda</strong> &#8211; people are often most surprising and unpredictable element of reality. Your models will be much closer to reality if you understand motives, interests and agenda of involved people.<br />
<strong>F. Change perspective</strong> &#8211; switch different perspectives to enrich models &#8211; economic, emotional, social, physical, etc. Try to view from opposite viewpoints and set of principles. Imagine yourself as user of your system, investor of your company, manager, any animal, computer part, etc. (Try to get back without loosing your identity :))  Web developers have interesting concepts of <a href="http://en.wikipedia.org/wiki/Personas" title="Personas" id="dujl">Personas</a> &#8211; imaginary users with distinct behavior on website that help to design a system for various cohesive sets of needs.<br />
<strong>G.</strong> <strong><a href="http://en.wikipedia.org/wiki/Lateral_thinking" title="Lateral thinking" id="u._z">Lateral thinking</a> </strong></p>
<ul>
<li>random association &#8211; associate models with recent books, distant knowledge fields, your favorite characters</li>
<li>provocative thinking &#8211; make unacceptable, funny, stupid ways to explain problems and shock your models</li>
<li>ask &#8220;why?&#8221; &#8211; continue asking &#8216;why&#8217; until your reach questions that nobody could answer on this Earth (or the only answer is <a href="http://en.wikipedia.org/wiki/Phrases_from_The_Hitchhiker%27s_Guide_to_the_Galaxy#Answer_to_Life.2C_the_Universe.2C_and_Everything_.2842.29" title="42" id="pc2c">42</a>).</li>
<li>expand concepts borrowed from other sources to have wider horizon for ideas</li>
</ul>
<p>In overall, you will switch between <a href="http://softwarecreation.org/2008/ideas-in-software-development-revolution-vs-evolution-part-1/" title="two grand strategies" id="xpdh">two grand strategies</a> &#8211; Evolution (discover reality and adopt to it) and Revolution (breakthrough and change reality). The choice depends on models maturity, certainty and your people capabilities.</p>
<h3>Therefore</h3>
<p><em>Few people have the imagination for reality.</em>  &#8211; Johann Wolfgang von Goethe</p>
<p>You can be certain that reality in your head is different from objective reality, which is complex, changing and controversial. Effective experts don&#8217;t have choice and master reality by<br />
1. Accepting own limitations in understanding of elusive reality<br />
2. Building good models of reality applying different strategies<br />
3. Using, testing and improving models in practice</p>
<p>Good models of reality will make your thinking, decisions and solutions much better. They will make you a master of reality instead of a victim of reality. Good luck with embracing reality!<br />
<strong>References:</strong><br />
<a href="http://www.amazon.com/gp/product/1422118924?ie=UTF8&amp;tag=softwcreatmys-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=1422118924" title="The Opposable Mind: How Successful Leaders Win Through Integrative Thinking" id="ri0p">The Opposable Mind: How Successful Leaders Win Through Integrative Thinking</a> , by Roger L. Martin<br />
<a href="http://www.amazon.com/gp/product/1934356050?ie=UTF8&amp;tag=softwcreatmys-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=1934356050" title="Pragmatic Thinking and Learning: Refactor Your Wetware" id="n9_c">Pragmatic Thinking and Learning: Refactor Your Wetware</a>, by Andy Hunt</p>
<img src="http://softwarecreation.org/?ak_action=api_record_view&id=83&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://softwarecreation.org/2009/how-to-become-an-expert-embrace-reality/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>How to Become an Expert. Top 7 Qualities</title>
		<link>http://softwarecreation.org/2009/how-to-become-an-expert-top-7-qualities/</link>
		<comments>http://softwarecreation.org/2009/how-to-become-an-expert-top-7-qualities/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 04:43:23 +0000</pubDate>
		<dc:creator>Andriy Solovey</dc:creator>
				<category><![CDATA[Expertise]]></category>
		<category><![CDATA[People]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Skills]]></category>

		<guid isPermaLink="false">http://softwarecreation.org/2009/how-to-become-an-expert-top-7-qualities/</guid>
		<description><![CDATA[Experts do not need rules to make decisions. They have qualities that allow them to consistently make good decisions and show high level of performance under different circumstances without any rules. This post discusses these core qualities that turn a novice into an expert. Definitions rule: prescribed guide for conduct or action intuition: instinctive knowing [...]]]></description>
			<content:encoded><![CDATA[<p>Experts do not need rules to make decisions. They have qualities that allow them to consistently make good decisions and show high level of performance under different circumstances without any rules. This post discusses these core qualities that turn a novice into an expert.</p>
<p><img src="http://softwarecreation.org/images/2009/novice-expert.jpg" /></p>
<p><strong>Definitions</strong><br />
<strong>rule:</strong> prescribed guide for conduct or action<br />
<strong>intuition:</strong> instinctive knowing (without the use of rational processes)<br />
<strong><a href="http://en.wikipedia.org/wiki/Tacit_knowledge" title="tacit knowledge" id="v:.:">tacit knowledge</a>:</strong> automatic, unexpressed knowledge that provides context for people, places, ideas, and experiences. Tacit knowledge is not easily shared. As Polanyi said: &#8220;We know more than we can tell.&#8221;<br />
<strong>context</strong>: the set of circumstances or facts that surround a particular event, situation, etc.</p>
<h3>Problems with rules</h3>
<p>Most rules didn&#8217;t come from heaven. They come from ordinary people. They are product of <strong>practice, theories, traditions and fear</strong>.<br />
Problems:</p>
<ul>
<li><strong>context-free</strong> &#8211; rules reflect standard situations without considering your specific circumstances</li>
<li><strong>limited verification</strong> &#8211; most rules are empirical and do not pass vigorous analysis, strict prove and experiments</li>
<li><strong>time sensitive</strong> &#8211; many rules become outdated quickly in dynamic professions, industries and societies</li>
<li><strong>overcautious</strong> &#8211; fear fuels many rules and seeks to protect from the worst scenario, often imaginable</li>
<li><strong>low skills denominator</strong> &#8211; rules tuned to match capabilities of the majority without accounting for individual strengths and weaknesses</li>
<li><strong>misinterpretation</strong> &#8211; tacit knowledge of experts, which forms base for many rules, is <a href="http://en.wikipedia.org/wiki/Tacit_knowledge" title="difficult to transfer" id="ntk5">difficult to transfer</a> in correct and understandable form</li>
</ul>
<p><span id="more-82"></span></p>
<h3>Core 7 Qualities of the Expert</h3>
<p><strong>1. </strong><strong>Motivation. </strong><strong>Believe in self. Energy. Unsatisfaction</strong><br />
<em>Motivation appears to be a more important factor than innate ability in the development of expertise.</em><em> &#8211; </em><a href="http://www.sciam.com/article.cfm?id=the-expert-mind" id="vu87" title="Scientific American">Scientific American</a></p>
<p>You have to believe in self to become a successful expert. An expert need strength, energy and motivation to go beyond ordinary performance levels.<br />
Top performers in different disciplines do this &#8211; envision own success and prepare their minds to achieve higher levels. Thinking <a href="http://www.amazon.com/gp/product/0345472322?ie=UTF8&amp;tag=softwcreatmys-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=0345472322" title="can " id="fziu">can &#8220;wire&#8221;</a>  our brains for developing new capabilities and success.<br />
<strong>Questions:</strong> Am I ready? How can I boost my strength, energy and motivation? How will I succeed?</p>
<p><strong> 2. Hard Work. Discipline. Focus.</strong><br />
<em> The differences between expert performers and normal adults reflect a life-long period of deliberate effort to improve performance in a specific domain.</em> &#8211; <a href="http://projects.ict.usc.edu/itw/gel/EricssonDeliberatePracticePR93.pdf" id="pxqg" title="Anders Ericsson">Anders Ericsson</a></p>
<p>Hard work is not as difficult after you start and dive into it. Often the problem is that you cannot start or concentrate. Procrastination ruins your progress. There are many barriers for focused and productive work:</p>
<ul>
<li><strong>pressure and stress</strong> kills productivity</li>
<li><strong>low interest</strong> &#8211; without engaged mind your brain will resist to form knowledge</li>
<li><strong>multitasking</strong> &#8211; takes away precious concentration and mindset needed for productive work</li>
<li><strong>unclear goals</strong> &#8211; disoriented mind cannot focus effectively</li>
<li><strong>no specific time</strong>  &#8211; you will tend to postpone, delay and miss practice without strictly scheduled time</li>
<li><strong>distractions</strong> &#8211; inconvenient  environment and frequent interruptions don&#8217;t help</li>
</ul>
<p>New Scientist had an advice <a href="http://www.newscientist.com/article/mg19926732.000-the-origins-of-willpower.html?page=3" title="how to get a grip on yourself" id="we5g">how to get a grip on yourself</a> and strengthen willpower. The main ideas &#8211; willpower is limited resource, easily depleted; it requires planning, boost and  practice.</p>
<p>Also, keep yourself interested. Switch if you start loosing focus and interest. Reboot. Have prepared practices in different areas to enable fresh start for your mind.<br />
<strong>Questions:  </strong>How do I maintain focus, stay committed and interested? Do I have clear goals, action plan and productive environment?</p>
<p><strong>3. Think critically. Think as a beginner</strong><br />
<em>In the beginner&#8217;s mind there are many possibilities, but int the expert there are few</em> &#8211; Suzuki Roshi</p>
<p>As an expert you cannot go with the flow, believe everything and hide behind authoritative opinions. You cannot stick with your own views forever without changing them. You have to think critically: challenge beliefs, existing theories and dominant ideas. Some of them are completely wrong. Many of them have flaws and can be improved. Most of them are not the best in your specific context.<br />
<a href="http://en.wikipedia.org/wiki/5_Whys" id="dzy-" title="5 Whys">5 Whys</a> is an excellent method to discover reality.<br />
Better unforeseen solutions exist if you look for them. If you don&#8217;t think critically, you will be a follower without much chances to grow your ideas and find better solutions. Keep your mind open and question ideas including your own.<br />
<strong>Questions:</strong>  What are hard facts, assumptions and theories? What should I trust, dismiss or verify?</p>
<p><strong>4. Full brain power. Use right brain </strong>(in addition to left).<br />
<em>The right hemisphere synthesizes over space. The left analyzes over time.</em> &#8211; Jerre Levy</p>
<p>Your right brain (more accurately &#8211; right brain mode) is inherited from our animal ancestors and shaped by millions years of evolution. Right brain mode is much more powerful, reliable and faster than left brain mode. Right brain works in parallel with images, subconscious mind and deep vast memory (even when you sleep). On the contrary, left brain works with symbols and words; it is logical, analytical and linear. It can only work with few ideas in the same time (4-7) and needs focus and conscious effort. We need left brain to formulate, express ideas and communicate them to others.<br />
Experts are using both brains &#8211; <strong>left </strong>for rational thinking, analysis and communication, <strong>right </strong>for intuition, imagination and creative insights. One of the best books how to start using you right brain is <a href="http://www.amazon.com/gp/product/0874774241?ie=UTF8&amp;tag=softwcreatmys-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=0874774241" title="The New Drawing on the Right Side of the Brain" id="mnuy">The New Drawing on the Right Side of the Brain</a>.<br />
Learn how to expand your brain power with the right brain mode. If you use only left brain mode, you&#8217;ll stay dull, rational and predictable specialist.<br />
<strong>Questions:</strong> How can I engage my both brain modes? (Hint: interest, humor, senses, emotions, surprise.) What puzzles can I feed to my subconscious mind?</p>
<p><strong>5. Continuous learning. Sharing</strong><br />
<em>The real voyage of discovery consists not in seeking new landscapes but in having new eyes.</em> &#8211; Marcel Proust</p>
<p>Experts never stop to learn. The day you believe you know everything is your last day as an expert. Experts learn from new research and existing knowledge, they learn from other people and they learn from own experience. Also they learn from disciplines outside of their professional realm that can provide new ideas.<br />
For a example, a programmer could benefit from learning:</p>
<ul>
<li>  <strong>psychology</strong> &#8211; better understand how users think and perceive, how to engage customers, how to make yourself and team productive and motivated;</li>
<li>  <strong>design, aesthetics, art</strong> &#8211; beautiful systems are more usable and successfu<strong>l<br />
</strong></li>
<li><strong>  management theories and practices</strong> &#8211; learn how to organize people and activities  (for example Agile learned a lot from <a href="http://www.informit.com/articles/article.aspx?p=664147&amp;seqNum=4" title="Toyota Production System" id="m_id">Toyota Production System</a> and <a href="http://jeffsutherland.com/scrum/2009/01/roots-of-scrum-takeuchi-and-nonaka.html" title="Japanese product development" id="dk:o">Japanese product development</a>)</li>
<li>  <strong>system theories</strong> &#8211; understand fundamental principles and laws governing complex systems</li>
<li>  <strong>economics, business</strong> &#8211; why people and business need software, how software fails or succeed on market; how your software fits into company business; how to start your own company</li>
<li>  <strong>culture, social life, demographics</strong> &#8211; trends in behavior, interest and problems of groups of people (by sex, age, education, profession, etc). This knowledge will explain current dynamic and suggest future opportunities.</li>
</ul>
<p>Make learning essential part of your everyday life. If you don&#8217;t learn, you stop your journey to become an expert.<br />
You gain deeper knowledge if you <strong>share </strong>your knowledge with other people &#8211; <strong>discuss, explain, teach, blog, speak, present</strong>. Other people &#8211; with different views and perspective &#8211; will quickly show weaknesses and quality of your knowledge. Sharing with others will push your learning further and deeper than keeping knowledge to yourself.</p>
<p><strong>Questions:</strong> What do I not know? How will I learn it? How will I share it?</p>
<p><strong>6. Self-improvement</strong>.<strong> Know yourself. </strong><br />
<em>Why do you see the speck in your brother&#8217;s eye but fail to notice the beam in your own eye?<span class="body"></span></em><span class="body"> &#8211; </span>Matthew</p>
<p>We protect ourselves from inconvenient truth and often are blind to own mistakes. Our psychological defense systems help to avoid depression and anxiety by protecting our ego, but also distort our view and perception of true reality.<br />
Good experts are capable to see truth, be objective and correct themselves. They try to avoid the trap of groupthink, crowd psychology and self white washing.  They know own strengths, weaknesses and biases.<br />
Seek  the truth about self, know your internal beliefs and motivation and improve yourself. Otherwise, your rosy distorted pictures will hinder your growth and you will become the part of a problem, not the part of a solution.<br />
<strong>Questions:</strong> What can I do better? How can I improve myself? Am I honest with myself?</p>
<p><strong>7. Big picture. Systems Thinking. Creative solutions.</strong><br />
<em><span class="body">Opportunity ideas do not lie around waiting to be discovered. Such ideas need to be produced</span></em><span class="body"><em>.</em> &#8211; </span>Edward de Bono</p>
<p>Experts main advantages are tacit knowledge and experience. They understand big picture, reality, context and how systems work. However, it is not enough. <strong>Experts should solve problems</strong>. And therefore, they should train themselves for problem solving, innovation and changing reality in the novel ways. The outcome, a creative solution,  is quintessence of hard work, deep knowledge and intuition.<br />
<strong>Questions:  </strong>What is the big picture: forces, players and relations? How things can be done better? Do I see new ways?</p>
<h3>Questions to Ask Yourself</h3>
<ol>
<li><strong>Motivation</strong> &#8211; Am I ready? How can I boost my strength, energy and motivation? How will I succeed?</li>
<li><strong>Focus</strong> &#8211; How do I maintain focus, stay committed and interested? Do I have clear goals, action plan and productive environment?</li>
<li><strong>Critical thinking</strong> &#8211; What are hard facts, assumptions and theories? What should I trust, dismiss or verify?</li>
<li><strong>Full </strong><strong>Brain power</strong> &#8211; How can I engage my both brain modes? What puzzles can I feed to my subconscious mind?</li>
<li><strong>Continuous Learning</strong> &#8211; What do I not know? How will I learn it? How will I share it?</li>
<li><strong>Self Improvement</strong> &#8211; What can I do better? How can I improve myself? Am I honest with myself?</li>
<li><strong>Creative solutions</strong> &#8211; What is the big picture: forces, players and relations? How things can be done better? Do I see new ways?</li>
</ol>
<p>If you know answers to these questions, you don&#8217;t need rules to solve problems &#8211; you are ready to make good decisions and become an expert.</p>
<p><strong>References:</strong><br />
<a href="http://en.wikipedia.org/wiki/Dreyfus_model_of_skill_acquisition" title="Dreyfus Model of Skill Acquisition" id="kr4d">Dreyfus Model of Skill Acquisition</a> , Wikipedia<br />
<a href="http://www.time.com/time/health/article/0,8599,1717927-1,00.html" title="The Science of Experience" id="pyn3">The Science of Experience</a>, by John Cloud/Tallahassee, TIME<br />
<a href="http://www.amazon.com/gp/product/1934356050?ie=UTF8&amp;tag=softwcreatmys-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=1934356050" title="Pragmatic Thinking and Learning: Refactor Your Wetware" id="n9_c">Pragmatic Thinking and Learning: Refactor Your Wetware</a>, by Andy Hunt<br />
<a href="http://www.amazon.com/gp/product/0874774241?ie=UTF8&amp;tag=softwcreatmys-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=0874774241" title="The New Drawing on the Right Side of the Brain" id="mnuy">The New Drawing on the Right Side of the Brain</a>, by Betty Edwards<br />
<a href="http://www.sciam.com/article.cfm?id=the-expert-mind" title="The Expert Mind">The Expert Mind</a> , Scientific American<br />
<a href="http://projects.ict.usc.edu/itw/gel/EricssonDeliberatePracticePR93.pdf" title="The Role of Deliberate Practice in the Acquisition of Expert Performance">The Role of Deliberate Practice in the Acquisition of Expert Performance</a>, K. Anders Ericsson, Ralf Th. Krampe, and Clemens Tesch-Romer</p>
<img src="http://softwarecreation.org/?ak_action=api_record_view&id=82&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://softwarecreation.org/2009/how-to-become-an-expert-top-7-qualities/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Dealing with programmers who are different and disagree</title>
		<link>http://softwarecreation.org/2008/dealing-with-programmers-who-are-different-and-disagree/</link>
		<comments>http://softwarecreation.org/2008/dealing-with-programmers-who-are-different-and-disagree/#comments</comments>
		<pubDate>Tue, 26 Aug 2008 03:37:33 +0000</pubDate>
		<dc:creator>Andriy Solovey</dc:creator>
				<category><![CDATA[People]]></category>

		<guid isPermaLink="false">http://softwarecreation.org/2008/dealing-with-programmers-who-are-different-and-disagree/</guid>
		<description><![CDATA[There is nothing either good or bad, but thinking makes it so. &#8211; Shakespeare, &#8220;Hamlet&#8221; Generally, we are very tolerant and understanding. We appreciate to work with other people, listen and accept their ideas. Especially it is easy with people who completely agree with us. As for people who don&#8217;t&#8230; How could we appreciate people [...]]]></description>
			<content:encoded><![CDATA[<p><cite>There is nothing either good or bad, but thinking makes it so.</cite> &#8211; Shakespeare, &#8220;Hamlet&#8221;</p>
<p><img src="http://softwarecreation.org/images/2008/fight-club.jpg" /><br id="r_qo0" /></p>
<p>Generally, we are very tolerant and understanding. We appreciate to work with other people, listen and accept their ideas. Especially it is easy with people who completely agree with us. As for people who don&#8217;t&#8230; How could we appreciate people who disagree with your bright ideas, have own opposite opinion and don&#8217;t want to happily follow you? We can fight them, lure them and even force them to agree. There are many persuasion techniques, psychological tricks and political games that could make them to convert to your side. But should we always convert them? This post is devoted to the hard and ungrateful job of appreciating people who think, feel and behave differently.<br id="m5zw" /></p>
<p class="MsoNormal" id="gyhw14">   There are three concepts that help me to deal with these people:<br id="qxk11" /></p>
<ol>
<li>   Appreciate the difference<br id="ah1d" /></li>
<li>   Pygmalion Effect</li>
<li>   Seeing the Truth</li>
</ol>
<p><span id="more-71"></span></p>
<h3 id="fc_x0">   1. Appreciate the difference (or wisdom of diverse groups).<br id="w8an" /></h3>
<p>We are uncomfortable with people who are different from us. We have inner resistance to connect to them, understand and accept their ideas.<br id="g9hg" /> <br id="g9hg0" /> But most of us are different. Many programmers (especially in Canada) came from different cultures, were raised in different societies and taught differently. And even within the same culture, we, individuals, have different <a href="http://softwarecreation.org/2008/five-big-personality-traits-of-a-programmer-do-they-matter/" title="personalities" id="hywa">personalities</a>, backgrounds and views. Some programmers are quick problem-solvers who can come with practical solutions for particular problems in no time. Some are abstract thinkers who need the big picture and require concepts and system pieces to fit together. Some are creative innovators capable of producing crazy and beautiful software ideas, some are thorough down-to-earth implementers building reliable and high quality systems. We all have different ideas, concerns and approaches. But when we work together and exchange ideas, we often come up with solutions which are much better than individual suggestions.<br id="quab0" /> <br id="v74k" /> Diverse opinions are the strength and blessing for software teams. <strong id="qlrr">Diverse groups have broader perspectives, more information and deeper expertise. They make much better decisions and don&#8217;t stuck with a single and only way.</strong> I feel myself empowered and lucky when I work with strong people who are different and don&#8217;t agree with everything. They make my world much more interesting, richer and they are source of most valuable learning.<br id="q1g2" /> <br id="q1g20" /> One more point &#8211; if you consider people interests, try to understand them and see the world trough their eyes, many things about them will start making perfect sense, even if you don&#8217;t agree with them.<br id="j3fn2" /></p>
<h3 id="b9qw3">   2. The Pygmalion effect (or self-fulfilling prophecy).</h3>
<p class="MsoNormal" id="gyhw21">George Bernard Shaw wrote a famous play Pygmalion, in which Professor Henry Higgins insists that he can turn a poor flower girl into a lady. He succeeds. But a flower girl, Eliza Doolittle, said to Higgins&#8217; friend Pickering:&#8221;The difference between a lady and a flower girl is not only how she behaves, dress and speak, but how she&#8217;s treated. I shall always be a flower girl to Professor Higgins, because he always treats me as a flower girl, and always will, but I know I can be a lady to you because you always treat me as a lady, and always will.&#8221;</p>
<p> I learned this effect many years ago when I was a young and hotheaded programmer. I was a team lead for the first time and had one reporting to me programmer. I saw him as a bad programmer. Indeed, he wasn&#8217;t able to produce good code &#8211; at least in my opinion. His motivation was low and I seriously considered him as a lost case. Soon, I moved to another place and this programmer had to replace me and became responsible for the whole system. I expected disaster. Surprisingly, I received very favorable feedback about him. My substitution programmer continued development and internal users praised his intelligence, responsiveness and quality of work. I&#8217;m sure his code wasn&#8217;t great, but he was doing his job and kept people happy. I suspect they liked him much more than me. I was puzzled about this radical change until I&#8217;ve learned about The Pygmalion Effect.</p>
<p class="MsoNormal" id="dv-q4"> The Pygmalion Effect means &#8220;you get what you expect.&#8221;  Consciously or not people will get what we think and expect from them and adjust behavior to match our expectations. <strong id="iv8j">If you expect the best from people, they will try to meet expectations and even go beyond, if no&#8230; oh well, see consequences.</strong></p>
<h3 id="b9qw4">   3. Seeing the Truth (inconvenient, about yourself).</h3>
<p class="MsoNormal" id="gyhw36"> My small daughter sometimes is running into the table or other obstacles that often prevent kids from running as wild as they wish. If she feels pain, she starts to cry: “Bad table, bad table” and kicks it. I’m trying to explain – it is not a table, table doesn’t do anything to you – it is all about you, you should be careful. My words don&#8217;t help and she continues crying: “You don’t love me, Dad, and don’t see how bad this table is”.</p>
<p class="MsoNormal" id="gyhw38"> I was laughing to myself: “she will grow, become wiser and understand that she is the cause, not the table”. But at some point, I realized: “I’ve grown up, but didn’t become wise enough”. If something goes wrong, I often don&#8217;t recognize that I’m the cause of the problem. I can find many reasons why this problem happened. Certainly, it is not me, it caused by other people, circumstances, bad luck, Microsoft, irresponsible customers (you can continue the list).</p>
<p class="MsoNormal" id="gyhw39"> But if I even unconsciously do realize that I’m the problem, I double my effort to shift the blame and lose objective and rational view. I become powerful self white-washing machine. I am not alone. <strong id="ot_b">All of us have psychological defensive system inside that protects our ego and self-esteem. It works perfectly. The only problem that it prevents us from seeing the inconvenient truth and learning how to solve our problems.</strong><br id="l5560" /></p>
<h3 id="ahin0">   The bottom line:</h3>
<p><strong id="obly"> Appreciate the difference, expect the best from people and see the truth about yourself.</strong><br id="pseu0" /><br id="zs.-" />It is not easy to really listen, understand and even agree with other people. But if I don&#8217;t &#8211; I will have many nasty fights, can rely on myself only and miss many opportunities to grow and learn. My world will shrink and I will be left alone against winds, waves and problems of this world.<br id="q-p." /><br id="cmu_" /></p>
<p><cite>Everyone thinks of changing the world, but no one thinks of changing himself.</cite> &#8211; Leo Tolstoy</p>
<img src="http://softwarecreation.org/?ak_action=api_record_view&id=71&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://softwarecreation.org/2008/dealing-with-programmers-who-are-different-and-disagree/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to use search skills to become an effective programmer</title>
		<link>http://softwarecreation.org/2008/how-to-use-search-skills-to-become-effective-programmer/</link>
		<comments>http://softwarecreation.org/2008/how-to-use-search-skills-to-become-effective-programmer/#comments</comments>
		<pubDate>Wed, 23 Jul 2008 04:20:22 +0000</pubDate>
		<dc:creator>Andriy Solovey</dc:creator>
				<category><![CDATA[People]]></category>
		<category><![CDATA[Practices]]></category>
		<category><![CDATA[Skills]]></category>

		<guid isPermaLink="false">http://softwarecreation.org/2008/how-to-use-search-skills-to-become-effective-programmer/</guid>
		<description><![CDATA[No man is an island unto himself every man is a part of the whole &#8211; John Donne It is possible to program a web page or small application with little knowledge of programming. Use Google to search for examples and if you are lucky, you will find ready code and your are almost done. [...]]]></description>
			<content:encoded><![CDATA[<p> <cite>No man is an island unto himself every man is a part of the whole</cite> &#8211; John Donne</p>
<p>It is possible to program a web page or small application with little knowledge of programming. Use Google to search for examples and if you are lucky, you will find ready code and your are almost done. Even experienced programmers often retreat to search to save time and effort for finding solutions for their problems.</p>
<p><strong>Modern effective programming is unthinkable without using search, the  Internet and collective intelligence. Therefore, search skills are becoming primary for an effective programmer.</strong></p>
<p>Now we don&#8217;t need to know and remember how to solve many programming problems &#8211; we can use search. We are becoming more effective, productive and able to solve wider range of problems. But does it mean that good search skills are enough for building software? This post will review the role of search skills in forming programmer knowledge and how to use search effectively.<br id="n0n60" /></p>
<h3 id="g51j"><strong id="n0n61">Types of knowledge and how it grows in programmer&#8217;s brains.</strong></h3>
<p><img src="http://softwarecreation.org/images/2008/knowledge-types.jpg" /></p>
<p><span id="more-69"></span>There are three types of knowledge:<br id="i-3f" /></p>
<ul id="i-3f0">
<li id="i-3f1"><strong id="s4v_">Conceptual</strong> (why, what, if &#8211; semantic) &#8211; understanding concepts, principles, relations and major approaches for building software systems. This knowledge provides answers to why architecture or code should be done specific way, what are alternatives and logic behind selecting the best of them. Conceptual knowledge refers to the bigger picture and understanding beyond solving specific problems on a chosen programming language.
<ul id="m4m6">
<li id="i-3f2"><em>Application</em>: find new solutions for complex open-ended problems and create sound software systems.</li>
<li id="khtm"><em>Acquisition</em>: learning computer science, architecture and programming concepts, and building own theories based on practical implementations and experience.<br id="khtm0" /></li>
</ul>
</li>
<li id="i-3f3"><strong id="my0g">Practical</strong> (how-to &#8211; procedural) &#8211; knowledge how to solve a specific programming problem. This knowledge doesn&#8217;t require deep understanding of concepts and rationale behind implementation choices. Search plays the biggest role here as it is relatively easy to share and explain specific solutions for limited problems using programming language.
<ul id="m4m60">
<li id="i-3f4"><em>Application</em>: solve problems quickly using proven and known solutions without re-inventing new approaches every time.</li>
<li id="w7zj"><em>Acquisition</em>: searching for existing solutions, learning by example or coming up with own and reusing later.<br id="fr33" /></li>
</ul>
</li>
<li id="i-3f5"><strong id="gs1w3">Tacit</strong> (expertise, experience and intuition) &#8211; inner knowledge that people carry in their minds based on personal experience of implementing software systems. Tacit knowledge allows to synthesize and make work together two other types of knowledge using powerful brain capabilities. This knowledge is difficult to transfer, because the big part of it is stored in our subconscious mind. It works with intuition and allows optimal decisions based on experience, feedback and evaluation of conceptual and practical knowledge in specific context. <br id="hxcb" />
<ul id="m4m61">
<li id="i-3f6"><em>Application</em>: using own expertise, experience and intuition for implementing the best solution<br id="sl3e" /></li>
<li id="abkw"><em>Acquisition</em>: building software and learning from results<br id="fjp:" /></li>
</ul>
</li>
</ul>
<p><img src="http://softwarecreation.org/images/2008/knowledge-growth.jpg" /></p>
<p>Design patterns (as well as architectural, domain and others) are interesting example for combining of all types of knowledge: &#8216;how-to&#8217; examples, concepts behind these examples and experience of implementing them. This way of representing knowledge is one of the reasons for patterns success and wide use.</p>
<p>Value of practical knowledge in the head is decreasing when more and more practical solutions and examples are available on the Internet. We don&#8217;t need to keep them in our heads. We can tackle now almost any common programming problem we might encounter in building software. However, a master programmer knows much more than examples how to solve problems or where to search for examples. He can come up with own solutions, make most optimal decisions and apply them in the best way. In addition, solutions for the new, complex, domain and context specific problems are difficult to find on the Internet. And any non trivial software project requires knowledge of the high level software development principles, experience of applying them and deep understanding of the system, problem space and environment to make good decisions how to solve problems. <br id="uely" /> <br id="uely0" /> <strong>Therefore, conceptual and tacit knowledge are still very valuable in software development. And when we use  search we should make effort to expand all types of knowledge instead of just solving particular problems. It will pay off with enhancing ability to solve much more advanced problems and becoming even more effective programmer.</strong></p>
<p><img src="http://softwarecreation.org/images/2008/knowledge-lifecycle.jpg" /></p>
<h3 id="l3oa">Effective Search for Solving Practical Problems<br id="rc:8" /></h3>
<p><strong id="ikue">A. Find</strong><br id="dt5r" /></p>
<ol id="dwy3">
<li id="dwy30"><em id="rw-b">Define </em>- understand what problem should be solved and focus on what you are trying to find. Internet has so much interesting stuff that search could easily take all your work time (and personal).<br id="lobi" /></li>
<li id="dwy31"><em id="rw-b0">Search  </em>(use standard Google, <a href="http://www.google.com/codesearch" title="code search" id="e7qz">code search</a> or <a href="http://www.deitel.com/ResourceCenters/Programming/CodeSearchEnginesandCodeSites/tabid/454/Default.aspx" title="other search engines" id="vguh">other search engines</a>) &#8211; there are <a href="http://www.dumblittleman.com/2007/06/20-tips-for-more-efficient-google.html" title="many" id="faiu">many</a> <a href="http://www.mapelli.info/tips/ultimate-google-search-tips-guide" title="recommendations" id="d:f8">recommendations</a> <a href="http://sudarmuthu.com/blog/2006/05/07/google-search-syntax-dissected.html" title="how" id="u9yl">how</a> to use <a href="http://help.yahoo.com/l/us/yahoo/search/basics/basics-04.html" title="search" id="grph">search</a> engines <a href="http://www.media-awareness.ca/english/resources/special_initiatives/wa_resources/wa_teachers/tipsheets/search_internet_effectively.cfm" title="effectively" id="i9-v">effectively</a>. <br id="y5p2" /></li>
<li id="zkju"><em id="rw-b1">Scan </em>results (quality of content, credibility and level of expertise; stop if source has low trust level) &#8211; <em id="rw-b2">Read </em>- <em id="rw-b3">Evaluate </em>(effort, needed tools and libraries)<br id="vupj" /></li>
</ol>
<p><br id="jmbp" /><strong id="ikue0">B. Use</strong><br id="ikue1" /></p>
<ol id="dt5r1">
<li id="fy2o"><em id="rw-b4">Copy </em>code &#8211; <em id="rw-b5">Try </em>in isolation (discovery unit tests with <a href="http://c2.com/cgi/wiki?SpikeSolution" title="spikes" id="r-83">spikes</a> are the best for this purpose) <br id="c-gw" /></li>
<li id="jt_y"><em id="rw-b6">Clean </em>code &#8211; keep only minimal, relevant and clear code for your solution</li>
<li id="soir"><em id="rw-b7">Apply </em>code to your system<br id="soir0" /></li>
</ol>
<p><br id="jmbp0" /><strong id="unpd">C. Learn</strong><br id="jmbp2" /></p>
<ol id="dt5r2">
<li id="jt_y0"><em id="rw-b8">Understand </em>- why and what have you done &#8211; learn from the code and implementation<br id="eh.j" /></li>
<li id="rskz"><em id="rw-b9">Expand </em>knowledge -
<ul id="g3-:">
<li id="g3-:0"><strong id="unpd0">practical</strong>: specific approaches, tricks and style of problem solving; <br id="g3-:1" /></li>
<li id="g3-:2"><strong id="g3-:3">conceptual</strong>: learn new concepts, refine existing and build your own; <br id="g3-:4" /></li>
<li id="g3-:5"><strong id="g3-:6">tacit</strong>: experience will grow automatically if you intelligently use found solutions and learn from them<br id="g3-:7" /></li>
</ul>
</li>
<li id="jmbp3"><em id="rw-b10">Collect </em>(links, opinions, references, to-read lists) &#8211; any interesting information for your future searches, discovery and learning. Keep backlog for these purpose.</li>
</ol>
<p><br id="u9-x" />Do you have any tips for effective code search?</p>
<img src="http://softwarecreation.org/?ak_action=api_record_view&id=69&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://softwarecreation.org/2008/how-to-use-search-skills-to-become-effective-programmer/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>The Happiness. Programmer&#8217;s Edition.</title>
		<link>http://softwarecreation.org/2008/the-happiness-programmers-edition/</link>
		<comments>http://softwarecreation.org/2008/the-happiness-programmers-edition/#comments</comments>
		<pubDate>Wed, 28 May 2008 04:15:19 +0000</pubDate>
		<dc:creator>Andriy Solovey</dc:creator>
				<category><![CDATA[Job]]></category>
		<category><![CDATA[People]]></category>

		<guid isPermaLink="false">http://softwarecreation.org/2008/the-happiness-programmers-edition/</guid>
		<description><![CDATA[Happiness is a direction, not a place. &#8211; Sydney J. Harri tookie Happy programmers are more productive, healthier and live longer. It is pleasure to work with happy programmers. Are you a happy programmer? Do you have feeling of joy and satisfaction every day? Do you want to know how to become happier?This post considers [...]]]></description>
			<content:encoded><![CDATA[<p><cite>Happiness is a direction, not a place.</cite>  &#8211; Sydney J. Harri<br id="gtft0" /><br id="gtft1" /><img src="http://softwarecreation.org/images/2008/happy.jpg" /><br />
<a href="http://flickr.com/photos/tookie/183503927/" class="photocredit">tookie</a><br />
<br id="pznz0" />Happy programmers are more productive, healthier and live longer. It is pleasure to work with happy programmers. Are you a happy programmer? Do you have feeling of joy and satisfaction every day? Do you want to know how to become happier?<br id="jezc0" /><br id="nd3a0" />This post considers programmer&#8217;s satisfaction with live as a whole (I had another post dedicated to <a href="http://softwarecreation.org/2007/how-to-be-happy-at-work-short-tutorial/" title="happiness at work" id="d.9n">happiness at work</a>). <br id="p:qg0" /><br id="kwc40" />Programmers as other people are happier if they have<br id="z5rx0" /></p>
<ul id="z5rx1">
<li id="z5rx2">more money</li>
<li id="z5rx2">successful marriage</li>
<li id="z5rx2">excellent health</li>
<li id="z5rx2">good friends</li>
<li id="z5rx2">live in a beautiful place with wonderful weather<br id="llim0" /></li>
</ul>
<p><br id="i4020" /><span id="k7ej0"><strong id="db:o0">But we have what we have.</strong></span> It is not easy to achieve all of this: become rich, find perfect spouse and  friends, be completely healthy and move to the best place on the Earth. But the most nasty news is that even after achieving all of this happiness is not guaranteed to last forever.</p>
<p><span id="more-63"></span></p>
<h3 id="xnmm0">Pessimism</h3>
<p><img src="http://softwarecreation.org/images/2008/escalator.jpg" /><br id="y31s1" />We face 3 serious obstacles to increase our level of happiness for a long time.<br id="dt::2" /><br id="kyda0" /><span id="m0jx0"><strong id="ur300">1. Genes / personality</strong></span> &#8211; our basic level of happiness significantly depends on our genes and personality and stays almost the same over time. We cannot change much this level. Some of us could be cheerful and joyful in tough times and some will be cranky and frustrated in the best moments of their life.<br id="rhjk0" /><span id="m0jx1"><strong id="ur301">2. Adaptation</strong></span> &#8211; any gains in happiness are only temporary, because humans so quickly adapt to change. After 1 year lottery winners were no happier than before win. U.S. citizens&#8217; personal income has more than doubled in the past 50 years, but <a href="http://www.davidmyers.org/davidmyers/assets/Funds.friends.faith.pdf" title="their happiness levels have remained the same" id="kvib">their happiness levels have remained the same</a>. <br id="rhjk1" /><span id="m0jx2"><strong id="ur302">3. Illusions</strong></span> &#8211; we often create illusions that replace reality. Our imagination creates pretty pictures about what makes us happy and miss important real life details. We have tough time to imagine that we will ever think, want, or feel differently than we do now. We overestimate our future appetite when are hungry or why we desperately need this beautiful iPhone [insert here any gadget of your dream] right now to be happy.<br id="b9zu0" /><br id="lxjp0" />Does it mean that we cannot increase our happiness for a long time? We still have some reasons for optimism<br id="k_i42" /></p>
<h3 id="k_i43">Optimism</h3>
<p><img src="http://softwarecreation.org/images/2008/manchester.jpg" /><br id="dvjp0" /></p>
<p>Yes, we have genetically determined <span id="hp7s0"><strong id="ast62">set point</strong></span>. <a href="http://www.psych.umn.edu/courses/fall06/macdonalda/psy4960/Readings/LyubomirskySustain_RGP05.pdf" title="Research" id="pnai">Research</a> shows that our genes and personality accounts for <span id="eix90"><strong id="z.-e0">50% of our happiness</strong></span>, which is fixed and almost impossible to change. <br id="zyi80" /><br id="a2880" />But we have other things under our control &#8211; our life and what we do.<br id="bphg0" /> <br id="dukg0" />Many people believe that changing life is the ultimate path to happiness.<br id="g7w00" />Surprisingly, research shows that <span id="hp7s1"><strong id="ast63">circumstances</strong></span> of our life (wealth, health, marriage, friends, living place, etc.) accounts for only <span id="eix91"><strong id="z.-e1">10% of happiness</strong></span>. We can change level of our happiness by marriage (risky) or moving to Florida [insert here any place of your dream] (less risky). But how long it will last? Not long because our illusions will quickly fade and adaptation to the new life events will return us back to the basic level. We are similar to pedestrians walking up a descending escalator. You should constantly move to stay above your basic happiness level. Stop and you quickly get back.<br id="lj7j0" /><br id="eix92" />What is left for the rest <span id="eix93"><strong id="z.-e2">40% of our happiness</strong></span>?<br id="var12" /><span id="gl__0"><strong id="ast64">Intentional Activity</strong></span> &#8211; the wide variety of things that people do and think in their daily lives from exercising regularly to achieving important life goals. Illusions are less severe because we constantly get experience. Adaptation is weaker, because we can adjust, don&#8217;t spend all time doing one thing and we can vary the same activity and move to the new levels. We can remain happy over long period doing things that we enjoy or that bring meaning in our life.<br id="x3qo0" /><br id="x3qo1" />Think about your software projects. Do they bring you meaningful experience? Do you feel that your work and growth as a programmer could be the source of happiness? You can try moving to another project, change roles and work with other interesting domains and problems to get more satisfaction from work and fight adaptation.<br id="pbpq0" /><br id="e1510" /><a href="http://softwarecreation.org/2007/how-to-be-happy-at-work-short-tutorial/" title="Enjoyment from work" id="oa.w">Enjoyment from work</a> comes at very specific point: when our tasks and challenges match our capabilities. Work should be not overwhelmingly complex and not too simple. With these conditions you will enjoy your work and grow quickly.<br id="e1511" />To be happy at work you should have<br id="e1512" />   1. Control over your task assignments and execution.<br id="e1513" />   2. Environment and time to focus on your tasks.<br id="e1514" />   3. Clear goals and immediate feedback.<br id="e1515" /><br id="e1516" />Other areas (to achieve <a href="http://en.wikipedia.org/wiki/Flow_%28psychology%29" title="flow" id="de9e">flow</a> and happiness from activities):<br id="sx8_0" /></p>
<ul id="sx8_1">
<li id="sx8_2"><strong id="tflz0">Body</strong>: exercises, yoga, sport</li>
<li id="sx8_2"><strong id="tflz1">Mind</strong>: learn something new, e.g. science, history, languages (human and programming); blog or build programs for interesting problems (and share them)<br id="ihff0" /></li>
<li id="sx8_2"><strong id="s2.l0">Feelings</strong>: music, art or poetry</li>
<li id="sx8_2"><strong id="r8oc0">Social</strong>: join study groups and clubs for personal growth (e.g. <a href="http://www.toastmasters.org/" title="Toastmasters" id="jfia">Toastmasters</a>) or social contribution, volunteer or simply help people.</li>
</ul>
<p><br id="e70o0" />There are few steps to become happier with your intentional activity.<br id="i5m.0" /></p>
<h3 id="zi781">Important Steps<br id="kdcl0" /></h3>
<ol id="lcgl0">
<li id="lcgl1"><span id="lcgl2"><strong id="gg791">Match</strong></span>. Find activities that match your strengths, interests and personality. Something that you would really enjoy and find as a good fit and complement to your life.</li>
<li id="lcgl3"><span id="lcgl4"><strong id="gg792">Start.</strong></span> It is the most important step. We have thousands of real and imaginative reasons why not to start. Our busy lives and habits often stop us. Avoid overcommitment and don&#8217;t burn yourself with activities, but don&#8217;t hesitate too much &#8211; just start it. Who doesn&#8217;t try &#8211; doesn&#8217;t drink champagne<br id="j_-l0" /></li>
<li id="lcgl3"><span id="hzhu0"><strong id="gg793">Maintain</strong></span>. Your activities will make you happier if you do them for a long time, make a progress and achieve results. Your activities should make your life interesting, bring enjoyment and satisfaction to keep your new happiness level, otherwise it doesn&#8217;t make sense to continue them. However, you could have less enjoyable activities if they move your closer to life goals and make life more meaningful.</li>
<li id="lcgl3"><span id="i3v_0"><strong id="gg794">Change</strong></span>. You should periodically look for the new activities, evaluate and change existing and even drop less valuable. Your time is precious and you should select what brings you most satisfaction, happiness and meaning in life.<br id="a93e0" /></li>
</ol>
<p><br id="r-vm0" /><span id="f9ls0">Confucius said<strong id="xl9o2">: </strong></span><span id="f9ls0"><strong id="xl9o2">&#8220;The one who would be in constant happiness must frequently change.&#8221;</strong></span><br id="r-vm1" /></p>
<p><img src="http://softwarecreation.org/images/2008/happiness-anatomy.jpg" /><br id="mlf:0" />So, happiness is combination of two outcomes:<br id="mlf:1" /></p>
<ol id="oex10">
<li id="oex11"><span id="oex12"><strong id="gg795">Recent experiences (bottom-up)</strong></span> &#8211; people who can recall a large number of recent positive experiences are very happy. Your activities are the great source of these experiences.<br id="udfp0" /></li>
<li id="oex11"><span id="x3qs2"><strong id="ast614">Meaning and purpose (top-down) &#8211; </strong>even suffering, we can be happy and positively re-frame our experiences if we have sense of achieving meaning and purpose in our life. And activities could move you closer to them.<br id="k1.f0" /></span></li>
</ol>
<p><br id="ksbf0" />Albert Camus: <span id="p._j0"><strong id="wn530">But what is happiness except the simple harmony between a man and the life he leads?</strong></span><br id="ksbf1" /><span id="p._j1"><strong id="wn531"><br id="ngra0" /> Life is action. Act and be happy.</strong></span><br id="wh800" /><br id="dtkv0" />Resources:<br id="dtkv1" /><a href="http://www.psych.umn.edu/courses/fall06/macdonalda/psy4960/Readings/LyubomirskySustain_RGP05.pdf" title="Pursuing Happiness: The Architecture of Sustainable Change" id="a4_l">Pursuing Happiness: The Architecture of Sustainable Change</a>, Sonja Lyubomirsky, Kennon M. Sheldon, David Schkade<br id="h1bi0" /><a href="http://softwarecreation.org/2007/how-to-be-happy-at-work-short-tutorial/" id="h1bi1">How to Be Happy At Work. Short tutorial</a></p>
<img src="http://softwarecreation.org/?ak_action=api_record_view&id=63&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://softwarecreation.org/2008/the-happiness-programmers-edition/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

