Blogger Jeff = new Blogger

Programming and stuff in Western PA

Traits of a great software developer

Here’s my two cents on what I think it takes to be a great software developer:

Knowledgeable : If the person doesn’t know what they’re talking about, then it doesn’t matter if they have every other trait on this list. Certifications are nice, but anyone can cram for one or go to one of those nifty sights that list the actual exam questions.

Nothing beats good old fashioned work experience. How the person obtains their knowledge isn’t all that important. I’ve worked with quite a few people who weren’t Comp Sci majors, or weren’t “certified”, or never even graduated from college, who could run circles around other developers who were. In this day and age, so much information is available at your fingertips via the internet that if you take the time, you can learn on your own. Which brings me to my next trait …

Works well independently : With technology changing so often, a good developer has to be able to learn things on their own. A lot of people,however, have trouble with this, and need to “training” from others to learn things. I’m not saying training or learning from others is bad, but if a person needs a lot of hand holding, then they’re going to cost their company more money in regards to time and resources.

Self-Motivated : I think this one speaks for itself, but I have been around a lot of people who need to be kicked and pushed if you want them to get things done. These people usually don’t last too long.

Humility : This is a tough one, and some people may disagree that this is an important trait. I’m sure we’ve all been around a hot-shot developer or two in our time. They’re real nice to have on a team because of their skills, but man can they get annoying. I’ve been with a company that had to “trim some fat”, and surprisingly, they let the best developer go not because he made too much money, but because of his cocky personality. The great developers I’ve been around don’t have much of an ego.

Excellent Communication Skills : This can be a tough one to grasp too. I know for me, it took a couple of years and almost cost me my second job. It wasn’t that I couldn’t talk, but rather, that I didn’t talk. I was shy and tried to stay hidden. The great developers I’ve been around aren’t afraid to ask the tough questions and make sure no questions go unanswered.

Plug and Play : Great developers are able to be plugged into any project and produce the same great results each time. It has little to do with programming languages but more to do with them applying the same work effort to every project.

Can handle criticism : All programmers make mistakes and write bugs (some more than others). However, I have seen some guys get real uptight and defensive when their mistakes are bought up to them. With communication with others being such an important part of a developer’s job, at some point, someone is going to criticize something you do.

Willing to teach others : Younger devs need mentors. It is the responsibility of the more experienced devs to be willing to pass down their knowledge. I’m sure we’ve all worked with a guy or two who wants to keep everything they know “in the vault”.

Accountability : This one’s a tough one too, but the good ones know when to step up and take responsibility for something.

Organized : Not so much the “tidy work area” kind of organized, but more like knowing where everything is, documenting meetings, emails, phone calls.

Enjoys what they do : I think most developers like what they do, but some are just more passionate than others.

Tags:

Advertisements

February 19, 2008 Posted by | Technology | 2 Comments

Safe web browsing for kids with Firefox and Foxfilter

When my daughters surf the internet, it’s usually via my Macbook and Safari. I make them use Safari because you can set it up to require every domain to be approved before they can access it.

I had to send my Macbook away to Apple care a few days ago, and my girls used my Dell to access the internet. Of course this concerned me, because I had no way to filter the websites they were visiting. I then found FoxFilter which is a Firefox add on that allows you to approve web sites in a variety of ways. I have it set to it’s “Whitelist” setting, which is nothing more than a text area box where you enter the permitted domains.

PLEASE NOTE : I just tried to install FilterFox on my Macbook and found out it is not available for Mac OS!

Tags: , ,

February 11, 2008 Posted by | Firefox, Technology | 4 Comments

ASP.Net Wizard Control

Have you ever had to ask a user to input a lot of information at once? Has one of your business requirements ever had you stagger your data input over a series of pages? Have you ever had a client insist on the ability to cycle through each one of those pages, and then display a summary at the end? Well then my friend, if you haven’t ever used ASP.Net’s Wizard control, then you’re missing all the fun.

What the Wizard control does is allow you to collect all the information you need in a series of steps. The control comes built in with functionality to cycle through each of your steps. In this post, we’re going to write a quick page, collecting two fields, add some form validation, and then displaying the results in a summary at the end.

First thing you need to do is add a web form to a project, and drag the Wizard control onto it. We’ll add an additional step to make our code look like:

