<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>The .Net Chronicles</title>
        <link>http://amazingcode.net/Default.aspx</link>
        <description>More insightful .Net skillz</description>
        <language>en-US</language>
        <copyright>Ying and Yang</copyright>
        <managingEditor>mhawkins@intercon.com</managingEditor>
        <generator>Subtext Version 1.9.5.177</generator>
        <image>
            <title>The .Net Chronicles</title>
            <url>http://amazingcode.net/images/RSS2Image.gif</url>
            <link>http://amazingcode.net/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>Programmers &amp; Business Value (Or Lack There Of)</title>
            <category>Business Value</category>
            <link>http://amazingcode.net/archive/2008/04/25/programmers--business-value-or-lack-there-of.aspx</link>
            <description>If you're a programmer, like me, you love to learn all the new and fascinating things out there.  I myself as a .Net programmer, and formerly a Java Programmer, find all the new stuff coming out to be really cool.  You have MVC for .Net that came out, Silverlight, Silverlight 2, WPF, LINQ, and the ever number of other ORM's out there.&lt;br /&gt;
&lt;br /&gt;
Here is the problem:  We are an asset to the company who is paying us.  They want a product, that meets their requirements.  We want to write highly efficient code, and lets all admit, we like it when we can use a bit of complexity in our code, to make it look better.  Maybe to impress or confuse the next programmer. I've done it, you?&lt;br /&gt;
&lt;br /&gt;
Have you ever gone back and refactored good, working code, to make it do the exact same thing, but more appeasing to you?  Have you ever spent more time trying to figure out LINQ, when you're a subsonic expert.  Ever modularize everything, to make a beautifully flexible piece of software that can handle any of the changing winds, for a small little company with 2 users and strict requirements?&lt;br /&gt;
&lt;br /&gt;
All the new tools coming out, go against the business value of programming.  You are spending your client/companies money, to over write software, charging them more, just so you can feel like a software Jedi.  When I write software for my company, I make sure it works. I check for bugs. And I release it.  You'll never see me writing overly complex code for a piece of software that has one simple use.  &lt;br /&gt;
&lt;br /&gt;
Try to remember your clients money, and try your best to write good, stable software, using good techniques, but quit over complicating it. You're going to put yourself out of a job if you keep taking a month to write a contacts database.&lt;br /&gt;
&lt;br /&gt;
Writing code with high business value, in other words, getting more done in less time, is important to do.&lt;br /&gt;
&lt;br /&gt;
&lt;font size="4"&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;Important&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
However, more importantly, talking business value.  In my less experienced days, in requirements meeting, I bet I sounded like a little kid.  As I talked with the stakeholders, I kept saying things like:&lt;br /&gt;
&lt;br /&gt;
"Yeah I can do that! We can use ASP.Net with a SQL Server backend, then using the new SQL Server CLR features we can write our functions in .Net!"&lt;br /&gt;
&lt;br /&gt;
Me:  "Lets upgrade this project from .Net 2.0 to .Net 3.5"&lt;br /&gt;
Client:  "Why?"&lt;br /&gt;
Me:  "It's newer. Better"&lt;br /&gt;
Client:  "How?"&lt;br /&gt;
Me: "Its better. It has new features."&lt;br /&gt;
Client: "How will it make our already great solution better?"&lt;br /&gt;
Me:  "uhhh, I gotta go"&lt;br /&gt;
&lt;br /&gt;
Between programmers, this all makes sense, and its exciting. To clients, you look like a fool who just wants to spend money for no reason.&lt;br /&gt;
&lt;br /&gt;
If you want to be promoted to Project Manager, or if you ever want to move behind being the programmer (Monkey) you need to learn to focus on business value.&lt;br /&gt;
&lt;br /&gt;
Your meetings should never go to technical.  To get the job, or to impress the executives, you should always speak in terms of business value. This makes you look smarter and more capable.  For Example:&lt;br /&gt;
&lt;br /&gt;
"I think we can take advantage of some the new features in the .Net programming language, to speed up development and get this project out quicker then we originally anticipated.  On top of that, we have a few more ideas on how to increase the efficiency of the users, by adding a couple of smaller features. "&lt;br /&gt;
&lt;br /&gt;
Right there. Nothing fancy. Shows the stakeholder you are concerned about their time and money, and you want to do the project right, and have an idea of WHY you are doing the project.  Programmers get so into the program, they forget WHY they are being told to make it.  &lt;br /&gt;
&lt;br /&gt;
Use percentages.  "We think by implementing bar coding, we can reduce employee time on finding products by 30%"&lt;br /&gt;
&lt;br /&gt;
Speak numbers, speak percentages.  And know when to use which. &lt;br /&gt;
&lt;br /&gt;
To get ahead, and you have to sell yourself, and your abilities.  If you ever talk to salesmen, they'll agree, don't confuse your customers.  While you are blabblering about all the cool stuff you can do, then are thinking, "oh god how much is this going to cost me?"  Be confident, speak to them about how your software can help them.  Then, when you get the job, go write the software, and don't spend a month on making it .5 seconds faster.

