<?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>Mark Needham &#187; Learning</title>
	<atom:link href="http://www.markhneedham.com/blog/category/learning/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.markhneedham.com/blog</link>
	<description>Thoughts on Software Development</description>
	<lastBuildDate>Mon, 13 Feb 2012 21:25:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>&#8220;Everything I know everyone else knows&#8221;</title>
		<link>http://www.markhneedham.com/blog/2011/03/13/everything-i-know-everyone-else-knows/</link>
		<comments>http://www.markhneedham.com/blog/2011/03/13/everything-i-know-everyone-else-knows/#comments</comments>
		<pubDate>Sun, 13 Mar 2011 12:03:13 +0000</pubDate>
		<dc:creator>Mark Needham</dc:creator>
				<category><![CDATA[Learning]]></category>

		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=3410</guid>
		<description><![CDATA[For as long as I can remember I&#8217;ve had the belief that, at least as far as software is concerned, everything I know how to do everyone else also knows how to do. I carried that assumption for quite a while and only realised relatively recently how harmful it can be. The most observable outcome [...]]]></description>
			<content:encoded><![CDATA[<p>For as long as I can remember I&#8217;ve had the belief that, at least as far as software is concerned, <strong>everything I know how to do everyone else also knows how to do</strong>.</p>
<p>I carried that assumption for quite a while and only realised relatively recently how harmful it can be.</p>
<p>The most observable outcome I noticed is that I either didn&#8217;t give my opinion in group situations or just didn&#8217;t take part in them because I assumed that what I wanted to say would eventually be contributed by someone else anyway.</p>
<p>The danger of doing that is that sometimes people didn&#8217;t come up with a solution I&#8217;d seen work before and I&#8217;d be extremely frustrated because it seemed like the others were making what I considered bad decisions deliberately.</p>
<p>I think this belief evolved from the fact that for several years I was nearly always the least experienced person on the teams that I worked on and it was often true that my colleagues knew way more about almost everything than I did.</p>
<p>As time has gone on I&#8217;ve seen more situations and gained some ideas on approaches which work and I haven&#8217;t been the least experienced in the teams I&#8217;ve been working on so the belief doesn&#8217;t necessarily hold anymore.</p>
<p>I&#8217;m not sure if this is a common stage to go through on the software journey so it&#8217;d be interesting to hear about your experience.</p>
<p>I&#8217;m now moving more towards an approach where I give my opinions in situations where I have some knowledge while also accepting the fact that there will be other situations where others know much more than me. </p>
<p>In those situations I can legitimately keep quiet and learn from my colleagues experiences.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.markhneedham.com/blog/2011/03/13/everything-i-know-everyone-else-knows/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Team Communication: Learning models</title>
		<link>http://www.markhneedham.com/blog/2010/11/27/team-communication-learning-models/</link>
		<comments>http://www.markhneedham.com/blog/2010/11/27/team-communication-learning-models/#comments</comments>
		<pubDate>Sat, 27 Nov 2010 10:50:27 +0000</pubDate>
		<dc:creator>Mark Needham</dc:creator>
				<category><![CDATA[Communication]]></category>
		<category><![CDATA[Learning]]></category>

		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=3170</guid>
		<description><![CDATA[One of the problems I&#8217;ve noticed in several of the &#8216;agile&#8217; communication mechanisms (such as the standup or dev huddle) that we typically use on teams is that they focus almost entirely on verbal communication which only covers one of our learning styles &#8211; the auditory learning style. The Learning Models The VAK learning style [...]]]></description>
			<content:encoded><![CDATA[<p>One of the problems I&#8217;ve noticed in several of the &#8216;agile&#8217; communication mechanisms (such as the standup or dev huddle) that we typically use on teams is that they focus almost entirely on verbal communication which only covers one of our learning styles &#8211; the auditory learning style.</p>
<h3>The Learning Models</h3>
<p>The <a href="http://www.businessballs.com/vaklearningstylestest.htm">VAK learning style model</a> describes a simple model covering the different learning styles that people have:</p>
<ul>
<li><strong>Visual</strong> &#8211; seeing and reading.
<ul>
<li>Involves the use of seen or observed things, including pictures, diagrams, demonstrations.</li>
</ul>
</li>
<li><strong>Auditory</strong> &#8211; listening and speaking.
<ul>
<li>Involves the transfer of information through listening: to the spoken word, of self or others.</li>
</ul>
</li>
<li><strong>Kinesthetic</strong> &#8211; touching and doing.
<ul>
<li>Involves physical experience &#8211; touching, feeling, holding, doing, practical hands-on experiences.</li>
</ul>
</li>
</ul>
<p>My own learning style is predominantly visual so I tend to find that a well drawn diagram will help me understand something far more quickly than a colleague spending 10 minutes explaining something using only words.</p>
<p>If the latter happens then I either find myself totally zoning out or mentally trying to sketch out what the speaker is saying. </p>
<p>In a team environment this would translate into ensuring that we use the whiteboard when trying to explain problems.</p>
<p>Sometimes just going to the whiteboard isn&#8217;t enough and we need to cater to the kinesthetic learning model which in software development terms would involve walking through the code.</p>
<p>I&#8217;ve never been involved in a team session where we went through a part of the code base together but I&#8217;ve heard from colleagues that it can be very helpful in some situations.</p>
<p>I think it&#8217;s important that we <a href="http://www.markhneedham.com/blog/2009/08/24/learning-thoughts-on-doing-so-more-effectively/">know what our favoured learning style is</a> so that we can guide any discussion in such a way that it plays to our strengths. </p>
<h3>In terms of software development</h3>
<p>Although people tend to have different learning models my general observation is that we can move through the models from auditory to visual and finally kinesthetic depending on the complexity of what&#8217;s being explained.</p>
<p>I think it also partly depends on the experience of team members. For example, I&#8217;m now able to understand many more discussions which are purely verbal where previously I&#8217;d have needed a diagram or someone to show me what they meant in the code.</p>
<p>I think it&#8217;s important to look at the implicit feedback we&#8217;re getting from colleagues when explaining something to see whether or not the model we&#8217;ve used has been effective.</p>
<p>If it hasn&#8217;t then at least we know we have some other approaches to try which might be more successful.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.markhneedham.com/blog/2010/11/27/team-communication-learning-models/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Learning: Writing about simple things</title>
		<link>http://www.markhneedham.com/blog/2010/10/20/learning-writing-about-simple-things/</link>
		<comments>http://www.markhneedham.com/blog/2010/10/20/learning-writing-about-simple-things/#comments</comments>
		<pubDate>Wed, 20 Oct 2010 20:51:56 +0000</pubDate>
		<dc:creator>Mark Needham</dc:creator>
				<category><![CDATA[Learning]]></category>

		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=3047</guid>
		<description><![CDATA[My colleague Aman King is back in Pune for the time being and during one of our conversations he was asking me why I didn&#8217;t wait a bit longer and learn more about Ruby before writing about it. In a way he is right and I didn&#8217;t write anything at all about C# or Java [...]]]></description>
			<content:encoded><![CDATA[<p>My colleague <a href="http://www.wikyblog.com/AmanKing/">Aman King</a> is back in Pune for the time being and during one of our conversations he was asking me why I didn&#8217;t wait a bit longer and learn more about Ruby before writing about it.</p>
<p>In a way he is right and I didn&#8217;t write anything at all about C# or Java when I was first learning how to write code in those languages because I didn&#8217;t have the confidence to write about something that I knew nothing about.</p>
<p>However, what I found when I was initially learning <a href="http://www.markhneedham.com/blog/category/dotnet/f-dotnet/">F#</a> was that even writing about very basic things was quite useful to me and once I&#8217;d written about something my understanding of it tended to increase.</p>
<p>For example about a year and a half ago I wrote a post about <a href="http://www.markhneedham.com/blog/2009/05/02/f-stuff-i-get-confused-about/">some common things that I&#8217;d been getting confused with</a> and I was quite surprised to notice that I never confused them again once I&#8217;d written that post.</p>
<p>I&#8217;m not sure of the science which explains why that happens but I&#8217;ve noticed a similar thing happening with Ruby. </p>
<p>I wrote about the advantages of <a href="http://www.markhneedham.com/blog/2009/04/21/learning-through-teaching/">learning through teaching</a> last year which is along similar lines and I think the points I made there are applicable even if the subject matter would be trivial for others.</p>
<p>The other useful side effect which sometimes happens is that <a href="http://www.markhneedham.com/blog/2010/10/16/ruby-hash-default-value/">someone much better than me will point out a better way of doing something</a> than what I described and I can then use their approach in code I write in the future.</p>
<p>In a somewhat related article titled &#8216;<a href="http://www.wordyard.com/2010/10/08/blogging-empowerment-and-the-adjacent-possible/">Blogging, empowerment, and the “adjacent possible”</a>&#8216; Scott Rosenberg recently described in more depth how writing about things can actually change the way we think about them.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.markhneedham.com/blog/2010/10/20/learning-writing-about-simple-things/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Learning cycles at an overall project level</title>
		<link>http://www.markhneedham.com/blog/2010/09/20/learning-cycles-at-an-overall-project-level/</link>
		<comments>http://www.markhneedham.com/blog/2010/09/20/learning-cycles-at-an-overall-project-level/#comments</comments>
		<pubDate>Mon, 20 Sep 2010 18:56:20 +0000</pubDate>
		<dc:creator>Mark Needham</dc:creator>
				<category><![CDATA[Learning]]></category>
		<category><![CDATA[dreyfus-model]]></category>

		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=2942</guid>
		<description><![CDATA[I was looking back over a post I wrote a couple of years ago where I described some learning cycles that I&#8217;d noticed myself going through with respect to code and although at the time I was thinking of those cycles in terms of code I think they are applicable at a project level as [...]]]></description>
			<content:encoded><![CDATA[<p>I was looking back over <a href="http://www.markhneedham.com/blog/2008/12/07/learning-cycles/">a post I wrote a couple of years ago where I described some learning cycles that I&#8217;d noticed myself going through with respect to code</a> and although at the time I was thinking of those cycles in terms of code I think they are applicable at a project level as well.</p>
<p>The cycles I described were as follows:</p>
<ol>
<li>Don&#8217;t know what is good and what&#8217;s bad</li>
<li>Learn what&#8217;s good and what&#8217;s bad but don&#8217;t know how to fix something that&#8217;s bad</li>
<li>Learn how to make something that&#8217;s bad good</li>
</ol>
<p>I think I&#8217;ve followed similar cycles with respect to how an overall project is run.</p>
<p>To start with I didn&#8217;t really know what it was that made a project run with an agile mindset different to anything I&#8217;d seen previously so I spent a lot of time observing the approaches my colleagues used, the processes they tried to drive and generally trying to understand what made a project tick.</p>
<p>Having worked on quite a few projects and seen similar underlying concepts working despite differing contexts I started to notice that the situations coming up were often the same or very similar to ones that I&#8217;d seen before.</p>
<p>At this stage I was more convinced that some of the approaches I&#8217;d already learnt could be useful but often deferred to more experienced colleagues or suggested improvements and relied on them to help drive them.</p>
<p>When I worked with <a href="http://twitter.com/dermotkilroy">Dermot</a> he pointed out that the next step was to now be the one who can drive the changes that I want to see rather than relying on someone else to do it.</p>
<p>I&#8217;ve been trying to do that more recently and it&#8217;s not all that different to the way that I already try and influence the way that code is designed except it covers a wider spectrum of situations.</p>
<p>Books like <a href="http://www.amazon.com/Fearless-Change-Patterns-Introducing-Ideas/dp/0201741571/ref=sr_1_1?s=gateway&#038;ie=UTF8&#038;qid=1285008400&#038;sr=8-1">&#8216;Fearless Change&#8217;</a> and &#8216;<a href="http://www.amazon.com/Agile-Coaching-Rachel-Davies/dp/1934356433/ref=sr_1_1?s=gateway&#038;ie=UTF8&#038;qid=1285008462&#038;sr=8-1">Agile Coaching</a>&#8216; certainly have good tips for how to influence change but I find that more often than not I only really understand how to do something after I&#8217;ve made a complete mess of it the first time around. </p>
<p>I guess the downside of trying to influence situations more is that you put yourself in a position to be shot down so perseverance and knowing when to push and when to back off seem to be skills that will be particularly useful.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.markhneedham.com/blog/2010/09/20/learning-cycles-at-an-overall-project-level/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Learning: Study habits</title>
		<link>http://www.markhneedham.com/blog/2010/09/12/learning-study-habits/</link>
		<comments>http://www.markhneedham.com/blog/2010/09/12/learning-study-habits/#comments</comments>
		<pubDate>Sun, 12 Sep 2010 13:27:39 +0000</pubDate>
		<dc:creator>Mark Needham</dc:creator>
				<category><![CDATA[Learning]]></category>

		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=2912</guid>
		<description><![CDATA[I came across an interesting article from the New York Times that Michael Feathers originally linked to on twitter which discusses some of the common ideas that we have about good study habits, pointing out the flaws in them and suggesting alternative approaches. The author starts out by making some interesting observations about spacing out [...]]]></description>
			<content:encoded><![CDATA[<p>I came across an interesting article from the New York Times that <a href="http://twitter.com/mfeathers/status/24215110861">Michael Feathers originally linked to on twitter</a> which <a href="http://www.nytimes.com/2010/09/07/health/views/07mind.html?pagewanted=1&#038;_r=4">discusses some of the common ideas that we have about good study habits</a>, pointing out the flaws in them and suggesting alternative approaches.</p>
<p>The author starts out by making some interesting observations about spacing out our learning:</p>
<blockquote><p>
An hour of study tonight, an hour on the weekend, another session a week from now: such so-called spacing improves later recall, without requiring students to put in more overall study effort or pay more attention, dozens of studies have found.</p>
<p>No one knows for sure why. It may be that the brain, when it revisits material at a later time, has to relearn some of what it has absorbed before adding new stuff — and that that process is itself self-reinforcing.
</p></blockquote>
<p>I&#8217;ve written previously about <a href="http://www.markhneedham.com/blog/2009/03/19/re-reading-books/">re-reading books</a>  and how we seem to notice different things when we process information the second time around. </p>
<p>I&#8217;ve also found that <a href="http://www.markhneedham.com/blog/2010/07/22/the-prepared-mind-vs-having-context-when-learning-new-ideas/">when I don&#8217;t understand something immediately that if I leave it for a while and come back to it later on</a> it often makes more sense even though I haven&#8217;t deliberately tried to make sense of it.</p>
<p>For example I was playing with Clojure in November and December last year but then didn&#8217;t look at it again until quite recently.</p>
<p>Looking at it the second time the syntax and style of programming felt more natural to me which I think is because I&#8217;d played around with <a href="http://en.wikipedia.org/wiki/J_(programming_language)">J</a> a bit which is slightly similar.</p>
<p>This time I&#8217;m also using <a href="http://riddell.us/ClojureSwankLeiningenWithEmacsOnLinux.html">emacs and Swank</a> instead of <a href="http://plugins.intellij.net/plugin/?id=4050">La Clojure</a> and that combination of tools also feels more natural than it did when I tried last year. I don&#8217;t have any explanation for why that is!</p>
<p>I found the following section related to the type of material studied quite interesting:</p>
<blockquote><p>
Varying the type of material studied in a single sitting — alternating, for example, among vocabulary, reading and speaking in a new language — seems to leave a deeper impression on the brain than does concentrating on just one skill at a time.
</p></blockquote>
<p>I don&#8217;t do this intentionally but I find that my interest in something rarely lasts more than a couple of hours so I tend to switch between coding, blogging and reading when I&#8217;m doing anything software related in my own time.</p>
<p>The article also goes on to talk about the value of testing ourself on material, suggesting that the harder it is to remember something the harder it is to later forget.</p>
<p>The only correlation I can think of with respect to my own learning style is that I find it easier to remember information if I write about it or <a href="http://www.markhneedham.com/blog/2009/04/21/learning-through-teaching/">explain it to someone else</a>. </p>
<p>It&#8217;s a very interesting article and well worth reading.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.markhneedham.com/blog/2010/09/12/learning-study-habits/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Learning and Situated cognition</title>
		<link>http://www.markhneedham.com/blog/2010/08/10/learning-and-situated-cognition/</link>
		<comments>http://www.markhneedham.com/blog/2010/08/10/learning-and-situated-cognition/#comments</comments>
		<pubDate>Tue, 10 Aug 2010 03:26:23 +0000</pubDate>
		<dc:creator>Mark Needham</dc:creator>
				<category><![CDATA[Learning]]></category>
		<category><![CDATA[ThoughtWorks University]]></category>

		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=2802</guid>
		<description><![CDATA[Sumeet recently blogged about the new style ThoughtWorks University that he and the other trainers have introduced and although I only got to see it in action for a few days it seemed clear to me that it was an improvement on the original version. The questions being asked, discussions being had and situations that [...]]]></description>
			<content:encoded><![CDATA[<p>Sumeet <a href="http://www.learninggeneralist.com/2010/08/thoughtworks-university-story-of-our.html">recently blogged about the new style ThoughtWorks University that he and the other trainers have introduced</a> and although I only got to see it in action for a few days it seemed clear to me that it was an improvement on the original version.</p>
<p>The questions being asked, discussions being had and situations that were coming up were pretty much the same as I&#8217;ve seen on any software project that I&#8217;ve worked on.</p>
<p>One particularly interesting thing which came up a few times was that there was a &#8216;them vs us&#8217; feeling between the analysts and developers.</p>
<p>This is certainly an example of a situation which didn&#8217;t come up on the project when I participated in ThoughtWorks University 4 years ago where we only had a one week simulation.</p>
<p>It is however a situation that does come up and on the projects I&#8217;ve worked on it certainly can feel like you&#8217;re fighting the analysts. They&#8217;re trying to balance the wishes of the client as well as those of the developers and to developers it can often seem that the analyst is just being difficult for the sake of it.</p>
<p>The cool thing was that the grads then came up with different potential solutions to this problem and they were pretty much the same solutions that we&#8217;ve used on projects I&#8217;ve worked on.</p>
<p>While discussing a different topic with <a href="http://www.intwoplacesatonce.com">Dave Cameron</a> he pointed me to the Wikipedia entry for &#8216;<a href="http://en.wikipedia.org/wiki/Situated_cognition">situated cognition</a>&#8216; which &#8220;posits that <strong>knowing is inseparable from doing by arguing that all knowledge is situated in activity bound to social, cultural and physical contexts</strong>&#8220;.</p>
<p>The following quotes seem to explain why, in my experience at least, I learn way more effectively when working with colleagues on projects than I could ever do on an out of context training course:</p>
<blockquote><p>
Knowing emerges as individuals develop intentions through goal-directed activities within cultural contexts which may in turn have larger goals and claims of truth.
</p></blockquote>
<blockquote><p>
Knowing is expressed in the agent&#8217;s ability to act as an increasingly competent participant in a community of practice.
</p></blockquote>
<blockquote><p>
Learning must involve more than the transmission of knowledge but must instead encourage the expression of effectivities and the development of attention and intention that reflect real life learning processes</p></blockquote>
<p>I think this new style TWU gives grads an even better start to their ThoughtWorks lives and I hope to take part as a trainer for one of the terms later in the year.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.markhneedham.com/blog/2010/08/10/learning-and-situated-cognition/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The prepared mind vs having context when learning new ideas</title>
		<link>http://www.markhneedham.com/blog/2010/07/22/the-prepared-mind-vs-having-context-when-learning-new-ideas/</link>
		<comments>http://www.markhneedham.com/blog/2010/07/22/the-prepared-mind-vs-having-context-when-learning-new-ideas/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 04:06:40 +0000</pubDate>
		<dc:creator>Mark Needham</dc:creator>
				<category><![CDATA[Learning]]></category>
		<category><![CDATA[ThoughtWorks University]]></category>

		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=2733</guid>
		<description><![CDATA[I&#8217;m currently working as a trainer for ThoughtWorks University (TWU) and the participants have some Industrial Logic e-learning material to work through before they take part in the 6 week training program. I&#8217;ve been working through the refactoring/code smells courses myself and while I&#8217;ve been finding it really useful, I think this was partly because [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m currently working as a trainer for <a href="http://www.thoughtworks.com/thoughtworks-university">ThoughtWorks University (TWU)</a> and the participants have some <a href="http://industriallogic.com/elearning/">Industrial Logic e-learning material</a> to work through before they take part in the 6 week training program.</p>
<p>I&#8217;ve been working through the <a href="https://elearning.industriallogic.com/gh/submit?Action=AlbumContentsAction&#038;album=foundations&#038;devLanguage=Java">refactoring</a>/<a href="https://elearning.industriallogic.com/gh/submit?Action=AlbumContentsAction&#038;album=recognizingSmells&#038;devLanguage=Java">code smells</a> courses myself and while I&#8217;ve been finding it really useful, I think this was partly because I&#8217;ve been able to link the material to situations that I&#8217;ve seen in code bases that I&#8217;ve worked on over the past few years.</p>
<p>It would have been interesting to see if I&#8217;d have got as much value from going through the material 4 years ago before I started working at ThoughtWorks and didn&#8217;t have a range of code bases to relate the patterns to.</p>
<p>My thinking is that I would have found it more difficult to see the value of the material and that the approaches described would just have seemed &#8216;obvious&#8217; despite the fact that I&#8217;ve made pretty much all of the mistakes that the training looks to address!</p>
<p>About a year ago I wrote <a href="http://www.markhneedham.com/blog/2009/03/19/re-reading-books/">a blog post where I described the value of re-reading books</a> and one point which I&#8217;d forgotten is that even though it may be hard to relate to some ideas the first time you come across them it&#8217;s still valuable to read about them anyway.</p>
<p>It helps to prepare your mind for when you eventually come across some code where the idea can be applied and <a href="http://twitter.com/krishnannair">Krishnan</a> pointed out that this was actually part of the feedback received from the current TWU participants.</p>
<p>I think this is probably a good example of a variation of <a href="http://youarenotsosmart.com/2010/06/23/confirmation-bias/">confirmation bias</a> at work in that since we&#8217;ve been prepared to see certain patterns/potential to use different refactorings in code when we do come across those situations in code we&#8217;re much more likely to see those situations.</p>
<p>Krishnan pointed out that it would still be very useful for the TWU trainers to refer back to the Industrial Logic material when we come across those patterns in the project simulation that we run as part of TWU. </p>
<p>I think this is the most important part of the process as it will help to reinforce the learning.</p>
<p>I&#8217;m still curious whether there ever is a time when it makes sense to delay learning about something until we have more context.</p>
<p>I find that when I&#8217;m learning about something which goes way over my head I&#8217;ll often stop doing that and pick something else to look at which I can relate to a bit better.</p>
<p>I try to go back to the original material again later on but what I find often happens is that I&#8217;ll come across it in the future more by coincidence than design and this time it will make more sense.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.markhneedham.com/blog/2010/07/22/the-prepared-mind-vs-having-context-when-learning-new-ideas/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Is &#8216;be the worst&#8217; ever limiting?</title>
		<link>http://www.markhneedham.com/blog/2010/06/26/is-be-the-worst-ever-limiting/</link>
		<comments>http://www.markhneedham.com/blog/2010/06/26/is-be-the-worst-ever-limiting/#comments</comments>
		<pubDate>Sat, 26 Jun 2010 10:03:25 +0000</pubDate>
		<dc:creator>Mark Needham</dc:creator>
				<category><![CDATA[Learning]]></category>

		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=2586</guid>
		<description><![CDATA[One of my favourite patterns from Ade Oshineye and Dave Hoover&#8217;s &#8216;Apprenticeship Patterns&#8216; is &#8216;Be the worst&#8216; which is described as follows: Surround yourself with developers who are better than you. Find a stronger team where you are the weakest member and have room to grow. Be the Worst was the seminal pattern of this [...]]]></description>
			<content:encoded><![CDATA[<p>One of my favourite patterns from Ade Oshineye and Dave Hoover&#8217;s &#8216;<a href="http://apprenticeship-patterns.labs.oreilly.com/">Apprenticeship Patterns</a>&#8216; is &#8216;<a href="http://apprenticeship-patterns.labs.oreilly.com/ch04.html#be_the_worst">Be the worst</a>&#8216; which is described as follows:</p>
<blockquote><p>
Surround yourself with developers who are better than you. Find a stronger team where you are the weakest member and have room to grow.</p>
<p>Be the Worst was the seminal pattern of this pattern language. It was lifted from some advice that Pat Metheny offered to young musicians: “Be the worst guy in every band you’re in.”  Pat’s advice struck a chord with Dave, and was one of the reasons he started writing this book.
</p></blockquote>
<p>Since I started working at ThoughtWorks it hasn&#8217;t been that difficult to follow this pattern and I&#8217;ve been the least experienced developer on the majority of teams that I&#8217;ve worked on.</p>
<p>I always thought this was a pretty good thing as since I&#8217;m always surrounded by people who know much more than I do about various aspects of software development the opportunity to learn is very high.</p>
<p>Recently conversations  with several different colleagues leave me questioning whether at some stage we need to move away from this pattern, perhaps temporarily to improve skills in other areas.</p>
<p>The authors do cover this a bit in the book:</p>
<blockquote><p>
Being in a strong team can make you feel as if you are performing better. <strong>The other members of that team will often prevent you from making mistakes, and help you recover from mistakes so smoothly that you won’t realize that you may not be learning as much as you think.</strong> It’s only when you work on your own that you will see how much your team increases your productivity and realize how much you have learned.
</p></blockquote>
<h3>Making technical decisions</h3>
<p>One area in which I&#8217;ve noticed that this is true is when it comes to making technical decisions on a project. Quite often I find that even though I have an idea of what the solution to a problem should be I end up deferring the decision to someone more senior in the team.</p>
<p>I don&#8217;t think there&#8217;s a problem with discussing solutions with others in the team but it certainly seems that it would be a better learning experience to be in a situation where I was forced to make the call and then see how things went as a result of that decision.</p>
<p>It&#8217;s certainly possible to engineer a situation where you have to make that type of decision by working on open source projects but it&#8217;s still useful to get experience on real projects as well.</p>
<p>I guess the easiest way is to be on a team where you aren&#8217;t the worst so that by default you&#8217;ll end up in a position where you have to make those calls. </p>
<p>An alternative is for more senior people to encourage others to make decisions with the knowledge that at least they will be there to help recover the situation if it goes wrong. I&#8217;ve seen some of my colleagues use this approach and it seems to work reasonably well.</p>
<p>It&#8217;s still not a perfect approach though because often someone more experienced may know intuitively that an approach isn&#8217;t going to work but will struggle to explain why they know that.</p>
<h3>Solving problems</h3>
<p>The other situation where &#8216;be the worst&#8217; is perhaps limiting is when it comes to solving problems on a team.</p>
<p>At the first sign of being &#8216;stuck&#8217; there is a real temptation to ask someone for help even though you might be able to solve the problem alone given enough time.</p>
<p>A colleague in my first job suggested that whenever I got stuck it was worth struggling with it for an hour before asking for help. I don&#8217;t know if that&#8217;s too prescriptive but there certainly seems to be some merit in the idea.</p>
<p>I&#8217;d be interested in hearing others&#8217; thoughts on this and whether there is in fact a point at which you can grow more by focusing less on learning all the time from others and more on stretching yourself to find situations in which to take the responsibility for making decisions based on that knowledge.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.markhneedham.com/blog/2010/06/26/is-be-the-worst-ever-limiting/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The &#8216;should&#8217; word</title>
		<link>http://www.markhneedham.com/blog/2009/11/17/the-should-word/</link>
		<comments>http://www.markhneedham.com/blog/2009/11/17/the-should-word/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 13:52:42 +0000</pubDate>
		<dc:creator>Mark Needham</dc:creator>
				<category><![CDATA[Learning]]></category>

		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=1841</guid>
		<description><![CDATA[I&#8217;ve been reading Coders at Work recently and one of my favourite answers from the first chapter interview with Jamie Zawinski is the following: I think one thing that&#8217;s really important is not to be afraid of your ignorance. If you don&#8217;t understand how something works, ask someone who does. A lot of people are [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been reading <a href="http://www.amazon.com/gp/product/1430219483?ie=UTF8&#038;tag=marneesblo-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=1430219483">Coders at Work</a> recently and one of my favourite answers from the first chapter interview with Jamie Zawinski is the following:</p>
<blockquote><p>
I think one thing that&#8217;s really important is not to be afraid of your ignorance. If you don&#8217;t understand how something works, ask someone who does. A lot of people are skittish about that. And that doesn&#8217;t help anybody. Not knowing something doesn&#8217;t mean you&#8217;re dumb &#8211; it just means you don&#8217;t know it yet.
</p></blockquote>
<p>A variation of this which I&#8217;ve noticed myself doing is internally telling myself that I &#8216;should&#8217; know how to do certain things much better than I can.</p>
<p>This is most typically the case when I&#8217;m struggling with something on a new project that I&#8217;m working on and while it is indirectly useful for helping to identify areas that we can work I think the voice in itself is not that helpful to our learning.</p>
<p>When this happens I&#8217;ve started writing down whatever it is that I think I should know better and then taking some time to read more in that area.</p>
<p>Wherever possible I also try to speak to people who already have that skill and find out how they went about learning it.</p>
<p>For example, as I mentioned in my post about <a href="http://www.markhneedham.com/blog/category/reading-code/">reading the Unity source code</a>, reading code is something I want to get better at and when I&#8217;ve worked with <a href="http://intwoplacesatonce.com/">Dave Cameron</a> he&#8217;s able to understand how things fit together much more quickly than I am.</p>
<p>When we discussed this he pointed out that he&#8217;d spent a lot of time debugging through a lot of different code bases just for fun and working out how they fitted together by following the control flow.</p>
<p>It&#8217;s pretty much always the case that others have spent quite a bit of time working on these skills so it&#8217;s certainly something to keep in mind next time I come across something I &#8216;should&#8217; know!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.markhneedham.com/blog/2009/11/17/the-should-word/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Learn one thing a day</title>
		<link>http://www.markhneedham.com/blog/2009/10/03/learn-one-thing-a-day/</link>
		<comments>http://www.markhneedham.com/blog/2009/10/03/learn-one-thing-a-day/#comments</comments>
		<pubDate>Sat, 03 Oct 2009 03:58:55 +0000</pubDate>
		<dc:creator>Mark Needham</dc:creator>
				<category><![CDATA[Learning]]></category>

		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=1697</guid>
		<description><![CDATA[I came across an interesting post about a month or so written by Chad Fowler on Tim Ferriss&#8217; blog where he suggested that a useful way of ensuring that we are always improving is to ask the question &#8216;Am I better than yesterday?&#8216; at the end of each day. I really like this idea and [...]]]></description>
			<content:encoded><![CDATA[<p>I came across an interesting post about a month or so written by Chad Fowler on Tim Ferriss&#8217; blog where he suggested that a useful way of ensuring that we are always improving is to ask the question &#8216;<a href="http://www.fourhourworkweek.com/blog/2009/07/28/the-big-question-are-you-better-than-yesterday/">Am I better than yesterday?</a>&#8216; at the end of each day.</p>
<p>I really like this idea and I think it fits in quite nicely with the approach that I take which is to try and ensure that I learn one new thing each day. </p>
<p>I find that it encourages me to be more inquisitive than I might otherwise be and helps avoid the problem of just cruising through the day and just doing the same thing day in day out.</p>
<p>When we start working on a new project it&#8217;s quite easy to achieve this because we don&#8217;t know much about the domain, we might not be familiar with the stack, there&#8217;s existing code to get familiar with and so on. </p>
<p>It&#8217;s much more challenging after you&#8217;ve worked on the same thing for a while and it&#8217;s certainly tempting to conclude that there&#8217;s nothing else to learn and that you need to work on something new to learn new things. </p>
<p>To an extent that&#8217;s true because I find that a lot of what I learn comes from working with different people who have completely conflicting opinions on the best way to do things but there&#8217;s certainly ways to keep on learning even after we&#8217;ve got past the initial <a href="http://softwarecraftsmanship.oreilly.com/news/2008/10/11/the-firehose">fire hose</a> learning stage. </p>
<h3>Continuously question what you&#8217;re doing</h3>
<p>This is <a href="http://www.markhneedham.com/blog/2009/09/25/tdd-it-makes-you-question-what-youre-doing/">much easier when you&#8217;re pair programming</a> but certainly possible even when working alone. </p>
<p>I think what you question probably depends on what interests you the most so for me that tends to be a lot around how we can test code more effectively and how to make code more expressive and explicit wherever possible.</p>
<p>In order to do that I&#8217;m often looking for patterns that help to describe approaches that worked well and if we get something wrong then I want to try and discover what we would need to do when encountered with a similar situation in the future to not make that mistake again.</p>
<p>Fairly closely linked with the idea of questioning what we&#8217;re doing is to try out other approaches and see if they work out better than what we&#8217;re currently doing.</p>
<p>For example my colleague Matt Dunn and I were recently discussing where the factory and builder patterns were more applicable for object creation in different contexts.</p>
<p>We already had the factory pattern implemented in one section of the code so we spent a little time playing around with the builder pattern to see if that would have worked out better.</p>
<p>I think this appraoch works quite well because you can quickly see the potential problems you might encounter with another approach which might not be entirely obvious if you only talk about it.</p>
<h3>Trawl the code base</h3>
<p>An approach which I find quite useful once you are becoming reasonably comfortable when working with a code base is to start trying to find bits of it that you haven&#8217;t done much work on or that you are curious to learn more about.</p>
<p>For me this exploration tends to guide me to the edges of the applicatins I work on and the interaction with other libraries that we are making use of.</p>
<p>A couple of examples of ares that I&#8217;ve explored on projects I&#8217;ve worked on have been the way that we make use of a dependency injection container which can often seem a bit &#8216;magical&#8217; and  the &#8216;glue code&#8217; that we use to integrate with libraries like Hibernate.</p>
<p>If my intrigue is great enough then I&#8217;ll probably end up looking through the code for those libraries as well.</p>
<p>There&#8217;s nearly always something new to learn there as the design of frameworks tends to be a bit different than the design of applications from what I&#8217;ve seen.</p>
<h3>And if that doesn&#8217;t teach you anything&#8230;</h3>
<p>At some stage we probably reach a  point where we&#8217;re really familiar with the code base and there doesn&#8217;t seem to be much else that we can learn from a project.</p>
<p>If this is the case then I&#8217;ve found that <a href="http://www.markhneedham.com/blog/category/dotnet/f-dotnet/">learning a new language</a>, taking part in <a href="http://www.markhneedham.com/blog/category/coding-dojo/">coding dojos</a> or participating in a <a href="http://www.markhneedham.com/blog/category/book-club/">book club</a> can not only be quite useful for helping to learn new ideas/techniques but also perhaps giving you a new perspective on your project code base.</p>
<p>It&#8217;s also interesting to talk to other people to see what they&#8217;re learning as it can give you ideas of some areas that you might want to improve in as well.</p>
<p>I think people working in software development generally have a desire to learn new things and most of the time it&#8217;s quite easy to find those opportunities so these are just a few ideas for things I try to do when it feels like I&#8217;m cruising too much for my liking.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.markhneedham.com/blog/2009/10/03/learn-one-thing-a-day/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