<asp:Wizard ID="Wizard1" runat="server" >
    <WizardSteps>
        <asp:WizardStep runat="server" title="Step 1">
        </asp:WizardStep>
        <asp:WizardStep runat="server" title="Step 2">
        </asp:WizardStep>
        <asp:WizardStep runat="server" title="Summary">
        </asp:WizardStep>
    </WizardSteps>
</asp:Wizard>

What these three steps represent, of course, is a different step in our process. The Wizard control itself is derived from the View Control. We could accomplish these same steps with the View control, but would have to add a lot of what the Wizard control gives us (navigation from step to step,etc). If we run this now, we see what we get “out of the box” from our Wizard control :
Wizard Out of the Box

Let’s add the following to our code :

<asp:Wizard ID="Wizard1" runat="server" >
    <WizardSteps>
        <asp:WizardStep runat="server" title="Step 1">
            <asp:Label ID="lblFirstName" runat="server" Text="First Name" /> :
            <asp:TextBox ID="txtFirstName" runat="server" />
        </asp:WizardStep>
        <asp:WizardStep runat="server" title="Step 2">
            <asp:Label ID="lblState" runat="server" Text="State" /> :
            <asp:DropDownList ID="ddlState" runat="server">
                <asp:ListItem Text="Please select a state" Value="" />
                <asp:ListItem Text="PA" Value="PA" />
                <asp:ListItem Text="MD" Value="MD" />
                <asp:ListItem Text="DE" Value="DE" />
            </asp:DropDownList>
        </asp:WizardStep>
        <asp:WizardStep runat="server" title="Summary">
             <table border=1>
                <tr><td>First Name :</td><td><% Response.Write(txtFirstName.Text); %></td></tr>
                <tr><td>State :</td><td><% Response.Write(ddlState.SelectedValue); %></td></tr>
             </table>
        </asp:WizardStep>
    </WizardSteps>
</asp:Wizard>

This should be pretty self-explanatory, as we’ve added labels and controls to steps one and two, and then summary information to step three. If you run this, you can cycle through the steps, and the information, and get a summary at the end. You can also cycle back through and adjust the data as well. The final part missing is data validation. This too is easy to do, as all we have to do is add a validation summary control and whatever validation controls we need. We’ll do so, and adjust our now complete code to look like this :

<asp:ValidationSummary runat="server">
    </asp:ValidationSummary>
<asp:Wizard ID="Wizard1" runat="server" >

    <WizardSteps>
        <asp:WizardStep runat="server" title="Step 1">
            <asp:Label ID="lblFirstName" runat="server" Text="First Name" /> :
            <asp:TextBox ID="txtFirstName" runat="server" />
            <asp:RequiredFieldValidator ID="valFirstname" 
                runat="server" ErrorMessage="First Name is required" 
ControlToValidate="txtFirstName">*</asp:RequiredFieldValidator>
        </asp:WizardStep>
        <asp:WizardStep runat="server" title="Step 2">
            <asp:Label ID="lblState" runat="server" Text="State" /> :
            <asp:DropDownList ID="ddlState" runat="server">
                <asp:ListItem Text="Please select a state" Value="" />
                <asp:ListItem Text="PA" Value="PA" />
                <asp:ListItem Text="MD" Value="MD" />
                <asp:ListItem Text="DE" Value="DE" />
            </asp:DropDownList>
            <asp:RequiredFieldValidator ID="reqState" 
                runat="server" ErrorMessage="State is required" 
ControlToValidate="ddlState">*</asp:RequiredFieldValidator>
        </asp:WizardStep>
        <asp:WizardStep runat="server" title="Summary">
             <table border=1>
                <tr><td>First Name :</td><td><% Response.Write(txtFirstName.Text); %></td></tr>
                <tr><td>State :</td><td><% Response.Write(ddlState.SelectedValue); %></td></tr>
             </table>
        </asp:WizardStep>
    </WizardSteps>
</asp:Wizard>

Now if we try to skip to Step 2 without entering a name, we’ll see :
Wizard with validation

There you have it, a rather simple example that should get you on your way. The last part to this, once the Wizard is complete would be to save the contents to a data source.

Tags: ,

February 2, 2008 Posted by | ASP.Net, C# | 2 Comments