&lt;br /&gt;&lt;br /&gt;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2famazingcode.net%2farchive%2f2008%2f04%2f25%2fprogrammers--business-value-or-lack-there-of.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2famazingcode.net%2farchive%2f2008%2f04%2f25%2fprogrammers--business-value-or-lack-there-of.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;&lt;/a&gt;&lt;img src="http://amazingcode.net/aggbug/7.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ying and Yang</dc:creator>
            <guid>http://amazingcode.net/archive/2008/04/25/programmers--business-value-or-lack-there-of.aspx</guid>
            <pubDate>Fri, 25 Apr 2008 13:53:11 GMT</pubDate>
            <wfw:comment>http://amazingcode.net/comments/7.aspx</wfw:comment>
            <comments>http://amazingcode.net/archive/2008/04/25/programmers--business-value-or-lack-there-of.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://amazingcode.net/comments/commentRss/7.aspx</wfw:commentRss>
        </item>
        <item>
            <title>DRY Programming - Don't Repeat Yourself Awareness</title>
            <category>Parody</category>
            <link>http://amazingcode.net/archive/2008/04/23/dry-programming---dont-repeat-yourself.aspx</link>
            <description>&lt;br /&gt;
&lt;br /&gt;
I was talking to a friend, and we were discussing generics, interfaces, of that sort, and he showed me a clip of code:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="background-color: rgb(153, 204, 255);"&gt; IVehicle vehicle = IoCFactory.GetInstance&amp;lt;IVehicle&amp;gt;();&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
And through methods such as those, you could be a DRY programmer.&lt;br /&gt;
&lt;br /&gt;
I realized, that I will take no part in that.  That's a lot of stress, to have to write a program, and not ever repeat yourself.  If I understand correctly, I can have only one string in my entire application. Why? &lt;br /&gt;
&lt;br /&gt;
Well its simple, I like to show by example:&lt;br /&gt;
&lt;br /&gt;
Lets pretend we have 2 pieces of text, that we we want to combine. For instance, a first and a last name.&lt;br /&gt;
&lt;br /&gt;
string fName;&lt;br /&gt;
st... ohz noes, I violated DRY.  I had almost typed that 2nd string.  This is exactly the predicament I don't want to be in. &lt;br /&gt;
&lt;br /&gt;
Being a DRY programmer is a very intense job.  While your code is vastly reusable, it's a lot to get keep track of.  I can only suppose his code has one module, because of course, in DRY, you can't click Project -&amp;gt; Add New item more then once.&lt;br /&gt;
&lt;br /&gt;
So I created this post to promote DRY Awareness.   Also known as DARE, you may have seen the shirts,  DRY Abuse Resistance Education.  &lt;br /&gt;
&lt;br /&gt;
Classy, Intelligible Code would for the Vehicle example would look like this: &lt;br /&gt;
&lt;br /&gt;
public class Vehicle&lt;br /&gt;
{&lt;br /&gt;
        public Vehicle()&lt;br /&gt;
        { }&lt;br /&gt;
        public static ArrayList GetAllVehicles()&lt;br /&gt;
        {&lt;br /&gt;
            ...&lt;br /&gt;
        }&lt;br /&gt;
        public static ArrayList GetAllTrucks()&lt;br /&gt;
        {&lt;br /&gt;
            ...&lt;br /&gt;
        }&lt;br /&gt;
        public static ArrayList GetAllCars()&lt;br /&gt;
        {&lt;br /&gt;
            ...&lt;br /&gt;
        }&lt;br /&gt;
        public static ArrayList GetCarID1()&lt;br /&gt;
        {&lt;br /&gt;
            ...&lt;br /&gt;
        }&lt;br /&gt;
        public static ArrayList GetCarID3()&lt;br /&gt;
        {&lt;br /&gt;
            ...&lt;br /&gt;
        }&lt;br /&gt;
        ....&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
DRY is for the lazy.  The hard working use WET.  Write Everything Twice.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2famazingcode.net%2farchive%2f2008%2f04%2f23%2fdry-programming---dont-repeat-yourself.aspx"&gt;&lt;img border="0" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2famazingcode.net%2farchive%2f2008%2f04%2f23%2fdry-programming---dont-repeat-yourself.aspx" alt="kick it on DotNetKicks.com" /&gt;&lt;/a&gt;&lt;img src="http://amazingcode.net/aggbug/5.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ying and Yang</dc:creator>
            <guid>http://amazingcode.net/archive/2008/04/23/dry-programming---dont-repeat-yourself.aspx</guid>
            <pubDate>Wed, 23 Apr 2008 18:27:56 GMT</pubDate>
            <wfw:comment>http://amazingcode.net/comments/5.aspx</wfw:comment>
            <comments>http://amazingcode.net/archive/2008/04/23/dry-programming---dont-repeat-yourself.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://amazingcode.net/comments/commentRss/5.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Variables - Do we need them? </title>
            <category>Parody</category>
            <link>http://amazingcode.net/archive/2007/10/25/variables---do-we-need-them.aspx</link>
            <description>&lt;p&gt;Since I began programming I was taught to always use variables. I never quite unerstood this concept. What does variable even mean? &lt;/p&gt;
&lt;li&gt;Likely to change or vary; subject to variation; changeable. &lt;/li&gt;
&lt;li&gt;Inconstant; fickle.&lt;/li&gt;
&lt;p&gt;Huh? Why would I want my programs to change.  &lt;/p&gt;
&lt;p&gt;For one to write a program without variables not only cuts down on memory consumption, but also speeds the program tremendously.  Take the following as an amazing example: &lt;/p&gt;
&lt;p&gt;in C# you could (if you were a newb) write:&lt;/p&gt;
&lt;p&gt;for (i=0; i &amp;lt;= myRows.Count-1; i++) {&lt;/p&gt;
&lt;p&gt;    //code&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;This is not only impossible to maintain, but is just an extreme resource hog.  &lt;/p&gt;
&lt;p&gt;Try this on for size:&lt;/p&gt;
&lt;p&gt;//code for 0&lt;/p&gt;
&lt;p&gt;//code for 1&lt;/p&gt;
&lt;p&gt;//code for 2....&lt;/p&gt;
&lt;p&gt;And so on. You know how many rows there are going to be.&lt;/p&gt;
&lt;p&gt; So, my advice, keep your code clean, simple, and type your code out manually. This works better if your paid hourly.&lt;br /&gt;
&lt;/p&gt;
&lt;br /&gt;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2famazingcode.net%2farchive%2f2007%2f10%2f25%2fvariables---do-we-need-them.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2famazingcode.net%2farchive%2f2007%2f10%2f25%2fvariables---do-we-need-them.aspx" /&gt;&lt;/a&gt;&lt;img src="http://amazingcode.net/aggbug/2.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ying and Yang</dc:creator>
            <guid>http://amazingcode.net/archive/2007/10/25/variables---do-we-need-them.aspx</guid>
            <pubDate>Fri, 26 Oct 2007 03:28:09 GMT</pubDate>
            <wfw:comment>http://amazingcode.net/comments/2.aspx</wfw:comment>
            <comments>http://amazingcode.net/archive/2007/10/25/variables---do-we-need-them.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://amazingcode.net/comments/commentRss/2.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>