views:

640

answers:

8

One of the most frequent complaints I get is in my attention to detail. For example, I work with a bunch of links (60-70) and have to edit the destination urls, but one or two may be broken. Small percentage, but at this level (junior certified developer on probation), this is not acceptable as this is just basic web development.

I have learnt not to take anything for granted or at face value, eg if 5 links work then that DOES NOT mean all of them will. I have also learnt that you HAVE to check everything, boring/tedious or not. However, what else can I use in my personality/work approach to sharpen my attention to detail? Tools to help check for common mistakes in programming/web development (I probably have them at home but not at work) can be recommended, but what about things I can try to implement in my methodology/work ethic?

Thanks

A: 

Test everything.

If that sounds onerous, remember that unit testing is your friend. Unit tests only have to be written once, unless you refactor and willingly break the test.

As you pointed out, everything needs to be checked. It's just like proofreading; you're always surprised how many errors you find. It's why I almost always edit my posts (like this one) two or three times.

Are you being interrupted a lot during the day? Studies have shown that this causes short-term memory loss.

Robert Harvey
Interruptions are the bane of concentration, and programming requires intense concentration. Studies have shown that it takes programmers half an hour to get "back in the groove" after being interrupted.
ScottSEA
A: 

In your specific example; look at using automated testing tools, or macro-based editing - try to reduce the amount of human error that can be introduced.

In the case of the URLs, write a little script to visit each changed URL and check the HTTP return code. Or, when editing the URLs in the first place if it's a mechanical change then write a script / or a regex to perform the modification for you.

Dave Rigby
+1  A: 

Are you in a hurry? When I was mentoring other programmers, I tried to tell them that I wanted it done well, and not quickly.

My/our boss disagreed with me, wanting it done quickly too.

In some environments where the quality matters, if you haven't done it well then someone else has to check it / redo it, in which case what was the point of giving it to you? Whereas if you do it well, even if slowly, then you're actually helping.

I figure you ought to learn to do it well, whatever that takes: including learning how to test what you've done. After you've learned that, then you can maybe begin to get quicker at what you're doing.

ChrisW
Quickly, correctly, cheaply - choose any two.
ScottSEA
+1 - I had one contract where I was doing some very basic work, but was slower than anyone else on the team. On the other hand, my stuff worked out of the box, while theirs never did.
kdgregory
+7  A: 

As a programmer with ADHD, I find it incredibly helpful to make lists and set alarms. These help me more with my everyday existence, but they're also useful for coding, ie:

  1. write test for code
  2. Write code
  3. test against thisData.txt
  4. lather, rinse, repeat...

I get distracted incredibly easily, so lists and alarms help me keep track of where I am in a process.

ScottSEA
May I ask you, please, to explain what alarms you use, and how you use them?
ChrisW
Nippysaurus
@ChrisW: I use the alarm app on my iPhone. As to how... well, when I need to remember ANYTHING in the future (send the fax by 3:00pm), I set an alarm. It has a snooze feature, which is nice... and you have to shut off the alarm to get it to quit bugging you.
ScottSEA
Glad to know I'm not alone :P
Jon Limjap
I reckon I could be ADHD?
dotnetdev
@dotnetdev: It's entirely possible. I recommend talking to your doctor.
ScottSEA
A: 

This is where you have some real opportunity to take some initiative. As a junior programmer, you should have the skills to write a little program which tests the validity of the links you create. So learn what you need to in order to make that happen. Write this program to help you test your links. You will show that you are conscientious and you take initiative, and the quality of your work, of course, will improve greatly.

Dave Markle
A: 

Take out as much manual, error prone work as you possibly can. Use tools which help prevent you from making mistakes at every available opportunity. For example, here are some tools from the Microsoft stack:

  1. RedGate SQL Compare and SQL Data Compare (ensures changes to DBs are reflected across environments)
  2. JetBrains ReSharper (identifies redundant code)
  3. Your favourite unit testing software (validates code functions as prescribed)
  4. Microsoft StyleCop (makes sure you’re consistent in your formatting)

With regards to your specific example, try using Xenu’s Link Sleuth and it will automatically tell you if your links are broken.

Troy Hunt
A: 

You need some automated testing (commonly referred to as xUnit). Ideally these tests will run every time you change one of your URLs and then test all of the URLs to make sure none are broken. I've used HttpUnit in the past to help batch test similar things to what you describe.

Vinnie
A: 

Besides automated testing, here are a couple of other ideas:

  1. Break work down to chunks that can be easily tested. In changing 60-70 links, I'd take 5 at a time and change one, test it and repeat. After 5, I may re-test all 5 again just to make sure I didn't miss any. This may lead to some OCD-like behaviors so one has to balance ensuring quality with just doing busywork that doesn't require much thought but still should be done.

  2. Split testing into 2 times. Do one set of tests while you are doing the work itself, and then on another day do a re-test of everything before submitting it. While this may seem like it would slow things down, sometimes one can look at code the next day and go, "What the heck was I thinking? This is nuts! WTF!!!" at one's own code simply because someone tried to get things done without taking some time to rest and then look at the work again.

JB King