<?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>Joseph Bulger IV &#187; Technology</title>
	<atom:link href="http://josephbulger.com/category/technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://josephbulger.com</link>
	<description>God, Family, Church, Engineering</description>
	<lastBuildDate>Thu, 20 Oct 2011 12:00:50 +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>Gist @ GitHub and why it&#8217;s awesome</title>
		<link>http://josephbulger.com/technology/gist-github-and-why-its-awesome/</link>
		<comments>http://josephbulger.com/technology/gist-github-and-why-its-awesome/#comments</comments>
		<pubDate>Tue, 18 Oct 2011 12:00:08 +0000</pubDate>
		<dc:creator>Joseph</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[gist]]></category>
		<category><![CDATA[github]]></category>

		<guid isPermaLink="false">http://josephbulger.com/?p=845</guid>
		<description><![CDATA[In case you haven&#8217;t noticed, a lot of my posts recently have been using gist. It&#8217;s an awesome tool that&#8217;s freely available which allows you to write snippets of code in a variety of languages. Not only does it do that, but the actual gist that you create is a full fledged Git repository, which [...]]]></description>
			<content:encoded><![CDATA[<p>In case you haven&#8217;t noticed, a lot of my posts recently have been using <a title="Gist" href="https://gist.github.com/" target="_blank">gist</a>. It&#8217;s an awesome tool that&#8217;s freely available which allows you to write snippets of code in a variety of languages.</p>
<p><span id="more-845"></span>Not only does it do that, but the actual gist that you create is a full fledged Git repository, which means you have the ability to clone it , pull and push from it.</p>
<p>I also use a <a href="http://wordpress.org/extend/plugins/embed-github-gist/" target="_blank">plug in</a> for my blog that let&#8217;s me show individual files on any of my gists.</p>
]]></content:encoded>
			<wfw:commentRss>http://josephbulger.com/technology/gist-github-and-why-its-awesome/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Team Maturity: Self-Organizing</title>
		<link>http://josephbulger.com/technology/team-maturity-self-organizing/</link>
		<comments>http://josephbulger.com/technology/team-maturity-self-organizing/#comments</comments>
		<pubDate>Fri, 14 Oct 2011 12:00:24 +0000</pubDate>
		<dc:creator>Joseph</dc:creator>
				<category><![CDATA[Leading]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[team-maturity]]></category>

		<guid isPermaLink="false">http://josephbulger.com/?p=791</guid>
		<description><![CDATA[Your team has been in the Learning stage and it&#8217;s heading into the Self-Organizing stage. Team members have learned the skills necessary to become self-organizing now, and everything gets done whether you&#8217;re there or not. This is where a lot of people get scared. What good am I as a lead if I&#8217;m not needed anymore? [...]]]></description>
			<content:encoded><![CDATA[<p>Your team has been in the <a title="Team Maturity: Learning" href="http://josephbulger.com/technology/team-maturity-learning/">Learning stage</a> and it&#8217;s heading into the Self-Organizing stage. Team members have learned the skills necessary to become self-organizing now, and everything gets done whether you&#8217;re there or not. This is where a lot of people get scared. What good am I as a lead if I&#8217;m not needed anymore? Couldn&#8217;t my higher ups just fire me and let the team do it&#8217;s thing?<span id="more-791"></span></p>
<p>Not to worry. In the Self-Organizing stage your role turns to more of a Coach. You need to <em>grow</em> your team into learning new things, technologies or tools to help them in what they do. Inspire them to be passionate about their job. This is also the perfect stage to take those team members that you identified earlier as your potential leaders and really coach them into<em><strong> becoming</strong></em> leaders. If you do your job well enough, then they can do your job <em>for</em> you. <strong>This is not a bad thing. </strong>If they can do your job for you, that frees you up to help with other projects, or start new ones.</p>
<p>In reality, a team will never be able to sustain being in the Self-Organizing stage, though. Teams will cycle through stages. Usually it&#8217;s a circular pattern. It almost always happens because the scope of the project changes in some way. Maybe they need to learn a whole new technology stack. Maybe the project has taken a whole new direction and you need to develop completely new projects. If this happens don&#8217;t think it&#8217;s a sign that you or your team has done something wrong. It&#8217;s just a natural part of the team cycle. It should be <em><strong>easier</strong></em> for subsequent cycles. The more your team has experience going through the cycles, and gain experience with how they work inside each cycle, the easier it will be to ramp back up to Self-Organizing.</p>
]]></content:encoded>
			<wfw:commentRss>http://josephbulger.com/technology/team-maturity-self-organizing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Team Maturity: Learning</title>
		<link>http://josephbulger.com/technology/team-maturity-learning/</link>
		<comments>http://josephbulger.com/technology/team-maturity-learning/#comments</comments>
		<pubDate>Thu, 15 Sep 2011 22:00:55 +0000</pubDate>
		<dc:creator>Joseph</dc:creator>
				<category><![CDATA[Leading]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[team-maturity]]></category>

		<guid isPermaLink="false">http://josephbulger.com/?p=749</guid>
		<description><![CDATA[So you&#8217;re team now has time to learn, and some of them (if not all), are taking advantage of that. How do you get them to be self-organizing? That&#8217;s where you start pushing responsibilities onto your team. The problem with teams that are not self-organizing is that they don&#8217;t have the skills to be self-organizing. [...]]]></description>
			<content:encoded><![CDATA[<p>So you&#8217;re team now has time to learn, and some of them (if not all), are taking advantage of that. How do you get them to be self-organizing? That&#8217;s where you start pushing responsibilities onto your team.</p>
<p><span id="more-749"></span>The problem with teams that are not self-organizing is that they don&#8217;t have the skills <em><strong>to be</strong></em> self-organizing. Your job is to identify what skills are lacking, and give them the opportunities to grow those skills.</p>
<p>This usually involves a couple of different areas. Your team won&#8217;t need help in technical areas, mostly, because they focus on that themselves. There are exceptions, but to get them to self-organizing, you want them to focus on other areas too.</p>
<p>When a team member comes to you with a problem, don&#8217;t solve it for them. Give them the tools they need to solve it for themselves. Let them grow. They may hate you for it at first, but in the end it will be very rewarding for them, and the good ones will recognize and appreciate what you&#8217;ve done for them.</p>
<p>Find your leaders. They will be the ones who will lead when you get to self-organizing. Give them the tools they need to learn how to do your job. No, they&#8217;re not going to replace you, and you won&#8217;t lose your job. If you can grow one leader to do your job so well that they <em><strong>can</strong></em> replace you, and a team to be self-organizing, then you&#8217;ve just shown that you have the ability to grow teams. Any company will see that and capitalize on your abilities to produce good teams.</p>
<p>When your in the chaos stage, you spend a lot of time putting up barriers between your team and the outside world. This is to protect them so you can give them room to learn and grow. You&#8217;re not in chaos anymore, though, and it&#8217;s time to start taking down some of those barriers. Your team needs to grow in the areas that are <em><strong>outside</strong></em> of the barriers you put up. Lower your barriers, and let your team learn to handle what&#8217;s in the outside world. Clients, business analysts, project managers, etc. They need to learn how to deal with different actors, people besides QA and their team lead.</p>
<p>Eventually they&#8217;ll grow to the final stage, Self-Organizing.</p>
]]></content:encoded>
			<wfw:commentRss>http://josephbulger.com/technology/team-maturity-learning/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Team Maturity: Chaos</title>
		<link>http://josephbulger.com/technology/team-maturity-chaos/</link>
		<comments>http://josephbulger.com/technology/team-maturity-chaos/#comments</comments>
		<pubDate>Tue, 13 Sep 2011 22:00:10 +0000</pubDate>
		<dc:creator>Joseph</dc:creator>
				<category><![CDATA[Leading]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[chaos]]></category>
		<category><![CDATA[team-maturity]]></category>

		<guid isPermaLink="false">http://josephbulger.com/?p=742</guid>
		<description><![CDATA[So how do you know if your team is in choas? Actually, most teams are in the chaos stage. Learning to identify when a team has gotten into chaos isn&#8217;t really that hard if you follow some simple guidelines, though. Ask yourself a simple question. Does my team have enough time to learn new things? [...]]]></description>
			<content:encoded><![CDATA[<p>So how do you know if your team is in choas? Actually, most teams are in the chaos stage. Learning to identify when a team has gotten into chaos isn&#8217;t really that hard if you follow some simple guidelines, though.</p>
<p><span id="more-742"></span></p>
<p>Ask yourself a simple question.</p>
<blockquote><p>Does my team have enough time to learn new things?</p></blockquote>
<p>If the answer is no, then you&#8217;re in chaos. I&#8217;ll go one step further. If the answer was &#8220;no, why does my team need to learn anything?&#8221;, then you&#8217;re in chaos, and if you want to fix it you need to look at yourself.</p>
<p>All teams need time to learn. This is important so that they can become more productive, and to move towards being self-organizing. If they can&#8217;t learn then they&#8217;ll never get the self-organizing stage.</p>
<p>If you&#8217;re with me so far, then you&#8217;re probably asking</p>
<blockquote><p>How do I make time for my team to learn?</p></blockquote>
<p>It starts by identifying why you&#8217;re team doesn&#8217;t have time. Sometimes it can be as simple as giving them some extra time in the week to learn something new. Tell your team they can have 4 hours on Friday to learn whatever they want. This will let you see which people on your team are self-motivated. This is vitally important. It identifies your <strong><em>leaders</em></strong>. For those who choose not to learn anything, make it a requirement. The best way to go about doing this is to just ask people how they&#8217;re learning is going. Maybe every Monday you ask each team member individually what thing they learned on Friday. This is great because it sets up an expectation for them that they not only have the opportunity to learn, but that you&#8217;re <em><strong>expecting</strong></em> them to learn.</p>
<p>Not all teams will have time for this. Your release cycle swamps you with work, for various reasons, and prevents you from being able to give this critical time to your team. So what then? That&#8217;s when you&#8217;re role become a fire fighter of sorts. You have to put out the fires. The point here, though, is to extinguish the fire, permanently. If you&#8217;re putting out one fire, and two fires pop up in it&#8217;s place, then you have another issue which needs to be addressed. You&#8217;re the team leader, and it&#8217;s your job to control the fire. You have to shield your team, that&#8217;s your job during this stage. That means putting out fires, but it also means <em><strong>not allowing other fires to start in the first place</strong></em>.</p>
<p>This is usually a good indication that you&#8217;re lacking tools that help your team be more productive. For example, maybe your &#8220;fire&#8221; is releases. They take too long to do, because they&#8217;re manual. You release often, so it&#8217;s something you spend a lot of time on. Why isn&#8217;t your release process automated? Take a step back, is your build process automated? No? That&#8217;s the beginning of your problem. You can&#8217;t have an automated release process if you don&#8217;t have an automated build process. Another example, is it hard for your team to share projects? Do you find yourself in situations where two people are working on the same thing and stepping on each other&#8217;s toes a lot? Does this require you to put people on separate projects so you don&#8217;t get into a tangled web of conflicts? Yes?</p>
<p>Are you using source control?</p>
<p>No? Get it.</p>
<p>Yes? Are you using a <em><strong>good</strong></em> source control system? Your team needs to be able to work together, and if your source control doesn&#8217;t accommodate that it&#8217;s probably because it&#8217;s not so great. Try a new one. Maybe Git, or Mercurial, or if you&#8217;re not into <a href="http://en.wikipedia.org/wiki/Distributed_revision_control" target="_blank">DVCS</a>, try SVN.</p>
<p>There are a lot of things that can hinder your team&#8217;s productivity. Most of them have been solved by other teams already using automation. You&#8217;re team probably isn&#8217;t special, and their problems have probably been solved by other (bigger and more productive) teams. See what they&#8217;ve done. Copy them, mimic them, learn from them.</p>
<p>Get your team out of chaos, so they can learn, and make your job easier.</p>
]]></content:encoded>
			<wfw:commentRss>http://josephbulger.com/technology/team-maturity-chaos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recruiters, if you&#8217;re doing this you&#8217;ve already lost</title>
		<link>http://josephbulger.com/technology/recruiters-if-youre-doing-this-youve-already-lost/</link>
		<comments>http://josephbulger.com/technology/recruiters-if-youre-doing-this-youve-already-lost/#comments</comments>
		<pubDate>Thu, 08 Sep 2011 16:00:39 +0000</pubDate>
		<dc:creator>Joseph</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[recruiting]]></category>

		<guid isPermaLink="false">http://josephbulger.com/?p=714</guid>
		<description><![CDATA[I received an email this morning regarding an &#8220;urgent&#8221; position that needed to be filled. I get these all the time, but what really struck a cord with me was the last part of the email where the recruiter actually wanted me to fill out all my information in an HTML form that he put [...]]]></description>
			<content:encoded><![CDATA[<p>I received an email this morning regarding an &#8220;urgent&#8221; position that needed to be filled. I get these all the time, but what really struck a cord with me was the last part of the email where the recruiter actually wanted me to fill out all my information in an HTML form that he put into the email.</p>
<p><span id="more-714"></span>So I decided it was time about time to do this. Notice to recruiters, if you are soliciting information from potential candidates in the hope that you&#8217;ll grab a bite, you&#8217;re fighting an uphill battle. The reality is, you&#8217;ve already lost, and you need to go back to the drawing board.</p>
<p>I know you&#8217;re job is to find candidates, and I&#8217;m not saying you should stop doing that. What I&#8217;m saying is, you should be doing a <em><strong>better job</strong></em>. Let&#8217;s assume for a second that your opportunity is legitimate, and let&#8217;s take it a step further and say it&#8217;s a good opp. You should be doing your due diligence to find the <em>right</em> candidate, not just spamming a bunch of people&#8217;s emails that happen to fit the search criteria you used.</p>
<p>All those fields you want people to fill in for you? You should have figured them out already. At the very least, the ones that actually matter. For example, if you&#8217;re looking for &#8220;local only&#8221; candidates, then guess what, you should only be soliciting <em><strong>local people</strong></em>. Another example, and this one is really ridiculous, if you&#8217;re looking for a job with certain technology requirements (i.e. &#8220;X years experience with Technology ABC&#8221;), and then you proceed to <em><strong>ask</strong></em> what technologies the person you&#8217;re soliciting knows and how much experience they have in each. I don&#8217;t think there are words to describe how much of an oxymoron that is.</p>
<p>You should know what skills your candidate has before you contact them. That&#8217;s the whole reason why sites like monster, dice, careerbuilder, and careers @ stackoverflow really exist in the first place. Use them.</p>
<p>Also, this one goes out to recruitment firms: stop making people fill in <em><strong>another</strong></em> application form just because your recruitment firm is somehow <em>special</em>. Guess what, it&#8217;s not special at all. In fact, that pretty much means your firm is on my list, the list of firms not to get involved with.</p>
<p>I guess that&#8217;s about all I have to say. If this post only changes one person&#8217;s mind about recruiting, then I think it&#8217;s time well spent.</p>
]]></content:encoded>
			<wfw:commentRss>http://josephbulger.com/technology/recruiters-if-youre-doing-this-youve-already-lost/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interviewing: Done Easy</title>
		<link>http://josephbulger.com/technology/interviewing-done-easy/</link>
		<comments>http://josephbulger.com/technology/interviewing-done-easy/#comments</comments>
		<pubDate>Wed, 31 Aug 2011 16:00:57 +0000</pubDate>
		<dc:creator>Joseph</dc:creator>
				<category><![CDATA[Leading]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://josephbulger.com/?p=626</guid>
		<description><![CDATA[When I develop applications, any time I can forgo repeating myself I usually take the opportunity to save myself the time. The same applies to a lot of my daily routine at work. If there&#8217;s a way I can do things better, I&#8217;m all about it. So when I started conducting interviews, the first thing I started [...]]]></description>
			<content:encoded><![CDATA[<p>When I develop applications, any time I can forgo repeating myself I usually take the opportunity to save myself the time. The same applies to a lot of my daily routine at work. If there&#8217;s a way I can do things better, I&#8217;m all about it. So when I started conducting interviews, the first thing I started thinking about was how I can make this as stream lined as possible.</p>
<p><span id="more-626"></span>If my <a title="Interviewing: Done Right" href="http://josephbulger.com/technology/interviewing-done-right/">previous post</a> about how to do interviews correctly, I talked about 2 questions I ask my interviewees. The second question is about letting the interviewee show me if they can explain basic development principles, in layman&#8217;s terms. There&#8217;s not a lot of streamlining that can be done there, to be honest. Ask the question, let them talk. However, the first question is a programming question, and getting the user set up to handle the question can be tricky depending on how they want to answer it.</p>
<p>How do I know that the interviewee answered the question correctly? Usually, I can just eye ball it, and I&#8217;m right about 95% of the time, but I wanted something better. I wanted to present the interviewee with something that removed the possibility of me screwing up, but also of them misunderstanding the problem.</p>
<p>So what I did was create a <a title="interviewing project" href="https://github.com/josephbulger/Interviewing" target="_blank">project on github</a> that has different versions of the question. So far I have one in javascript, and one in C#.</p>
<p>The javascript version runs using jQuery and uses QUnit to verify the user has coded the problem successfully. I have a runner html file that the interviewee can fire up in their browser of choice and it will automatically validate if what they did is correct. The great thing is, if it works, everything &#8220;green lights&#8221;, whereas if they&#8217;re wrong, it &#8220;red lights&#8221;. I mean that literally, so I can visually see within a split second if the code is good or not.</p>
<p>The C# version is similar, but it presented itself with some different dilemmas. For example, with C# usually people are going to want to showcase their talents using Visual Studio. The problem is, how do I get my test framework to the interviewee? The traditional approach would be to send it to them in an email or something, but I want to rule out the possibility of the interviewee trying to pull one over on me, or coming up with excuses like &#8220;I couldn&#8217;t load what you sent me&#8221;, or something to that extend. Instead, I built a nuget package, and I&#8217;ve pushed it up to the <a title="nuget.org" href="http://nuget.org/" target="_blank">nuget gallery</a>.</p>
<p>This has a few benefits. The first being that anyone running VS 2010 with the nuget extension installed can find and install my interview questions. Below I&#8217;m going to include a video of myself doing it just to show how simple it actually is. The second benefit is that there&#8217;s no guess work involved, so the interviewee can&#8217;t give excuses. All they need is VS 2010 and internet, which if they&#8217;re being interviewed by me, they already have internet. If the interviewee doesn&#8217;t have VS, they can just use notepad and I can copy paste what they&#8217;ve done on my side and run it.</p>
<p>Either way, there&#8217;s no excuse, and it&#8217;s <em><strong>fast</strong></em>.</p>
<p>How fast is it? Check out this video of me setting it up on a new project:</p>
<p style="text-align: center;"><a rel="rokbox[854 505](interview)" title="FizzBuzz :: Doing an Interview was never so easy" href="http://vimeo.com/28377656"><img class="interview" src="http://b.vimeocdn.com/ts/189/263/189263647_200.jpg" alt="FizzBuzz :: Doing an Interview was never so easy" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://josephbulger.com/technology/interviewing-done-easy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Interviewing: Done Right</title>
		<link>http://josephbulger.com/technology/interviewing-done-right/</link>
		<comments>http://josephbulger.com/technology/interviewing-done-right/#comments</comments>
		<pubDate>Fri, 19 Aug 2011 16:00:59 +0000</pubDate>
		<dc:creator>Joseph</dc:creator>
				<category><![CDATA[Leading]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[interviewing]]></category>

		<guid isPermaLink="false">http://josephbulger.com/?p=612</guid>
		<description><![CDATA[When I conduct interviews, I want to see you code. I don&#8217;t want to see your code, I want to see you type something from scratch. That means, brand new, as in not something you&#8217;ve already done (or copied from somewhere else). I give the same problem to all the people I interview. It helps [...]]]></description>
			<content:encoded><![CDATA[<p>When I conduct interviews, I want to see you code. I don&#8217;t want to see <em><strong>your code</strong></em>, I want to see you type something from scratch. That means, brand new, as in not something you&#8217;ve already done (or copied from somewhere else).</p>
<p><span id="more-612"></span>I give the same problem to all the people I interview. It helps me form a baseline and I can easily compare how one person did to another. After all, they solved <em><strong>the same problem</strong></em>. The problem I give has nothing to do with technology stacks. In fact, I usually let the user choose what language they want to do it in, and also how they want to deploy it. My preference is to watch them use some kind of testing framework, but I don&#8217;t expect it, nor require it.</p>
<p>I also record the interview. I record it so I can refer to it later when anyone has any questions about the interview. The recordings are also a really great way to <em><strong>coach other people</strong></em> how to do the interview.</p>
<p>The algorithm/problem I give my interviewees is really simple. I mean, it&#8217;s <em><strong>drop dead simple</strong></em>. Why make it so simple? For a couple reasons, actually.</p>
<ul>
<li>I don&#8217;t want to be there forever.</li>
</ul>
<p>Totally selfish reason, I know, but if I hated long interviews when I was taking them, you bet I&#8217;m going to hate them when I&#8217;m giving them. I want it to be short. I shoot for 30 minutes, but if I&#8217;m going over an hour there&#8217;s a problem. This portion of the interview should only take 15 minutes. Any more than that and a flag goes off in my head.</p>
<ul>
<li>Simple problems can show you a lot about a person.</li>
</ul>
<p>Does the person take time to do it right, even if the problem is simple? Do they use TDD when they say they&#8217;re an avid TDDer? Do they stick to principles like SRP and DIP when they say they know and use all of the SOLID principles? These things come through on simple problems, and are a lot easier to spot.</p>
<ul>
<li>Benchmarking</li>
</ul>
<p>Simple means there&#8217;s no excuse. If I give a simple problem, no one can come back to me and say, &#8220;how can you expect me to answer this kind of thing on the fly?&#8221; It also lets me take how one person did and compare them to another person. Here I&#8217;m not so much concerned about time as I am about technique.</p>
<p>When they finish with the problem I gave them they move onto the second item for the interview, which is a question or set of questions about Object Oriented Principles. I&#8217;m not looking for the dictionary definition, either. I want a real life, come up with an example for me on the fly, kind of answer. It let&#8217;s me watch the interviewee think. They have a chance to show me that not only can they tell me what the principles <em>are</em>, but do they <em><strong>understand them</strong></em> and can they explain them to me.</p>
<p>Again, the questions are simple for the same reasons that the problem was simple. It should be easy in concept, and thoughtful in reply. I&#8217;ve already seen them code, so I should have seen some of these concepts in action, but I need to make sure they <em><strong>know what they&#8217;re typing</strong></em>. If you can&#8217;t tell someone else what you&#8217;re doing, then when you work on a team you won&#8217;t be able to explain to your team mates what you&#8217;ve implemented, even if it&#8217;s good code. Contrary to what most people might think, <em><strong>communication is more important than your coding skills</strong></em>.</p>
<p>However, doing an interview right only get&#8217;s us part of the way there. We also need to know how to do is easy.</p>
]]></content:encoded>
			<wfw:commentRss>http://josephbulger.com/technology/interviewing-done-right/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Interviewing: How many questions can you answer in 30 minutes?</title>
		<link>http://josephbulger.com/technology/interviewing-how-many-questions-can-you-answer-in-30-minutes/</link>
		<comments>http://josephbulger.com/technology/interviewing-how-many-questions-can-you-answer-in-30-minutes/#comments</comments>
		<pubDate>Thu, 18 Aug 2011 16:00:22 +0000</pubDate>
		<dc:creator>Joseph</dc:creator>
				<category><![CDATA[Leading]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[interviewing]]></category>

		<guid isPermaLink="false">http://josephbulger.com/?p=595</guid>
		<description><![CDATA[I&#8217;m not the kind of person that really get&#8217;s turned off by interviews. I actually enjoy them sometimes. It can be a good test of my skills and knowledge. A lot of the time it shows me whether or not I&#8217;m good at explaining what I know. Communication is very important to me in my [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m not the kind of person that really get&#8217;s turned off by interviews. I actually enjoy them sometimes. It can be a good test of my skills and knowledge. A lot of the time it shows me whether or not I&#8217;m good at explaining what I know. Communication is very important to me in my career. Lately, however, I&#8217;ve taken a different role in the interviewing process. I&#8217;ve become the one giving them instead of taking them. I thought today would be a good day to talk about interviews I&#8217;ve had, and what kind of interviews I think make up &#8220;good&#8221; interviews, and which one&#8217;s I think are &#8220;bad&#8221;.</p>
<p><span id="more-595"></span></p>
<p>Let&#8217;s start of with the title of this post. I work in a technical field. All of the &#8220;first time&#8221; interviews I&#8217;ve had almost always end up the same way. I spend about 30 minutes (probably more) talking with some person about my skill set and whether or not I&#8217;d be a good fit for the job they&#8217;re asking me about. I&#8217;ll put these people into two buckets, the good ones and the bad ones.</p>
<p>The good people that I talk to always do it the same way. They don&#8217;t really ask me any questions at all. They tell me exactly what the position is, where it&#8217;s located, any skills that are absolutely required, the salary range (usually), etc. The key here is that they&#8217;re the ones talking. They aren&#8217;t asking me any technical questions. This is vitally important. The &#8220;first time&#8221; call should only be about 2 things: do I exist? and how interested am I in this position? A really good recruiter, or whatever you want to call them, will keep this call <em><strong>very</strong></em> short. Some times I&#8217;ve had them be only 10 minutes. I would love for them to be only 5, but that&#8217;s not usually feasible because recruiters really like to go into details about the positions they&#8217;re filling.</p>
<p>The bad people grill you. And a lot of times they grill you for a <em><strong>really really long time</strong></em>. I think I&#8217;ve had first time calls last me over an hour with someone asking me all sorts of questions about &#8220;do I know this&#8221; and &#8220;do I know that&#8221;. The problem with first time calls asking you a lot of questions is really quite simple. How would they know if I&#8217;m lying? They <em><strong>wouldn&#8217;t</strong></em>. They wouldn&#8217;t know because they&#8217;re <em><strong>not technical people</strong></em>. The problem is usually with these bad first time calls is that they <em><strong>don&#8217;t have a second call</strong></em>. Once they talk to you and get the obligatory &#8220;this guy said yes to all my questions, he must be totally awesome!&#8221; run through, for all intensive purposes <em><strong>they&#8217;re done</strong></em>.</p>
<p>This can really be a nightmare from a positioning standpoint. Companies get ridiculous turn over on resources because they don&#8217;t take the time to find the right person for the right job. It seems like common sense that you would want to evaluate someone on what they do before they are hired. The stance on this this in the tech industry has been varied, though. A lot of people think that asking questions is sufficient. That someone being asked complicated enough questions who doesn&#8217;t know what&#8217;s being asked will just buckle under the pressure. Unfortunately that has caused our industry to become full of professional BSers. Other people think that you&#8217;ll never really know if someone is worth their grain of salt until you try them out. This is somewhat true, but doing <em><strong>nothing</strong></em> about it will only land you with the same group, the BSers.</p>
<p>I&#8217;m joining the side that will be responsible for ridding our industry of these people. My position on this is simple. If you want a job as a professional developer, <em><strong>show me teh codez</strong></em>. Talk is cheap, I want to see you code.</p>
<p>And that&#8217;s how I interview. Get ready to see some code.</p>
]]></content:encoded>
			<wfw:commentRss>http://josephbulger.com/technology/interviewing-how-many-questions-can-you-answer-in-30-minutes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vacationeer&#8217;s Guide: Projections</title>
		<link>http://josephbulger.com/technology/vacationeers-guide-projections/</link>
		<comments>http://josephbulger.com/technology/vacationeers-guide-projections/#comments</comments>
		<pubDate>Wed, 17 Aug 2011 16:00:10 +0000</pubDate>
		<dc:creator>Joseph</dc:creator>
				<category><![CDATA[Consulting]]></category>
		<category><![CDATA[Leading]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[vacationeer-guide]]></category>

		<guid isPermaLink="false">http://josephbulger.com/?p=579</guid>
		<description><![CDATA[When you plan a road trip, you&#8217;re really only concerned about figuring out one thing: how long will it take me to get there? But for projects, this isn&#8217;t always the case. The same formula applies, though. Now that we know how to measure out velocity, we can use that metric to figure out one [...]]]></description>
			<content:encoded><![CDATA[<p>When you plan a road trip, you&#8217;re really only concerned about figuring out one thing: how long will it take me to get there? But for projects, this isn&#8217;t always the case. The same formula applies, though.<span id="more-579"></span></p>
<p>Now that we know how to <a title="Team Velocity" href="http://josephbulger.com/technology/vacationeer’s-guide-determining-your-teams-velocity">measure out velocity</a>, we can use that metric to figure out one of two fundamental things:</p>
<ol>
<li>How long will it take us to get there?</li>
<li>How far will we get?</li>
</ol>
<p>Velocity can&#8217;t answer both questions for us, but if we&#8217;re willing to concede and control one of the two variables, either the distance or the time, then we can project what the other thing will be.</p>
<p>For example, if the team is getting pressure to release by a certain date (sound familiar?), then with your velocity you can project how many features you&#8217;ll actually have done by that time frame. If, however, the team is under pressure to get Awesome Feature X done and released, then you can use the same formula to project when that feature will be done.</p>
<p>With road trips my family almost always chooses to control the distance and project the time. My wife wants to go to Disney World, for example. That&#8217;s choosing the distance factor. Now if I know my velocity I can project how long it will take us to get there. On the other hand, some times we want to do a quick weekend trip to somewhere just to get out for a few days. In those cases, we&#8217;re bound more by time, because we don&#8217;t want to be on the road the whole weekend. In that case, we constrain our time window, and see how far that will take us.</p>
<p>This is where the real power of knowing velocity comes from. Your implementation team is the engine of you car. Understanding velocity and how it works and what it means to your team is like having a speedometer. Until you know about velocity, you&#8217;re like driving a car with a broken speedometer.</p>
<p>A lot of common questions of project management start being fundamentally changed when you introduce velocity. For example, a question like, &#8220;How do I make my team work faster?&#8221; changes to something like &#8220;How do I increase my team&#8217;s velocity?&#8221; I&#8217;ve seen this happen almost any time that a team embraces these concepts, and it&#8217;s not only a change in the wording of the question that is profound, but in the meaning of what is behind it. Velocity is a historical metric for your team&#8217;s progress, so asking a question like how to make that number go higher because a much more scientific question completely. The answer is can be varied, but it all comes back to where it started, with the velocity. Try something out on your team, then wait and see how your velocity changes. You&#8217;re doing an experiment now. Not only that, but you know how to <em><strong>measure the results</strong></em>.</p>
<p>Enjoy your new found technique. If you have any questions or comments feel free to contact me.</p>
]]></content:encoded>
			<wfw:commentRss>http://josephbulger.com/technology/vacationeers-guide-projections/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vacationeer’s Guide: Determining Your Team&#8217;s Velocity</title>
		<link>http://josephbulger.com/technology/vacationeer%e2%80%99s-guide-determining-your-teams-velocity/</link>
		<comments>http://josephbulger.com/technology/vacationeer%e2%80%99s-guide-determining-your-teams-velocity/#comments</comments>
		<pubDate>Tue, 16 Aug 2011 16:00:54 +0000</pubDate>
		<dc:creator>Joseph</dc:creator>
				<category><![CDATA[Consulting]]></category>
		<category><![CDATA[Leading]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[vacationeer-guide]]></category>

		<guid isPermaLink="false">http://josephbulger.com/?p=570</guid>
		<description><![CDATA[Once your team has estimated a set of features, and assigned each feature their &#8220;point value&#8221;, it&#8217;s time to start measuring your team&#8217;s velocity! Measuring your team&#8217;s velocity is actually an easy thing to do. Your team will start working in release cycles that are broken down into parts. The lead or the project manager [...]]]></description>
			<content:encoded><![CDATA[<p>Once your team has estimated a set of features, and assigned each feature their &#8220;point value&#8221;, it&#8217;s time to start measuring your team&#8217;s velocity!</p>
<p><span id="more-570"></span>Measuring your team&#8217;s velocity is actually an easy thing to do. Your team will start working in release cycles that are broken down into parts. The lead or the project manager is usually a good role for determining how long these cycles should be. Some teams will have a release cycle of 3 weeks. Others will have longer cycles, it&#8217;s completely flexible. The key is to stay <em><strong>consistent</strong></em>. Once you make a choice on your cycle, you need to stick to it. The reason will become clear later.</p>
<p>The other thing to note here is that you can break down your release cycles into parts. My team calls them Iterations. I have some teams that work on 1 week iterations. I have other teams that work 3 week iterations. One team I lead has a 2 week iteration. The release cycles for all these teams are different, too. Some teams release at the end of every iteration. Other teams release every 2 iterations. I&#8217;ve worked on teams where the planning of the release was done more rigidly because of customers, and we would release every quarter or maybe 6 months. The point with those teams was not so much about the release cycle, but that the iteration cycle was still small. The largest iteration cycle I&#8217;ve worked on was 4 weeks long I think.</p>
<p>The point of the cycle here is to do one thing: allow your team a consistent amount of time to work on an attainable goal. That attainable goal is a certain number of features. How many features you ask? It completely depends on your team&#8217;s velocity! But when you first start, you don&#8217;t have a velocity, so you have to do a couple cycles just to figure out what the team can do.</p>
<p>So say you have 30 features to work on. You decide to have your team work in 3 week cycles. At the end of their first cycle, they complete 3 features. One of the features was valued at 5 points (<a title="Vacationeer’s Guide: Estimation" href="http://josephbulger.com/technology/vacationeer%e2%80%99s-guide-estimation/">from the estimation sessions</a>, remember), and the other 2 were valued at 3 points. That means the first cycle your team finished with a velocity of 11. That&#8217;s all there is to it! Now you repeat the same process over again. Do another cycle. Maybe the team got 15 points completed. Now average the two cycles together. The team&#8217;s velocity becomes 13. Rinse. Repeat. That&#8217;s how velocity is measured.</p>
<p>This is why your cycles have to be consistent, because you&#8217;re taking an average of the points your team completes. If you change the cycle length, then it messes up your velocity values. Now, having said that, there are points where it&#8217;s appropriate to change the cycle. I&#8217;ve done it many times before, but you have to account the change in your velocity calculations when you do it.</p>
<p>Now that we know how to measure velocity, we can use it to figure out things, which is our next topic:</p>
<blockquote><p>Projections</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://josephbulger.com/technology/vacationeer%e2%80%99s-guide-determining-your-teams-velocity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

