<?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>adam mokan &#187; team foundation server</title>
	<atom:link href="http://www.adammokan.com/category/microsoft/team-foundation-server/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.adammokan.com</link>
	<description>ramblings of a software developer, mad scientist, geek, and father</description>
	<lastBuildDate>Tue, 22 Nov 2011 19:11:17 +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>Upgrade from TFS2010 RC to RTM completed</title>
		<link>http://www.adammokan.com/2010/04/13/upgrade-from-tfs2010-rc-to-rtm-completed/</link>
		<comments>http://www.adammokan.com/2010/04/13/upgrade-from-tfs2010-rc-to-rtm-completed/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 21:55:03 +0000</pubDate>
		<dc:creator>adam.mokan</dc:creator>
				<category><![CDATA[team foundation server]]></category>
		<category><![CDATA[tfs2010]]></category>

		<guid isPermaLink="false">http://www.adammokan.com/2010/04/13/upgrade-from-tfs2010-rc-to-rtm-completed/</guid>
		<description><![CDATA[I just finished an in-place upgrade on our TFS2010 installation from the release candidate to the final. Everything went smooth. Five project collections upgraded fine and the data warehouse rebuilt with no issues. This is on the environment mentioned in my previous post. Be sure to look at the TFS2010 install documents for information and [...]]]></description>
			<content:encoded><![CDATA[<p>I just finished an in-place upgrade on our TFS2010 installation from the release candidate to the final. Everything went smooth. Five project collections upgraded fine and the data warehouse rebuilt with no issues. This is on the environment mentioned in my <a href="http://www.adammokan.com/2010/04/11/tfs2010rc-project-update/">previous post</a>.</p>
<p>Be sure to look at the TFS2010 install documents for information and do database backups.</p>
<p>You can find the installation guide <a title="Team Foundation Installation Guide for Visual Studio 2010 " href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=2d531219-2c39-4c69-88ef-f5ae6ac18c9f" target="_blank">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adammokan.com/2010/04/13/upgrade-from-tfs2010-rc-to-rtm-completed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TFS2010RC project update</title>
		<link>http://www.adammokan.com/2010/04/11/tfs2010rc-project-update/</link>
		<comments>http://www.adammokan.com/2010/04/11/tfs2010rc-project-update/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 06:44:16 +0000</pubDate>
		<dc:creator>adam.mokan</dc:creator>
				<category><![CDATA[microsoft]]></category>
		<category><![CDATA[server virtualization]]></category>
		<category><![CDATA[sharepoint 2010]]></category>
		<category><![CDATA[sql server]]></category>
		<category><![CDATA[team foundation server]]></category>
		<category><![CDATA[tfs2010]]></category>

		<guid isPermaLink="false">http://www.adammokan.com/2010/04/11/tfs2010rc-project-update/</guid>
		<description><![CDATA[The latest update on my Team Foundation Server 2010 RC project.
]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re on the eve of the RTM release of Team Foundation Server 2010 and I&#8217;ve been messing with an installation at home and one at work for a couple months now.</p>
<p>My current work setup is:</p>
<ul>
<li>VM server #1 (single CPU VM, Win Server 2008R2, 6gb RAM) &#8211; TFS server, Sharepoint Services, SQL 2008 Standard</li>
<li>VM server #2 (single CPU VM, Win Server 2008R2, 4gb RAM) &#8211; Reporting Services and Data Analysis server</li>
<li>Desktop PC (dual core proc, XP SP3, 2gb RAM) &#8211; build controller and two build agents</li>
</ul>
<p>I&#8217;m currently hosting five different project collections on this setup. My department&#8217;s &#8220;production&#8221; collection is the most active with around six TFS &#8220;projects&#8221; and a little over 500 work items. It&#8217;s mostly new development that is going into the TFS stack but I&#8217;ve been so busy with emergency work during the day and meetings that I&#8217;ve not been able to provide much guidance in regards to migration from the old VCS to TFS.</p>
<p><strong><span style="font-size: 14px;">What have I learned?</span></strong></p>
<ul>
<li>Security can be a nightmare as there are TONS of moving parts between Sharepoint, TFS, SQL, Reporting Services, and Data Analysis. My approach is to leverage domain groups and create matching groups in the various services. Then to add/remove someone you just go through the domain admins rather than adjusting everything in multiple places across the technology stack. But, this is still a lot more work than it should be, in my opinion. I cannot imagine properly administering this in an environment with thousands of users. I hope a power tool is released or some sort of centralized admin tool is created by someone.</li>
<li>I have a lot more respect for Sharepoint now. I&#8217;ve always been involved with Sharepoint from outside the department that administers it. I&#8217;ve created a couple web parts at a previous job and fought with overly possessive and territorial admins, which made life a nightmare. Being able to see the inner workings of Sharepoint and figure out the admin side has made me realize there is a lot more to the product than meets the eye. I&#8217;d like to take time to preview Sharepoint 2010 in the near future as it seems like they&#8217;re really pushing it as a &#8220;platform&#8221; rather than a content management system.</li>
<li>Despite the positives I&#8217;ve found in Sharepoint, the integration between TFS/Test Manager and Sharepoint just doesn&#8217;t feel right in some spots. It seems like there is a lot of missing feedback from things like builds and the testing environment that don&#8217;t make it back into the portal by default. I&#8217;ll list some examples at some point down the road. I just feel like you have to click through too many work items often to find the results or something.</li>
</ul>
<p><strong><span style="font-size: 14px;">What&#8217;s next?</span></strong></p>
<p><strong>A custom project template for my department. </strong></p>
<ul>
<li><span>We&#8217;re not quite &#8220;agile&#8221;, but I&#8217;m leaning things that way. So, I want to leverage what is in the agile template for 2010, but add or remove a couple items.</span></li>
</ul>
<p><strong>Integration with an outside work request/ticket system.</strong></p>
<ul>
<li>There are a lot of big companies out there in bed with Computer Associates/CA. We have a Service Desk system in place at the corporate level and groups are being pushed heavy towards that for tickets and requests. However, there is an initiative to migrate source control and other project artifacts to TFS. Obviously, this will be an issue when you&#8217;re going through your development/support life-cycle and you have no traceability of work items, since they&#8217;d be in Service Desk. In my opinion, without work items in TFS, you really don&#8217;t gain much other than a better VCS than SourceSafe. I have some tech info on the web services for the CA product and have started to wire up a link between the two.</li>
</ul>
<p><strong>Evaluation of the </strong><a title="http://scrumforteamsystem.com" href="http://scrumforteamsystem.com" target="_blank"><strong>Scrum for Team System</strong></a><strong> template.</strong></p>
<ul>
<li><strong><span style="font-size: 14px;"><span style="font-weight: normal; line-height: 15px; font-size: 13px;">Other groups evaluating my TFS implementation are using a full-blown Scrum methodology.</span></span></strong></li>
</ul>
<p><strong>Some sort of time-tracking tool integrated into TFS that links time to work items.</strong></p>
<ul>
<li>This is a controversial one when you look around the blogs.</li>
<li>Personally, I have such a chaotic schedule during the day and support over 500 users across 50+ &#8220;applications&#8221; which range from large web applications for payroll to single-page legacy ASPX apps I support. I&#8217;d like to say the process for support requests or emergencies is controlled, but the fact is we are understaffed like most groups. By the time 3 or 4pm hits, I often am scratching my head about where the majority of my day went. And when you add a handful of meetings each week, it gets really out of hand. So, I want to make it clear that I want time tracking for myself. Not some big brother, &#8220;how long is your ass in the seat&#8221;, time-tracking.</li>
<li>I really like the little time tracking tool that you can download and use with <a href="http://www.paymo.biz/" target="_blank">Paymo</a>, a free time-tracking/invoice web app I&#8217;ve used for side projects. I&#8217;d like to make some simple little toolbar widget that has a list of work items assigned to you in TFS and a timer start/stop. There are some other features I have in mind, but it would allow me to keep a more realistic overview of what I actually did each week. I currently rely on my Outlook calendar (which looks like a bad game of Tetris) and old emails; but those techniques are hardly accurate.</li>
</ul>
<p><strong><em>And finally&#8230; update to 2010 RTM. Which comes out around 10am PST tomorrow!!!</em></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adammokan.com/2010/04/11/tfs2010rc-project-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Removing a corrupt Project Collection in TFS2010</title>
		<link>http://www.adammokan.com/2010/03/22/removing-a-corrupt-project-collection-in-tfs2010/</link>
		<comments>http://www.adammokan.com/2010/03/22/removing-a-corrupt-project-collection-in-tfs2010/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 14:00:00 +0000</pubDate>
		<dc:creator>adam.mokan</dc:creator>
				<category><![CDATA[team foundation server]]></category>
		<category><![CDATA[tfs2010]]></category>
		<category><![CDATA[project collection]]></category>
		<category><![CDATA[tfsconfig]]></category>

		<guid isPermaLink="false">http://www.adammokan.com/2010/03/22/removing-a-corrupt-project-collection-in-tfs2010/</guid>
		<description><![CDATA[I ran into an issue when dealing with memory utilization early on in my TFS2010 setup. Basically, right after getting Team Foundation Server up and running, I created a new project collection with a better name for my group rather than using the default &#8220;DefaultCollection&#8221; or whatever it is. Unfortunately, because SQL was hammering my [...]]]></description>
			<content:encoded><![CDATA[<p>I ran into an issue when dealing with memory utilization early on in my TFS2010 setup.</p>
<p>Basically, right after getting Team Foundation Server up and running, I created a new project collection with a better name for my group rather than using the default &#8220;DefaultCollection&#8221; or whatever it is. Unfortunately, because SQL was hammering my available memory, the schema creation task during the collection setup failed.</p>
<p>After getting my memory issue worked out, I setup a new collection and all was good. The only issue is that in my TFS admin screen, I still had this old corrupt collection in my list. It was not attached (and displayed) to Team Explorer, but it bothered me to have this corrupt database laying around. Unfortunately, the TFS admin utility would not allow me to delete the collection because it thought the SQL database associated was still updating its schema. I tried digging through the <span><span>Tfs_Configuration</span></span> SQL database to see if I could trick TFS into thinking the status was good, but I found nothing that seemed safe or that wouldn&#8217;t leave me a bunch of orphaned records in my configuration db.</p>
<p>Thanks to <a title="Anna Russo's blog" href="http://a7russo.spaces.live.com/" target="_blank">Anna Russo</a>, a member of the MSDN forums, I found a trick that worked. Here was her suggestion:</p>
<blockquote><p><span style="font-size: 12px;"><em>1. Run command prompt as administrator and navigate to drive:\Program<br />
Files\Microsoft Team Foundation Server 2010\Tools<br />
2. tfsconfig collection<br />
</em></span><strong><span style="font-size: 12px;"><em>/detach</em></span></strong><span style="font-size: 12px;"><em> /collectionName:&lt;name&gt; or  tfsconfig collection<br />
</em></span><strong><span style="font-size: 12px;"><em>/delete</em></span></strong><span style="font-size: 12px;"><em> /collectionName:&lt;name&gt;<br />
3. You will be prompted<br />
if you are sure</em></span></p></blockquote>
<p><span style="font-size: small;"><span style="font-size: 12px; line-height: 15px;">The &#8220;tfsconfig collection /delete /collectionName:&lt;name&gt;&#8221; option worked for me and now I am free and clear!</span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adammokan.com/2010/03/22/removing-a-corrupt-project-collection-in-tfs2010/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Changing SQL Server memory utilization on my TFS server</title>
		<link>http://www.adammokan.com/2010/03/17/changing-sql-server-memory-utilization-on-my-tfs-server/</link>
		<comments>http://www.adammokan.com/2010/03/17/changing-sql-server-memory-utilization-on-my-tfs-server/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 23:36:39 +0000</pubDate>
		<dc:creator>adam.mokan</dc:creator>
				<category><![CDATA[sql server]]></category>
		<category><![CDATA[team foundation server]]></category>
		<category><![CDATA[tfs2010]]></category>

		<guid isPermaLink="false">http://www.adammokan.com/2010/03/17/changing-sql-server-memory-utilization-on-my-tfs-server/</guid>
		<description><![CDATA[In a follow up to my earlier post on TFS2010 and memory utilization on a VM (found here), I have applied the following setting to my SQL2008 instance and I&#8217;m restricting SQL to 1.5gb of RAM (out of 4gb). I feel this should be plenty for my small amount of usage. EXEC sp_configure 'show advanced [...]]]></description>
			<content:encoded><![CDATA[<p>In a follow up to my earlier post on TFS2010 and memory utilization on a VM (found <a title="TFS2010 on a VM - Memory Considerations" href="http://www.adammokan.com/2010/03/17/tfs2010-on-a-vm-memory-considerations/">here</a>), I have applied the following setting to my SQL2008 instance and I&#8217;m restricting SQL to 1.5gb of RAM (out of 4gb). I feel this should be plenty for my small amount of usage.</p>
<pre class="brush: sql;">EXEC sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE
/* set server to 1.5gb */
EXEC sp_configure 'max server memory (MB)', 1536
RECONFIGURE WITH OVERRIDE</pre>
<p>After running the command (and replacing the value with whatever you decide to use), you can run a command to check the &#8220;config_value&#8221; and &#8220;run_value&#8221; to make sure it is actually using your settings.</p>
<pre class="brush: sql;">EXEC sp_configure 'max server memory (MB)'</pre>
<p><a href="http://www.adammokan.com/wp-content/uploads/2010/03/sqlmemory.png"><img src="http://www.adammokan.com/wp-content/uploads/2010/03/sqlmemory.png" alt="" title="sqlmemory" width="450" height="90" class="alignnone size-full wp-image-18" /></a></p>
<p>Seems to be working out alright right now, but I do have to run a perfmon on the I/O usage to see how much paging may be occurring during heavy hits, like setting up a new TFS project.</p>
<p>Figure this may be an option for those of you setting up TFS on a PC or machine without a ton of RAM available. And, in all reality, this is more of a SQLServer config issue than Team Foundation Server item.</p>
<p>If you&#8217;re a SQL2008 guru and I committed a major sin by making this change, drop me a note with some ideas, please. I know there is a resource governor in 2008, but my understanding is that it is only available on the Enterprise, Dev, and Eval versions. Since I&#8217;m running SQL2008 Standard Edition, I looked at other options.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adammokan.com/2010/03/17/changing-sql-server-memory-utilization-on-my-tfs-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TFS2010 on a VM &#8211; Memory Considerations</title>
		<link>http://www.adammokan.com/2010/03/17/tfs2010-on-a-vm-memory-considerations/</link>
		<comments>http://www.adammokan.com/2010/03/17/tfs2010-on-a-vm-memory-considerations/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 17:00:00 +0000</pubDate>
		<dc:creator>adam.mokan</dc:creator>
				<category><![CDATA[server virtualization]]></category>
		<category><![CDATA[team foundation server]]></category>
		<category><![CDATA[tfs2010]]></category>
		<category><![CDATA[sqlserver 2008]]></category>
		<category><![CDATA[virtual server]]></category>
		<category><![CDATA[windows server 2008r2]]></category>

		<guid isPermaLink="false">http://www.adammokan.com/2010/03/17/tfs2010-on-a-vm-memory-considerations/</guid>
		<description><![CDATA[Thinking of running TFS2010 on a virtual server? Follow my learning curve on this process. This post deals with quickly realizing running the entire TFS "stack" on one server instance will take more memory than considered.
]]></description>
			<content:encoded><![CDATA[<p><span><span><em>In a previous post I mentioned my current implementation of Team Foundation Server 2010. I&#39;d like to start posting some things I learn during this process. In particular, from the technical and administrative standpoint. I am working in a large corporate environment that is moving to server&#0160;virtualization rather than dedicated hardware servers more and more. I assume most companies are either doing this now or looking into it. This series of posts will be related to issues faced during the setup and configuration while working in virtual environment.</em></span></span></p>
<p><strong>Memory Considerations</strong></p>
<p>Getting a new virtual server setup at the corporate IT level is pretty nice where I work. I don&#39;t think its always been this way, but thanks to improvements in virtualization, I can have a production server in a couple days or less that is ready to host a SQL instance, host my applications in IIS, or whatever else I need. Our corporate standard is something like 30gb of disk storage on a D: or E: drive (not supposed to install other apps on C:), a single core of a processor, and something like 2gb of RAM. When filling out the resource request form, you can specify more resources to be allocated.</p>
<p>For my TFS2010RC deployment (which is for a very small team), I didn&#39;t bother asking for additional resources and it was a painful learning curve. Flat out, unless I did something wrong, TFS2010 with all options on a single box (SQL2008, reporting services, Sharepoint, and data warehousing) <strong>will not</strong> run on 2gb of RAM. This is not rocket science and I fully expect responses to this post to make fun of me for even considering it. But, I didn&#39;t consider it at all. Because its so fast and easy (and cheap) to get a new server setup now, I didn&#39;t do a lot of research. Common sense would indicate you&#39;d want more RAM for just running a SQL Server install, but I just went with the default and right away when getting my first team portal up and running, the server was hating life and hammering memory utilization at 95% or higher all the time. Due to this, I ended up trying to create a new project collection which became corrupt due to a SQL task not finishing. (more on that later)</p>
<p>Fortunately, I was able to resolve this by sending a request to bump the server up to 4gb of RAM, and within the afternoon I was asked when someone could make the change and a simple reboot had doubled my memory.</p>
<p>All is well now. I run around 60% memory utilization, but there are probably some tweaks I could make to SQL Server to lower that threshold. Obviously you could also split your install up across&#0160;multiple&#0160;servers to scale out easier. But for now I am keeping it simple (and cheap) on a single instance.</p>
<p><a href="http://www.adammokan.com/wp-content/uploads/2010/03/sqlmemory2.png"><img src="http://www.adammokan.com/wp-content/uploads/2010/03/sqlmemory2.png" alt="" title="memory usage" width="774" height="141" class="alignnone size-full wp-image-20" /></a></p>
<p>&#0160;</p>
<p>Anyone else out there running a full TFS2010 install in a virtual server? Have hints, questions, comments? Drop me a line.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adammokan.com/2010/03/17/tfs2010-on-a-vm-memory-considerations/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Getting organized with source control and project management</title>
		<link>http://www.adammokan.com/2010/03/15/getting-organized-with-source-control-and-project-management/</link>
		<comments>http://www.adammokan.com/2010/03/15/getting-organized-with-source-control-and-project-management/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 14:00:00 +0000</pubDate>
		<dc:creator>adam.mokan</dc:creator>
				<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[getting organized]]></category>
		<category><![CDATA[team foundation server]]></category>
		<category><![CDATA[visual sourcesafe]]></category>
		<category><![CDATA[visual studio]]></category>
		<category><![CDATA[dot net]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[sharepoint 2010]]></category>
		<category><![CDATA[source safe]]></category>
		<category><![CDATA[tfs]]></category>
		<category><![CDATA[tfs2010]]></category>
		<category><![CDATA[visual studio 2010]]></category>
		<category><![CDATA[vs2010]]></category>
		<category><![CDATA[vss]]></category>

		<guid isPermaLink="false">http://www.adammokan.com/2010/03/15/getting-organized-with-source-control-and-project-management/</guid>
		<description><![CDATA[After a dozen years in various development teams, I finally decided to re-evaluate my current development team and the way we handle our work. I describe how it started, what I have done so far, and what is next.
]]></description>
			<content:encoded><![CDATA[<p>My experience with source control and team management tools has been fairly limited over the dozen years I have developed professionally. Being primarily a Microsoft developer, I have worked with more <a href="http://en.wikipedia.org/wiki/Visual_SourceSafe" target="_blank" title="wikipedia link">Visual SourceSafe</a> than I&#39;d like to admit. Since the late 90s, I&#39;ve felt VSS was always a ticking time bomb, and it has burnt me on some really bad occasions way back in the old Visual Studio 6 days. Outside of VSS, I&#39;ve had my fair share of <a href="http://en.wikipedia.org/wiki/Subversion_(software)" target="_blank" title="wikipedia link">Subversion</a> on side projects and open-source development and more recently quite a bit of <a href="http://en.wikipedia.org/wiki/Git_(software)" target="_blank" title="wikipedia link">Git</a> and some&#0160;<a href="http://en.wikipedia.org/wiki/Mercurial_(software)" target="_blank" title="wikipedia link">Mercurial</a>. But somehow, I&#39;ve never messed with <a href="http://en.wikipedia.org/wiki/Team_Foundation_Server" target="_blank" title="wikipedia link">Team Foundation Server</a> too much. That changed over the past two weeks after watching some demos of Team Foundation Server 2010 RC and really liking the workflow of Sharepoint, Visual Studio, and the reporting. I know there are automatically people that will dispose of this because it&#39;s Microsoft, but it seems like the integration with all facets of development and planning have been solid from what I&#39;ve seen so far and I&#39;m currently implementing TFS2010RC into our group. I&#39;m at the very infant stages of the deployment now and thought I&#39;d explain the environment I&#39;m in and my reasoning behind pursuing this solution.</p>
<p>I&#39;ve gotten to a point in my career that I think most people who aspire to be great developers reach at some point, where I look back on work I&#39;ve done and the daily work I currently do and realize things have to change. Nearly all of my jobs I&#39;ve ever had were the &quot;react to fires&quot; type (including my current position). Meaning that, there is a &quot;plan&quot; of what you are supposed to do or what the management wants you to do, but there is also the element of support. Unfortunately, it seems like a vast majority of my day is context switching (which is a proven killer of productivity) between supporting well over two dozen random applications and trying to complete new development objectives. My group has lost some resources over the years and it has just gotten so out of hand, that I felt like I had to take action&#8230;somehow. I think 90% of the developers out there are in a situation like this. I&#39;ve not personally met too many programmers who get to work on nothing but new development all the time or are shielded from brownfield applications and support. Maybe I&#39;m just unique in picking jobs that require this sort of thing? I&#39;m not sure.</p>
<p>So, specifically, the way support and requests work in my group is that a person representing one of our user areas, like a supervisor for example, will send an email to our support email distro saying &quot;<em>this is broken</em>&quot;, &quot;<em>please setup this new user or resource for application x, y, or z</em>&quot;, &quot;<em>please add this new feature to this application by yesterday morning</em>&quot;, and so on. It is very low-tech and you find yourself watching your inbox much more often than you should be. I&#39;ve been trying to come up with ways to handle this better, but the fact is we have nearly one hundred documented applications our group supports and over five hundred users across those. It&#39;s not as easy as some places where I&#39;ve been that have 10,000 users on a single system or something like that. To compound things, we have a range of technology spanning back to classic ASP and some VB6 up through C# 3.5 windows forms. It can be tricky at times to be cranking away on a new ASP.NET MVC 2 app and have to drop it to figure out why something isn&#39;t working on a classic ASP page and remember weird things about VBscript and discover the code hasn&#39;t been touched in seven years and the sight of unclosed table tags makes you panic. I could go on and on, but you get the point. What am I doing to cure, or at least calm, the problem?</p>
<p>The good news is that my direct management is great. They trust me and the team to use our knowledge and skills to determine the tools, technology, and methods to deliver the best possible solution to our users. The environment is the extreme opposite of micromanagement. When I recommend a new tool or a solution I want to try, its never been met with resistance, as long as I have done my homework and present the pros and cons. I am lucky in that respect.</p>
<p>I started the improvement process about five months ago by building some infrastructure tools to monitor our servers to map out things like IIS virtual directories, databases, and finally usage on our applications. I then integrated all of these individual tools into a centralized web-based application with some simple charting and dashboards. This has helped a lot in determining exactly what we support and a better way to evaluate what our users are actually using and not using. After gathering this data and breaking it down, we&#39;ve been surprised in some cases by small applications that actually were used much more than expected and, on the other hand, some of our high-visibility applications are used very much and require solid change management to not accidentally push a bad build out or something else that would cause an outage.</p>
<p>I moved from the data gathering phase and polishing of our internal monitoring tool to implementing a <a href="http://en.wikipedia.org/wiki/Continuous_integration" target="_blank" title="wikipedia link">continuous integration</a> server with our Visual SourceSafe repository. I focused on a few key applications and had builds triggered in <a href="http://www.jetbrains.com/teamcity/" target="_blank" title="JetBrains website">JetBrains TeamCity</a> (great product) and really learned a lot about MSBuild, Nant, and automating things like deployments, test coverage, FXCop, and other ways to ensure code quality with little to no hit in team productivity. If nothing else, it made us more aware of how poorly we were setting up new projects in Visual Studio. Just the fact of getting an application to build on a CI machine automatically makes you realize how important it is to know the inner workings of your build tools. Especially when it comes to dependencies. It was a great learning process and I encourage anyone who has read this much to absolutely setup a CI &quot;server&quot; (I used an extra development PC for ours). TeamCity isn&#39;t the only one out there in the .NET world, <a href="http://ccnet.thoughtworks.com/" target="_blank" title="CC.NET website">CruiseControl.Net</a> and <a href="http://hudson-ci.org/" target="_blank" title="Hudson website">Hudson</a> are two free, open source ones that come to mind.&#0160;</p>
<p>Just implementing continuous integration on a few applications was a great first step, but it still didn&#39;t solve the main problem of &quot;<em>what in the hell are we doing each day?</em>&quot;. We didn&#39;t have a major issue with pushing out bad code. But we still didn&#39;t know who was doing what, why, and for whom.&#0160;Honestly, from an organizational standpoint, our group does enough and works fast enough to make our users happy. That is great and I&#39;m sure most people would come to work each day just fine with that. But I still feel like there is too much effort going into just keeping on top of what needs to be done now, what can wait, and what can be put on hold. We need some sort of way to manage and understand this and the first step to stopping the bleeding, in my opinion, is logging and keeping track of what is going on. I like to compare it to money management. If you are constantly running low on money each week, you need to track you spending for a period,&#0160;analyze&#0160;the data, and make adjustments. But for som<br />
e reason, people in the software world will just keep going back to a chaotic work environment for years and not look at it this way. Nothing ever fixes itself and you can always say, &quot;<em>I&#39;ll go back and make a better admin screen for that application when I have more time</em>&quot;, but I&#39;m telling you&#8230; &quot;more time&quot; will <strong>never</strong> come.</p>
<p>I thought about building a simple task management tool into our internal application tool that would link what pending tasks I have to an individual application. This would at least help me stay organized for myself and also would allow me to provide a report or dashboard in the utility so my supervisor could easily see whats on my plate. However, I&#39;m 25% done with a conversion of this tool to ASP.NET MVC and actually trying to <em>remove </em>features and keep it simple. Adding extra database tables for something like task management seemed to be counter-intuitive at this point, with our backlog of work. I&#39;ve tried using the task management built into Outlook, but I spend too much time in Outlook already. Mostly reading support emails (not related to anything I support) or blocking my calendar off from meetings I want to avoid.</p>
<p>There are a ton of task management options out there, including something as low-tech as index cards or a whiteboard, excel, or a web application. A number of free or really cheap (small monthly fee) tools are available online. A lot are hosted Ruby on Rails apps, which are great for organizing team development. I seriously considered pitching a solution such as this to our group, but the thing it lacked for me was integration with our source code. Its fine to manage your backlog or tasks in a tool outside of your source code, but when I make changes to code and commit them, I really felt there had to be a link to better answer &quot;<em>why did you just change this?</em>&quot;. Yeah, you could make a comment, but I really wanted it to be an integrated solution. This led me to Team Foundation Server.</p>
<p>I spent some time looking at TFS2008. I requested an upgrade to my MSDN account to the Team Studio level and planned to go down that road. But with TFS2010 and Visual Studio 2010 less than six weeks away, it made sense to look at the new stuff. I watched some videos online and downloaded a virtual server image and really enjoyed it. I love the Sharepoint portal TFS sets up and the task management seems decent. Some portions feel overly complicated to the simple web-based solutions mentioned earlier, but considering everything was integrated in the development IDE, it made sense. I should also note that I&#39;m actually not a huge Sharepoint fan at all. But, at a corporate level, its huge where I work. Every department is now using Sharepoint for their internal sites and a number of people in my group have been sent to Sharepoint training. So, I have to swallow my few issues I have because I know the fact that it is a familiar interface for the management types will be a big selling point.</p>
<p>So far, I&#39;ve gotten my TFS2010 server setup and configured with reporting services, data analysis services, and reporting services. I am launching a new development project (VS2010 WPF application) this week using the agile templates and will begin populating my work backlog and training some others on using the portal, accessing my task info, and figuring out best practices in regards to the source control. Things like branching code will be a whole new concept for people at my company, for example. I have a lot to learn and it should all be an interesting process.</p>
<p>My point in writing this isn&#39;t so much about the tools or specific issues I&#39;m dealing with, but the attitude I&#39;ve taken over the years of just ignoring the bad workflow or assuming things would get better on their own. If you are in a similar situation and are tired of it, make a change. Don&#39;t worry about management or pushback. Do your research and start small. There are free tools out there to achieve less friction when it comes to managing your projects or tools to improve your development. I invested a lot of my own time after hours to create my internal monitoring tools. I know a lot of people think its dumb to work for free at home, but considering you spend a majority of your adult life at your job, it makes sense to make changes that will make your life easier. If that means giving up a couple hours at night for a few weeks to automate some aspects of work and build a couple new things, I&#39;m willing to donate that time. It has paid off. I will warn you, though. All of these little wins have made me absolutely obsessed with pursuing larger change. It&#39;s been a lot of work, but it feels good to realize that I can make a major difference in my daily job and my career. Isn&#39;t that what most people want the ability to do?</p>
</p>
<p><span style="font-size: 12px; "><em><sup style="font-size: 11px; "><sub><sup><sub><span><span><sub style="font-size: 10px; ">I kinda feel like this long, rambling post just died all of a sudden. I think, as I was wrapping up, I realized there are some valuable things I did learn last week while setting up my TFS server and it makes sense to share those items in future posts. I will start drafting up some blog posts in the next few days on things I discover working through this implementation.</sub></span></span></sub></sup></sub></sup></em></span></p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adammokan.com/2010/03/15/getting-organized-with-source-control-and-project-management/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

