Upwork, Elance and Freelancer.com provide on-demand access to more than 1 million technical workers – but how good are they for outsourcing C# development projects for the Windows desktop? On which portal to do you find the best C# experts in 2015? This review gives some hints.
As test project I created a specification for an Internet speed test application as I needed one to trouble-shoot my flaky internet connection at home. The available speed test websites do not allow you to run speed tests periodically (say every minute) over an extended time period and to automatically resume the speed check_s after a reboot. Based on these personal requirements (and with a sense that I might not be the only one who needs it) I created the specification and posted the request on the three major outsourcing portals.
The Visual Studio C# Windows Application Project Specification
Here is the summary - you find the the full specification at the end of this blog post.
We are looking for a basic internet connection logger in C# for the Windows desktop. The application will connect to a server every X minutes and log the connection download speed and display it graphically. Please see the mockup for the user interface. Suggestions are welcome.
Elance vs Freelancer.com vs Upwork in Numbers
Immediately after posting the project on all three outsourcing portals the first bids came in. Here is the result after seven days.
I received qualified bids on all three portals. As I want to be objective, my definition of a qualified bid” is a bid of someone who as completed at least one 4-5 star rated project. The justification for this criteria is simply that an already (at least) once successful freelancer knows what he is doing and is thus qualified in this sense.
As expected, Elance, Upwork and Freelancer work all equally well for outsourcing small fixed price Windows C# development prjects. I received qualified bids on every portal. Unlike in my previous review of OpenCV outsourcing this time most if not all the formally (see above) qualified developers were actually truly knowledgeable about creating a Windows based C# application - that was judged subjectively by reading their proposals. That is not really a big surprise. Unlike OpenCV, a Windows Desktop C# application is something common. Given how common it is, the overall number of bids is surprisingly low, especially on Freelancer. Then again, like I said before, all you need for a successful project (of this size) is one truly qualified developer.
So who did I pick? I selected a freelancer on Freelancer.com with a bid of $170.00.
So how good was the delivered result? I think it was great. It was exactly what I had in mind. One caveat is that the estimated time frame by the developer of less then one week was unrealistic in the first place. But there was no rush from my side, and I told him in our first virtual meeting that I am not in a rush and prefer quality over speed. The project was completed within my (much more reasonable) time frame of 2-3 weeks and on budget. As for the quality, I like it a lot. But see for yourself:
“Take away”: The Windows C# based Speed Test application
The project was created in C# with a Winform based user interface.
The full project source code is available on Github as ready to compile Visual Studio 2013 project. I put the software under the GPLv3 free software license, this allows everyone to use and extend the project. For example, one could add upload speed and ping testing. I did not need these features to fix my intermittent connection issues.
The application runs on Windows 7 and higher, there are no other system requirements. If you just want to use the speed test application, download the installer here:
- Get the Download Speed Tester application installer(only ~1.5 MB)
If you want to review the source code and maybe even add a feature or two get the full source:
For more more details please see the project page on this website:
- More about the Download Speed Tester application
Have fun testing your download speed!
Addendum: The full specification I used for this project:
We are looking for a basic internet connection logger in C# for the Windows desktop. The application will connect to a server every X minutes and log the connection download speed and display it graphically. Please see the attached mockup for the user interface. Suggestions are welcome.
The use of open source/GPL licensed code, code project code snippets and so forth _is ok as long as you mention clearly form where you took what code. In other words even if you find a similar, existing open source app and just modify it to meet our needs, that is ok – as long as you let us know.
Charting: The chart displays performance other time […] Chart displays last 24h.
Log messages box: The log part of the app logs every measurement. The status change part notes if something has actually changed between this and the last measurement (on<->offline, IP change). The mockup should make this clear.
Tray: If autostarted, the app starts running in the tray. Clicking the tray icon will bring up the regular UI.
Log file/window: The log windows shows the latest entries (say last 10), most recent on top. All events are logged to a CSV file.
Download speed accuracy: Benchmark for correct values are the numbers of the Opera web browser (this browsers displays the download speed while downloading files)
1. The Windows App with a GUI as in the mockup – or nicer ;)
2. The project must be delivered as VS2013 project with all required files and compile without warnings. Please comment your code well.
3. In addition, we need the project (binaries only) as Inno based setup. The installer should also download and install the .NET runtime if required. Last step in the installer opens 1. the app and 2. A url with a link in web browser (software homepage) [checkboxes allow to unselect 1+2]
4. Operating system:- All the platforms supported by .NET 4.5 (Win 7 and higher, Win 2008 R2 and higher)
5. App runs in all Windows language version (app itself is in English, but should also run ok on e. g. French or Russian version of Windows).