<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Architecture</title>
        <link>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/category/26.aspx</link>
        <description>Architecture</description>
        <language>en-US</language>
        <copyright>Shawn Weisfeld</copyright>
        <generator>Subtext Version 2.1.2.2</generator>
        <item>
            <title>Event Driven Architecture by Chris Patterson @ North Dallas .NET UG on 02/03/2010</title>
            <link>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2010/02/04/event-driven-architecture-by-chris-patterson-north-dallas-.net.aspx</link>
            <description>&lt;p&gt;Another in the series of recordings that I have been doing for INETA Live&lt;/p&gt;
&lt;p&gt;&lt;embed height="300" type="application/x-shockwave-flash" width="400" src="http://blip.tv/play/hYpfgcL1VQA" allowscriptaccess="always" allowfullscreen="true" /&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Abstract&lt;/strong&gt;: &lt;/p&gt;
&lt;p&gt;In this presentation, I will explain event driven architecture, describe the different types of events, demonstrate how events can be related and orchestrated, and provide a basic understanding of how this method can drive the architecture of enterprise systems. In addition to understanding the concepts of event driven architecture, we will explore a working sample built using an open-source .NET messaging framework called Mass Transit.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bio&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;Chris Patterson (http://phatboyg.lostechies.com/) is a Senior Architect for RelayHealth, the connectivity business of the nation's leading healthcare services company. There he is responsible for the architecture and development of applications and services that accelerate care delivery by connecting patients, providers, pharmacies, and ﬁnancial institutions. Previously, he led the development of a new content delivery platform for TV Guide, enabling the launch of a new entertainment network seen on thousands of cable television systems. In his spare time, Chris is an active open-source developer and a primary contributor to MassTransit, a .NET service bus and messaging framework. In 2009, he was awarded the Most Valued Professional award by Microsoft for his technical community contributions. &lt;/p&gt;&lt;img src="http://www.drowningintechnicaldebt.com/ShawnWeisfeld/aggbug/667.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Shawn Weisfeld</dc:creator>
            <guid>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2010/02/04/event-driven-architecture-by-chris-patterson-north-dallas-.net.aspx</guid>
            <pubDate>Thu, 04 Feb 2010 11:43:36 GMT</pubDate>
            <wfw:comment>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/comments/667.aspx</wfw:comment>
            <comments>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2010/02/04/event-driven-architecture-by-chris-patterson-north-dallas-.net.aspx#feedback</comments>
            <wfw:commentRss>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/comments/commentRss/667.aspx</wfw:commentRss>
            <trackback:ping>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/services/trackbacks/667.aspx</trackback:ping>
        </item>
        <item>
            <title>Building a solution with many projects is SLOWWWWWWW</title>
            <link>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2008/06/04/building-a-solution-with-many-projects-is-slowwwwwww.aspx</link>
            <description>&lt;p&gt;This week I am attending TechEd in Orlando FL and I was honored to be requested to work the C# booth by the MVP and C# teams. I got many great questions from attendees and I thought I would post some of the more interesting ones. So here goes. &lt;br /&gt;&lt;/p&gt;
&lt;p&gt;An attendee, let’s call him Bob, came up and said that his builds were very slow. After some chatting Bob told me that he has a huge number of projects in his solution all “joined” together using project references. This is a convent feature of Visual Studio that provides for “cascading” builds. By that I mean if you change some code in a business library when VS does the build it will build that library first, copy the dll into any projects that reference it, then build those projects. This is very convent but as Bob noted when he changes one line of code in a method it causes the entire project to rebuild. This is not a big deal if the project is small and the builds are quick but if the project is large this could be a very painful experience. So we tossed around some things I would classify as workarounds like for example writing some post build steps that would move dll’s around and the like. But in my opinion the best solution is a properly architected solution. To that end I pointed Bob to an article put together by the P&amp;amp;P group at Microsoft that provides guidance for the architecture of large application with many projects and how to break them up into manageable chunks. &lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Structuring Projects and Solutions &lt;br /&gt;&lt;a href="http://www.codeplex.com/VSTSGuidance/Wiki/View.aspx?title=Chapter%203%20-%20Structuring%20Projects%20and%20Solutions%20in%20Source%20Control"&gt;http://www.codeplex.com/VSTSGuidance/Wiki/View.aspx?title=Chapter%203%20-%20Structuring%20Projects%20and%20Solutions%20in%20Source%20Control&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p mce_keep="true"&gt; &lt;/p&gt;&lt;img src="http://www.drowningintechnicaldebt.com/ShawnWeisfeld/aggbug/250.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>sweisfeld</dc:creator>
            <guid>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2008/06/04/building-a-solution-with-many-projects-is-slowwwwwww.aspx</guid>
            <pubDate>Wed, 04 Jun 2008 16:47:00 GMT</pubDate>
            <wfw:comment>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/comments/250.aspx</wfw:comment>
            <comments>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2008/06/04/building-a-solution-with-many-projects-is-slowwwwwww.aspx#feedback</comments>
            <wfw:commentRss>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/comments/commentRss/250.aspx</wfw:commentRss>
            <trackback:ping>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/services/trackbacks/250.aspx</trackback:ping>
        </item>
        <item>
            <title>Notes from the TechEd 2007 Birds of a Feather I did with Alan</title>
            <link>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2007/06/09/notes-from-the-teched-2007-birds-of-a-feather-i.aspx</link>
            <description>&lt;p mce_keep="true"&gt;Shawn Weisfeld&lt;br /&gt;C# MVP&lt;br /&gt;President Orlando .NET Users Group&lt;br /&gt;&lt;a href="http://www.shawnweisfeld.com/"&gt;http://www.shawnweisfeld.com&lt;/a&gt;&lt;br /&gt;&lt;a href="mailto:shawn@shawnweisfeld.com"&gt;shawn@shawnweisfeld.com&lt;/a&gt;&lt;/p&gt;
&lt;p mce_keep="true"&gt;Alan Stevens &lt;br /&gt;President East Tennessee .NET Users Group &lt;br /&gt;&lt;a href="mailto:alanstevens@gmail.com"&gt;alanstevens@gmail.com&lt;/a&gt;&lt;br /&gt;&lt;a href="http://netcave.org/"&gt;http://netcave.org/&lt;/a&gt;&lt;/p&gt;
&lt;p mce_keep="true"&gt;&lt;br /&gt;Notes by Dave Noderer: &lt;a href="mailto:daven@computerways.com"&gt;daven@computerways.com&lt;/a&gt;&lt;br /&gt;(thanks Dave for taking notes during the session)&lt;/p&gt;
&lt;p mce_keep="true"&gt; - Microsoft out of the box solution. &lt;br /&gt; - Drag and drop to create a database and CRUD sql statements&lt;br /&gt; - Subclass controls to add functionality&lt;br /&gt; - Billie has a set of controls to add a number of functionality&lt;br /&gt; - How do you do this??&lt;br /&gt;   - Ken Getz App dev videos&lt;br /&gt;   - Many examples out there&lt;br /&gt;   - Much easier with 2005 than 2003&lt;br /&gt;   - ASP.NET for dummies&lt;br /&gt; - In many cases the out of the box method does not work in the realworld&lt;br /&gt; - If you write your own, you know exactly what it does&lt;br /&gt; - One person does CICS migration to .net so adds validation to cover all the bases&lt;br /&gt; - Enterprise service blocks has a lot of validation&lt;br /&gt; - Difference between data abstraction layer and data access layer.&lt;br /&gt;   - Access – just layer above ado.net&lt;br /&gt;   - Data abstraction – business objects and operatios&lt;br /&gt; - MyGeneration – Useful for one user&lt;br /&gt;   - Third party tool free tool&lt;br /&gt;   - Looks at db and generates data abstraction&lt;br /&gt;   - Have to use it out of visual studio or it will sometimes crash&lt;br /&gt; - Typed datasets&lt;br /&gt;   - Depends on platform  - 1.0 problems, 2.0 much better&lt;br /&gt;   - Nice start on business objects&lt;br /&gt;   - Create dataset up front, generates classes, uses partial classes&lt;br /&gt;   - Can extend it through the partial classes&lt;br /&gt;   - Have to stay within the lines.&lt;br /&gt; - SQL Junkie… use stored procedures, design database&lt;br /&gt; - CSLA&lt;br /&gt;   - Application framework&lt;br /&gt;   - Have a book to learn it from&lt;br /&gt;   - Lots of community support&lt;br /&gt;   - Limits&lt;br /&gt;   - Mark Dunn has training contract with Rocky Lhotka&lt;br /&gt;   - Has been around for many years, over many generations&lt;br /&gt;   - APRESS – Professional Business Objects&lt;br /&gt; - Ibinding lists – generics&lt;br /&gt;   - Generics – Collection of anything, employees, customers, etc.&lt;br /&gt;   - Common list functionality but put any type of object&lt;br /&gt;   - Strongly typed vs arraylist, arraylist required boxing/unboxing&lt;br /&gt;   - Generic collections are very high performance&lt;br /&gt;   - Generic methods takes any type&lt;br /&gt;   - Collections is one but there are others&lt;br /&gt;   - Ibindinglist does a lot of the work for you&lt;br /&gt;   - Binary search menthod, find, findall comes back with a collection&lt;br /&gt; - Other issues&lt;br /&gt;   - Code is always the same&lt;br /&gt;   - Very boring&lt;br /&gt; - Codesmith&lt;br /&gt;   - Templates are easy to create&lt;br /&gt;   - Existing templates can be used as well&lt;br /&gt; - Net tiers?? Is this a separate&lt;br /&gt;   - Makes you inherit from their classes&lt;br /&gt;   - Expresses business objects as excel rows and columns&lt;br /&gt; - Business Objects&lt;br /&gt;   - Dataset is memory image of data, tables, rows, columns, relationships&lt;br /&gt;   - Business objects is Customers -&amp;gt; Orders -&amp;gt; OrderDetails as objects&lt;br /&gt;   - List of invoices as a collection&lt;br /&gt;   - Al: Database is for efficient storage and retrieval of data but Application wants to have the data modeled in the application domain&lt;br /&gt;   - In VS2k5 there is business object datasource&lt;br /&gt; - Hiearchy – Levels of pain&lt;br /&gt;   - 1. Datasets are a cheap ORM&lt;br /&gt;        Directly related to the database&lt;br /&gt;   - 2. Business objects close to db but adds some business rules&lt;br /&gt;        Employee address required if employee is full time&lt;br /&gt;   - 3. Are there business classes not persisted to the database&lt;br /&gt;          Then it might make sense&lt;br /&gt; - UI validation&lt;br /&gt;   - UI – but spreads around&lt;br /&gt;   - Biz Object – Centralized, easy to manage&lt;br /&gt;   - DB – Centralized but much more obscure and removed from the UI&lt;br /&gt; - ORM – Object Relational Mapping&lt;br /&gt;   - Check out &lt;a href="http://www.dotnetrocks.com/"&gt;www.dotnetrocks.com&lt;/a&gt; pod casts.&lt;br /&gt;   - There were a number of ORM related shows and an ORM smack down recently&lt;br /&gt;   - Many others.. subsonic, nhibernate, llbgenpro&lt;br /&gt;   - From Microsoft will be coming the “Entity Framework”&lt;br /&gt;          Generates ORM from db&lt;br /&gt;          April to be released&lt;br /&gt;          Link to SQL due out with VS2008 but very limited&lt;br /&gt;   - Also have Entity SQL which is common sql that will work for both SQL Server and Oracle&lt;br /&gt; - LINQ&lt;br /&gt;   - Allows sql type of synatax in the language to allow you to query over any collection, xml or data.&lt;br /&gt;          Linq to objects - Basic linq over in memory collections and business objects&lt;br /&gt;          Linq to SQL extends out the to database&lt;br /&gt;          Linq to XML generates xpath&lt;br /&gt;   - What is the implications??&lt;br /&gt;          Perfomance?&lt;br /&gt;          Can’t bind to query&lt;br /&gt;   - Can use Linq to query database&lt;br /&gt; - Dynamic Language Runtime&lt;br /&gt;   - Duck typing&lt;br /&gt;   - If it looks like a duck and walks like a duck it must be a duck&lt;br /&gt;   - Dynamic controls – late binding – will figure it out at runtime&lt;br /&gt; - All I want to do is bind data&lt;br /&gt;   - Use datatable and bind to grid&lt;br /&gt; - Third party controls&lt;br /&gt;   - Telerik, DevExpress, Infragistics&lt;br /&gt;   - Issues with upgrading&lt;br /&gt;   - If you stick with Microsoft… fewer issues with upgrades&lt;br /&gt;   - Tedie.net?? controls did not catch up going from 1.1 to 2.0&lt;br /&gt;   - If you subclass from the telerik control you have a chance of changing the root classes!&lt;br /&gt; - Reporting&lt;br /&gt;   - Information Builders – Old hold over from mainframe days&lt;br /&gt;   - You can generate pdf off of report viewer control -&amp;gt; REPORT VIEWER JUNKIES??? (Alan)&lt;br /&gt;   - Reporting services&lt;br /&gt;   - Dane Prairie – WIN2PDF, low cost&lt;br /&gt;   - Component One, Data Dynamics, Dev Express&lt;br /&gt; - POST ON BLOG… INSTRUCTIONS FOR SUBCLASSING! (Alan)&lt;br /&gt; - Client side sorting on client.&lt;br /&gt;   - AJAX&lt;br /&gt;          Some controls using JSON which is terse key/value pair&lt;br /&gt;          Wally McLure has book&lt;br /&gt;          &lt;a href="http://www.wrox.com/WileyCDA/WroxTitle/productCd-047178544X.html"&gt;http://www.wrox.com/WileyCDA/WroxTitle/productCd-047178544X.html&lt;/a&gt;&lt;br /&gt;          &lt;a href="http://www.wrox.com/WileyCDA/WroxTitle/productCd-0470112832.html"&gt;http://www.wrox.com/WileyCDA/WroxTitle/productCd-0470112832.html&lt;/a&gt;&lt;br /&gt;          Web developer tool to monitor traffic.&lt;br /&gt;          &lt;a href="http://projects.nikhilk.net/Projects/WebDevHelper.aspx"&gt;http://projects.nikhilk.net/Projects/WebDevHelper.aspx&lt;/a&gt; (the site was down when I tested this link, don’t know what is up)&lt;br /&gt;   - Infragistics has client side control&lt;br /&gt;   - Infragistics allows filtering by column on &lt;br /&gt; - Template columns&lt;br /&gt;   - Build a filter&lt;br /&gt;   - Post back to the server and re-query&lt;br /&gt;   - May lose changes&lt;/p&gt;
&lt;p mce_keep="true"&gt;Initial Topic ideas by Shawn &amp;amp; Alan&lt;/p&gt;
&lt;p mce_keep="true"&gt;BOF26 - Binding GridView, DropDownList, etc. with CRUD&lt;br /&gt;Friday, June 8 10:45 AM - 12:00 PM, S331 A &lt;/p&gt;
&lt;p mce_keep="true"&gt;Moderator: Dan Wygant&lt;br /&gt;Join in a discussion of binding with ASP.NET controls such as GridView, DropDownList and DetailView and others. Share in the discussion of techniques using automatic code generation, using the List&amp;lt;&amp;gt; generic to bind data in a form to data in a database, and using other techniques that have worked well and not so well. We Birds of a Feather can help each other by promoting discussions of how to bind into templates for highly customized views of the data with nearly zero code, providing for GUIs.&lt;/p&gt;
&lt;p mce_keep="true"&gt;1) Out of the box databinding&lt;br /&gt;   a. SqlDataSouce (sql right in the ASPX)&lt;br /&gt;   b. Typed DataSets against the ObjectDataSource&lt;br /&gt;2) Business Objects against the ObjectDataSouce&lt;br /&gt;   a. Collection&amp;lt;T&amp;gt; vs. List&amp;lt;T&amp;gt; vs. BindingList&amp;lt;T&amp;gt;&lt;br /&gt;      i. Using Collection&amp;lt;T&amp;gt; vs. List&amp;lt;T&amp;gt; (&lt;a href="http://blogs.msdn.com/fxcop/archive/2006/04/27/585476.aspx"&gt;http://blogs.msdn.com/fxcop/archive/2006/04/27/585476.aspx&lt;/a&gt;) The first reason is that List&amp;lt;T&amp;gt; is designed for speed and for use as an internal implementation detail, whereas Collection&amp;lt;T&amp;gt; is designed for extensibility.&lt;br /&gt;      ii. Collection&amp;lt;T&amp;gt; provides 4 overridable methods; ClearItems, InsertItem, RemoveItem and SetItem, which allow a derived class to be notified when a collection has been modified. In contrast, List&amp;lt;T&amp;gt; provides none. The second reason why you shouldn’t expose List&amp;lt;T&amp;gt;, is because it exposes too many members, many of which are not relevant in most situations. In contrast, Collection&amp;lt;T&amp;gt; exposes only a small number.&lt;br /&gt;   b. Binding Attributes (Decorations) – DataObjectMethodAttribute (&lt;a href="http://msdn2.microsoft.com/en-us/library/system.componentmodel.dataobjectmethodattribute(VS.80).aspx"&gt;http://msdn2.microsoft.com/en-us/library/system.componentmodel.dataobjectmethodattribute(VS.80).aspx&lt;/a&gt;)&lt;br /&gt;   c. ORM tools&lt;br /&gt;      i. Framework&lt;br /&gt;         1. SubSonic&lt;br /&gt;         2. Mere Mortals&lt;br /&gt;         3. CSLA&lt;br /&gt;         4. Software Factories (from P&amp;amp;P)&lt;br /&gt;         5. nHibernate&lt;br /&gt;         6. IdeaBlade DevForce&lt;br /&gt;         7. ORM.NET&lt;br /&gt;         8. Genome ORM&lt;br /&gt;         9. Deklarit&lt;br /&gt;         10. LLBLGen&lt;br /&gt;         11. Ruby&lt;br /&gt;      ii. CodeGen&lt;br /&gt;         1. CodeSmith&lt;br /&gt;         2. MyGeneration&lt;br /&gt;   d. LINQ&lt;br /&gt;      i. LINQ to SQL&lt;br /&gt;      ii. LINQ to Entities&lt;br /&gt;      iii. LINQ to XML&lt;br /&gt;      iv. BLINK (&lt;a href="http://www.asp.net/sandbox/app_blinq.aspx?tabid=62"&gt;http://www.asp.net/sandbox/app_blinq.aspx?tabid=62&lt;/a&gt;)&lt;br /&gt;         1. Blinq is a tool for generating ASP.NET websites for displaying, creating, and manipulating data based on database schema. Just point Blinq at a SQL database and it will create a website with pages that display sorted and paged data, allow you to update or delete records, create new records, and follow relationships between tables in your database. You don't need to write SQL queries to use Blinq; LINQ will generate optimized queries for you that request just the data you want to show. Blinq uses the May LINQ Community Tech Preview to access data. The code Blinq creates is simple and easy to customize to fit your needs. Everything in the website Blinq creates is meant as a starting point for a website that meets your needs perfectly, so have fun customizing the pages, experimenting with the code, and making it yours!&lt;br /&gt;   e. Entity Data Model - EDM - &lt;a href="http://msdn2.microsoft.com/en-us/library/aa697428(VS.80).aspx"&gt;http://msdn2.microsoft.com/en-us/library/aa697428(VS.80).aspx&lt;/a&gt;&lt;br /&gt;3) Implications of AJAX?&lt;br /&gt;   a. Server Side (i.e. sending html) vs. Client Side (i.e. Sending the Business Objects) &lt;br /&gt;4) Third Party Controls&lt;br /&gt;   a. DevExpress&lt;br /&gt;   b. Telerik&lt;br /&gt;   c. Infragistics&lt;br /&gt;   d. FarPoint&lt;br /&gt;   e. Component One&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.drowningintechnicaldebt.com/ShawnWeisfeld/aggbug/193.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>sweisfeld</dc:creator>
            <guid>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2007/06/09/notes-from-the-teched-2007-birds-of-a-feather-i.aspx</guid>
            <pubDate>Sat, 09 Jun 2007 18:39:00 GMT</pubDate>
            <wfw:comment>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/comments/193.aspx</wfw:comment>
            <comments>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2007/06/09/notes-from-the-teched-2007-birds-of-a-feather-i.aspx#feedback</comments>
            <wfw:commentRss>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/comments/commentRss/193.aspx</wfw:commentRss>
            <trackback:ping>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/services/trackbacks/193.aspx</trackback:ping>
        </item>
        <item>
            <title>A Team Lead in Need</title>
            <link>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2006/11/09/a-team-lead-in-need.aspx</link>
            <description>&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Times New Roman" size="3"&gt;Recently I got the email below and I thought I would share it as well as my comments with you and solicit your comments. &lt;strong&gt;Please let us know what you think.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?&gt;&lt;o:p&gt;&lt;font face="Times New Roman" size="3"&gt; &lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Times New Roman" size="3"&gt;Shawn&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Times New Roman" size="3"&gt; &lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Times New Roman" size="3"&gt;I'm Team Lead at the XYZ company for .Net development.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;Our shop has multiple .Net developers, most of our work to date has been one developer on a project at a time, occasionally 2 for brief periods of time.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;We have source control (SourceGear) and love what it does for us.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;We have a mixture of C# and VB code (some prefer one versus the other, all of us feel comfortable looking over either when needed), but we are leaning more toward C# as time goes on.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;We have a mixture of Web applications and Windows applications.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;Our Windows applications tend to be larger scale.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;In Windows applications, we separate business logic from the forms in separate class libraries.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Times New Roman" size="3"&gt; &lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Times New Roman" size="3"&gt;Now we are tackling a larger project (Windows application) where we want to have 4 or 5 of us working together.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;Our thoughts are to have 3 assemblies:&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Times New Roman" size="3"&gt; &lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Times New Roman" size="3"&gt;Main Project - will contain &lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /?&gt;&lt;st1:place w:st="on"&gt;Main&lt;/st1:place&gt;, instance forms that inherit base functionality from base forms, common functionality classes like messaging, error handling, etc.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Times New Roman" size="3"&gt; &lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Times New Roman" size="3"&gt;Base Forms - will contain the base forms&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Times New Roman" size="3"&gt; &lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Times New Roman" size="3"&gt;Business Classes - will contain the business logic class libraries&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Times New Roman" size="3"&gt; &lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Times New Roman" size="3"&gt;One developer will be responsible for business classes (less experienced in .Net but very familiar with the business logic for the application), one developer (less experienced) will be responsible for the instance forms, and 2 of us (seasoned .Net developers) will be responsible for base forms and common functionality.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;The 5th developer is also seasoned and will be helping the 2 less experienced developers and acting as a backup in all areas.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Times New Roman" size="3"&gt; &lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Times New Roman" size="3"&gt;We like the idea of separating the tasks into 3 projects, but there is some concern that we will have circular references (project A references B and B later references A).&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;We aren't locked into the design yet, but need to very soon.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;Any thoughts on how best to organize the various parts of the application?&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;Any links you could point me to regarding best practices for organizing multi developer development?&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Times New Roman" size="3"&gt; &lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Times New Roman" size="3"&gt;Thanks in advance,&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Times New Roman" size="3"&gt; &lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Times New Roman" size="3"&gt;A Team Lead in Need&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Times New Roman" size="3"&gt; &lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Times New Roman" size="3"&gt; &lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Times New Roman" size="3"&gt;To A Team Lead in Need,&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Times New Roman" size="3"&gt; &lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Times New Roman" size="3"&gt;Your problem is all too common, finding the correct skill mix between your team and your project can be difficult and without knowing each of your developers I cannot comment on who should be doing what. My only thought is to do some type of pair programming. This would allow your more experience developers to mentor those that need more experience. &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Times New Roman" size="3"&gt; &lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Times New Roman" size="3"&gt;As for project structure, I would check out the Microsoft recommendations at &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/practices/"&gt;&lt;font face="Times New Roman" color="#800080" size="3"&gt;http://msdn.microsoft.com/practices&lt;/font&gt;&lt;/a&gt;&lt;font face="Times New Roman" size="3"&gt; . I &lt;b style="mso-bidi-font-weight: normal"&gt;strongly&lt;/b&gt; recommend the use of there application blocks. On the other hand the use of these libraries does not come free. They can tend to be a little overwhelming for beginning users. &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Times New Roman" size="3"&gt; &lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Times New Roman" size="3"&gt;My typical application small application ends up with 2 libraries; the UI library where the user interface goes and the Common (business rules) library that I use for what else my business rules. Now for larger projects the business rules library might be broken up into different parts to help better segment functionality and the same goes for the UI library. Additionally I have even seen what you mention above forms are separated into different dll’s and the exe does nothing more then launch them. Finally depending on the requirements I might add a console exe to augment the functionality of the smart client. For web applications I do much the same but with the website replacing the UI library. All in all how you break down your interface and business layers, in my humble opinion, depend mainly on the project you are working on. Many projects will do just fine with one of each. Sometimes you want/need to break it up for larger projects. Of course functionality that will be common across projects should be put in a library that can be shared (i.e. if you build a datagrid that you want to share across projects or have a common set of utility functions).&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Times New Roman" size="3"&gt; &lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Times New Roman" size="3"&gt;As for circular project references, in my experience I have not seen this to be a problem. For example I cannot think of a reason that my business library would need a reference to my UI, on the other hand the UI will always need a reference to the business library. .NET will not allow you to create a circular reference (dependency). My recommendation is that when someone wants to make one to analyze why, my guess it will be that some class is in the wrong place and should be moved. &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Times New Roman" size="3"&gt; &lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;Hope this helps!&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Times New Roman" size="3"&gt; &lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;o:p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;strong&gt;I put the call out to all my readers, what do you think our friend should do? Leave your comments below. . . &lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;/o:p&gt;&lt;img src="http://www.drowningintechnicaldebt.com/ShawnWeisfeld/aggbug/145.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>sweisfeld</dc:creator>
            <guid>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2006/11/09/a-team-lead-in-need.aspx</guid>
            <pubDate>Thu, 09 Nov 2006 22:11:00 GMT</pubDate>
            <wfw:comment>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/comments/145.aspx</wfw:comment>
            <comments>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2006/11/09/a-team-lead-in-need.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/comments/commentRss/145.aspx</wfw:commentRss>
            <trackback:ping>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/services/trackbacks/145.aspx</trackback:ping>
        </item>
    </channel>
</rss>