DOs and DONTs of getting a development job

I have been accepting resumes for a while now trying to find developers for a client of mine.

I will be updating this article from time to time with new stuff.

DO have someone proofread your resume, cover letter, and email body.  Espically if you are not a native english speaker.  If you want your resume to go directly into the trash, then please, write your email with lots of grammer and spelling problems.

DON’T write in your cover letter that, while you don’t have the skills/experience they are looking for, you DO have the skills/experience that really matters.  You have just managed to tell the person reading your resume that a) you don’t have the skills they need, b) you think you are smarter than the person who came up with the needed skills/experience, and c) you are probably not easy to get along with.  All in the first sentence of your cover letter: BRAVO!

DON’T send a 9 page resume including every project you have ever worked on and details about said project.  I remember when I was told that resumes should be 1 page long (2 at the most) and I thought how wrong that was.  “My resme will be so awesome, 2 pages can’t contain it!”  I realized very quickly how wrong I was.  I don’t need to know the specifics of some project you worked on for 3 months back in 2002, and I don’t need to know a list of every programming langauge, technique, or technology that you have ever touched. 

DO supply a cover letter, or at least turn your email into your cover letter.  It will get you bonus points.

DON’T include a stupid signature on your emails.  I actually received a resume that was signed like this:


If fishes could talk they’d ask for legs

Ok I guess that is somewhat funny in a Jack Handy kinda way, but it really doesn’t belong on an job application email.

DON’T list “Internet Connection Technologies” that you have experience with.  I swear I got a resume with this as the 2nd heading (after education).  It listed “AOL Dial Up, AOL High Speed DSL, SBC DSL”.  Before you start thinking, ok well maybe these were projects they worked on, you know, like working on the team to create AOL’s dial up service… no this was not what they meant, it was clear from the rest of the resume.

DON’T just make up stuff if you don’t know the answer to a question.  This isn’t the ACT: there are penalities for guessing (it makes you look really stupid).  Now clearly there is a difference between making an educated guess (or talking in generalities instead of specifics) and trying to totally pull something out of thin air.  I recently interviewed a candidate who said he didn’t have any project experience using AJAX but was aware of AJAX technologies.  So I asked him, can you explain how AJAX works?  I wasn’t expecting much, just something about using client side script to make calls to the server w/o reloading the entire page.  Instead the answer we got back was “It’s like JAVA running on top of Microsoft.”  Up until that point I hadn’t decided if this guy was qualified, and had he simply said “No, I am sorry I am not that familiar with AJAX” I probably would have still been considering him, but his terrible attempt at an answer removed all doubt that he was not qualified.

Validating Enum Values

You were a good developer and created an enum to represent the integer values that are being passed into your method.

It makes life easy for everyone.  Good job.

But now you realize that ANY integer can be passed into your function, even though your type only defines a handful of values.

Well, you need to validate the enum values that are coming into your method.

This can be done quickly with the following code snippet:

If Not [Enum].IsDefined(localId.GetType, localId) Then
    Throw New System.ComponentModel.InvalidEnumArgumentException("Invalid local value.")
End If

In this example localId is the variable name of type LocalType.

Shocking: My Interest Continues!

As I have grown older, I have learned to understand some of the quirks in my personality, and adjust my expectations accordingly.

For example, my whole life I have always had periods of intense interest in some subject only to lose interested after a couple months.  Various video games, RC Car building and racing, drawing, electric guitar, etc.

So now when I get older and I get ultra interested in some new subject, in the back of my mind I say “Ok, I know this seems like the most important thing right now, but in 6 months you will proably not be THAT interested anymore.”

I would have bet you money that would have been the case with my most recent endevor, trying to learn spanish.  But here I am, listening (even paying for) podcasts, buying iPhone translation software (this software is really great), taking Spanish lessons twice a week with an instructor from Peru, and even booking a vacation to mexico to get 6 hrs of Spanish instruction a day.

I guess in my old age I am growing my attention span :).

10 Concepts You Need To Know As A Developer

This article: 10 Concepts Every Software Engineer Should Know, is worth taking a look at if you are a developer.

