-
Choosing a software contractor
When companies look to hire a developer to write software, in particular iOS (iPhone and iPad), they expect to hire an expert. However these days everyone and his dog claims to be able write iPhone and iPad software. While this may be true, it is nearly impossible to know if you're getting a good product. Apps may have great visual design, but in some cases it is just a pretty face. So how do you pick a developer that is going to produce a quality product that is stable, maintainable, and works well. Many projects get passed from developer to developer, so having good quality code to begin with, the app will have a higher change that it can continue without being completely rewritten.
I've written software as a contractor for many years and like to think that I know what I'm doing, so here are some tips and questions to ask that may help companies hire a quality developer.
- Does the developer rely heavily on open source? Open source itself isn't inherently a problem, but should be used sparingly for specific purposes and should be easily removed at a later time if need be. Building an entire application on an open source framework makes things needlessly complicated and fragile.
- How long has the developer been writing Objective-C software (Mac or iOS)? Experience says a lot about how easily the code can be maintained in the future.
- What do the applications that the developer has developed look like? Take a look at the App Store and see how complicated the apps are and how well they work?
- Ask for references. Ask why the developer is no longer doing work for the references. There are a number of ways to say "we got fired", so be on the lookout for those. If the app is no longer being developed, the company ran out of money, or the developer no longer has time are probably the best reasons; anything else might be suspect.
- Does the developer use source control? This is a pretty basic requirement. If a developer doesn't use source control for his/her own projects, that would worry me. There are many sites that offer free or cheap source control, so there is no excuse for avoiding it.
- Does the developer use code analysis tools such as CLANG? It's built into Xcode and there is no excuse for avoiding it.
- Does the developer allow warnings when building the project? Compiler warnings should be avoided at all costs.
- Can the developer provide code samples for review? In particular, an app that can be built using the Apple Developer Tools. This is important as some developers have a huge list of tasks to get a project built. A project should be delivered such that you can unzip the archive and build the project. I've seen projects delivered that have a list of steps to build including checking out code from open source repositories. This is extremely problematic and error prone as the repositories could change by the time the app is delivered.
- Ask the developer what is the right way to determine if a feature is available on a particular device. Today I saw code that checked the OS version to determine if Retina display graphics should be used. This is completely wrong because for example, iOS 4 runs on devices that don't have Retina displays. (Also the code that checked the OS version didn't properly check the version.) Apple has identified ways to determine if a particular function should be used or a feature is available.
These questions are probably hard for non-developers to ask and know if the answers are legit, so it might be worth spending a few bucks to find an expert, such as me, that can spare a few hours to evaluate a developer, but doesn't have time to actually do the project.
-
Review: Homax Caulking Tool
A few weeks ago, my father mentioned that he got one of the best tools for his tool box, a Homax Caulking Tool
for smoothing a caulk joint. When I was at Wal-Mart, I picked up one of these tools (as part of a Homax kit) and put it away for the next time I did caulking. Caulking is one of those things that I hate as I always make a mess.
After finishing a drywall repair due to a plumbing leak, I had to put some tile back and caulking the top of the tile. (While some people grout the top, the rest of our downstairs has the top caulked.) Luckily the 6 year old tube of caulk outside was still good, so I applied the caulk, used the finishing tool and must say it was the easiest and cleanest way to caulk a joint. There is very little to say about this simple tool, except if you ever have to do caulking, this tool is a must have. As a standalone tool, it is less than $3 at the store and will save you a lot of headaches.
Pros
- Easy to use.
- Makes a very clean caulk bead.
Cons
None
Summary
Just get this tool as at some point during home ownership you'll have to do some caulking; you won't regret it.
-
When do you give up and start over?
I've worked on many, many projects in my career. Some of the projects I've started, some I've inherited. There comes a time in every project, not just software, but also home projects and car repairs, where I have to decide to scrap what I have and start over. This decision is never taken lightly as I'd be throwing away something that works in exchange for a clean start.
I've done this with my NotifyMail program a few times as the application was quite small, but in the process I had to drop features and probably ticked off a number of users. In all my time working on ReceiptWallet, I asked myself a number of times if it was time to scrap the code and start over. While I never completely scrapped the code, I did rewrite chunks of it as I learned more and better ways to write code.
With many of the projects I've inherited, the decision to start over has pretty much been a non-starter as the programs had existing users and I was under time pressure to get things done. Unfortunately this sometimes lead to fixing lots and lots of bugs that I didn't create and probably wouldn't have been in there if I started over.
The same type of decision has to be made with respect to cars and even a lesser extent, houses. If you keep pouring money into a car for repairs, at what point do you decide to buy a new car? Granted the cost is much higher for a new car, but over time the repairs could add up to the price of a new car, not to mention the hassle of taking a car to the mechanic.
-
Paperless 2.0 Released
As my loyal readers know, I sold ReceiptWallet to Mariner Software about 2 years ago and they renamed it Paperless. Yesterday, Mariner released Paperless 2.0. I couldn't keep away from the product that I started over 4 years ago, so I've been helping out with this release. This release is, in my very biased opinion, a killer upgrade. It has so many features in it, that the list on Mariner's website doesn't it to justice!
One thing that people ask me is "how should I setup my libraries in Paperless?". That's a question I have never been able to really answer and with 2.0, the question is even harder to answer. There are so many ways to customize a library that it is a solution for everyone, no matter how you want to stay organized.
If you're a Mac user, I'd definitely recommend checking about Paperless 2.0 and giving it a whirl. For people that haven't started storing documents electronically, there is no better time to start then now just as the tax season starts. I was talking to my tax guy today and was able to quickly pull up all documents I needed with just a few clicks.