I thought about it for a minute, trying to think of something important that they didn’t touch on in this article, and I think the only major thing I would argue for would be entity relationship diagramming: the ability to turn a problem domain into a set of entities and relationships.

Other topics I would have considered: Regular Expressions, code documentation, project estimation, and maybe unit testing.

Generating Resx Files For Globalization and Localization

Using resource files (resx files) for globalization is a standard technicque.  ASP.NET allows you to create 1 resx file per page to help you manage your content.

But when it is time to convert those files into the correctly named localized version to send to the translator, you might find yourself doing a lot of copying and renaming.

So I wrote a little script that does this for you:

Imports System.IO
Module Module1

    Sub Main()
        Dim languages() As String = {"es", "pl", "de", "fr"}
        For Each filepath As String In Directory.GetFiles("C:translationTest")
            If filepath.Contains("x.resx") Then
                For i As Integer = 0 To languages.Length - 1
                    File.Copy(filepath, filepath.Replace(".resx", "." & languages(i) & ".resx"))
                Next
            End If
        Next
    End Sub

End Module

This will generate all the files for you, and then all you need to do is send the off and wait for the translator to do the REAL work :).

The Cloud Comes To ASP.NET

In the next 72 hours, you expect the new campaign to generate 10x more traffic than you have had in the last 72 days.  How do you scale to deal with this problem?

Do you buy more servers?

A few companies are starting to offer instant scalability for needs like this.  Amazon has been doing this for a while with their web services, but it isn’t very useful for people who need the site to be running 24×7 (and it isn’t very MS friendly).  But now there are other companies coming into play to provide the service I am talking about.

https://www.gogrid.com/

and

http://www.mosso.com/

Both offer the ability to instantly scale up your infrastructure as needed.  You can buy more CPU cycles, storage space, bandwidth etc, for a short time period.

This may (or may not) be ready for prime time, but it an interesting development for sure!

iPhone 2.0 Breaks Voicemail Over Bluetooth

Here are a few threads of people who like me have found that their brand new bluetooth devices (that they got at the apple store no less) won’t allow you to hear your voicemail with the new iPhone 2.0.

One has to wonder…. why does Apple do this crap?

Why don’t they just give us a cut and paste function?

Why don’t they make the speaker phone louder?

Why don’t they let you open links in a new window?

Frustrating…

iPhone 2.0 Exchange over WiFi Does Not Work (Now It Does)

I recently upgraded my iphone to the new version 2.0, almost entirely for 1 reason: exchange syncronization.

After some minor issues setting up, I got things working correctly and it worked great.  But, as soon as I connected to a wifi and tried to do anything with exchange it fails.

I first experienced this at work where we use 802.11 WPA-PEAP, so we were eager to take advantage of 2.0s support for WPA-PEAP.  We installed the profile and were browsing at fantastic speeds… but no email was coming through.

I couldn’t send or receive any email.

We tried using the admin tools to look at the iphone console messages and they talked about some ASxxxxxx errors, error code 451 came up a lot.

I hoped it was something with our work network, but when I got home I found that once again, I couldn’t send or receive anything.

Fantastic.

I’m hoping I am not the only one with this issue and someone else will read this and have more to add.

Update: It seems that the cause, for some unknown reason, is related to the profile that our network administrator is able to create with some new administration tools from apple.  Apple provides a tool to create profiles so you can send a config file to an iPhone and it will setup everything (email, wireless access etc).  When this profile (even if only for access to 1 wireless network) is on my iPhone, all exchange communication over our WiFi failes.

Update 2:  Ok maybe there is something else going on here.  I have removed the profile and I still can’t send / receive from my home wifi.  I tried it at my parents house too and I get the same result.

Here are some keywords/error messages that I am getting:

Exchange Account Verification Failed

Cannot Send Mail.

An error occurred while delivering this message.

Update 3:  Alright, it appears we have it working now.  There were some settings across a few of our exchange proxy servers that might not have been updated, and also there are some activesync settings that allow you to configure an “inside” url and an “outside” url.  After much poking around, I think Mike Driscoll got it figured out.  Thanks Mike.