In the light of a recent article, I would like to tell you the story of the appearance of a program for monitoring the amount of pledged time on oDesk from the origin of the idea to the finished application. By the nature of my activity, I most often engage in the implementation of web applications based on ASP.NET. But at the same time, as a hobby, sometimes I write desktop applications. Usually these are small programs for solving narrow problems.
When working with clients, we often use oDesk and, in particular, as a developer, I use the oDesk Team Room application to log the work process. And everything would be fine - time is running out, the project is growing, the client is happy - but I often found myself thinking that I didn’t have the opportunity to view the reserved time in order to know exactly how much time I spent on the contract. Sometimes it is necessary to satisfy the specific requests of clients such as “spend no more than 25 hours on me next week” and the like, and sometimes just for yourself, for statistics. Yes, of course, oDesk has a web-interface where you can get all this information, but it seemed to me not enough, since I need to either constantly keep the oDesk page open or periodically visit it, just to see how much time is pledged to this moment.
Stage 1 - an idea
One evening, while viewing mail, I came up with the idea of "simplifying my life" when working with oDesk. First of all, I decided to make a list of what I want to get from the application. It was small, but at that time completely suited me:
- The ability to view the logged time for the day, week and month,
- Automatic updating of indicators every 10 minutes,
- Nothing more, I don’t need a “program for everything”,
- Minimalistic interface (“Minimum actions - maximum functionality”),
- Not to spend a lot of time on implementation, a ready-made solution was needed as soon as possible.
Next, I decided to choose development tools. Due to my professional activity, I most often use C # and, in addition, I have long wanted to make a win-application using WPF technology. Why WPF? Just for one reason, which was significant for me at that time, these were applications “for myself” (I didn’t assume that anyone else would use it) and I have long wanted to try WPF and, in particular, XAML “live”.
Stage 2 - analysis and implementation
First of all, I decided to find out how authorization on oDesk occurs. During a quick look at the authorization page, I immediately noticed 3 fairly standard tags:
This is enough to log in. For authorization and further work with oDesk, I decided to use the HttpClient class. This is a standard class from .NET 4.5, but, nevertheless, can be used in projects on .NET 4.0. For authorization, a form is created and sent via the Post request to the server:
Next, you need to get a list of active contracts of the logged in user. The easiest solution, as it seemed to me at that time, was to take them from the page https://www.odesk.com/team/scripts/login?initial=1&after_login_location=http%3A%2F%2Fwww.odesk.com%2Fteam% 2Fscripts% 2Freport. The following small method was written for this:
Nothing complicated, just selected the values using two regular expressions. Well, in the end it was necessary to get the direct values of the counters. Looking carefully at the page https://www.odesk.com/team/scripts/report, I found a useful link to download the log in the form of csv:
This is just what you need. Further, the following small code was written:
And then I added a method to get the total time for all contracts:
So, after everything described, I had all the necessary methods to make a ready-made application. I started with a simple interface:
This is not an original screenshot. I regret that I did not do it then as a souvenir. But this reproduction is very similar and well conveys the dullness of the original. I decided to continue the very next day.
On the morning of the next day, I thought about “why most often will I look at this application?”, And the answer came somehow by itself: “to monitor the time indicator for the day”. Based on this, I decided to make this indicator larger in relation to the rest. It turned out approximately the following:
Of course, it’s better already, but still the feeling that something is missing is still there. As a result, after some more deliberation and sketching, I came to this option:
I liked this option more. In addition, it fits very well with the Metro UI concept of Windows 8 UI, which I really like.
After the final interface design was approved, I simply translated it into XAML and added the missing interaction logic. The result is a program that can log in itself and periodically update indicators. This was almost what I needed.
Stage 3 - Getting Started
After a couple of days, I decided that the resulting software can be shown to other colleagues and hear their feedback, comments, suggestions and suggestions. To their great surprise, they liked the idea, and I was just bombarded with a mountain of various proposals for improving it. I decided to implement some of them, but at the same time, many proposals were not accepted due to the fact that I was supposed to make a "monster" out of a small utility that knows everything. But I did not depart from the principle that was laid down at the very beginning - "nothing more."
After several more days of refinement, some of the proposed ideas were implemented:
- ProgressBar to display the update process,
- Slightly changed the behavior algorithm when the Internet connection is broken,
- Statistics for previous months (LMB double click),
- Ignore list
- Possibility of scaling (Ctrl + Scroll).
As a result, after all the work done, something happened as follows:
The last “touches” were the choice of name and deployment to the local server. As a name, I didn’t come up with anything better (and I didn’t want to think about the name anymore) than oDesktop. But, nevertheless, it seems to me that this name is quite meaningful.
After a short development, I got a very convenient (at least for me for sure) program that successfully copes with the function assigned to it for the past six months. Judging by the reviews of other people, many also liked it and they use it. But, unfortunately, it is not possible to please everyone. There are those who did not like her ... I do not know why. They did not explain. In addition, I tried to practice WPF.
Now I decided to share this small softinka with the public, though so far without source codes. While they are not in a condition to show them to anyone, subsequently they will be posted on git.
Now the idea has come up to implement a similar application for Windows 8, which, in my opinion, will be a good continuation of this “home” just-for-fun project.
Remote time control
Domestic freelancers are well acquainted with oDdesk - a large online service for remote work. Especially those who collaborated with American companies on an hourly basis.
In July last year, oDdesk released a statistical report, according to which Ukraine was in fourth place in the ranking of countries in terms of the number of hours worked on the service.
The share of our compatriots was 8%. The first three places went to India, the Philippines and the USA.
What is oDesk?
oDesk is a western remote work exchange. It allows you to find contractors, create a virtual work office for project control and internal communications.
There are two options for working on oDesk:
- hourly pay
- with a fixed payment for the result.
oDesk is “imprisoned” for the first option and contains the oDesk Team time and attendance program.
When a freelancer starts work, he turns on monitoring. oDesk Team automatically takes screenshots of the computer’s desktop every few minutes and calculates how much time it took to complete the task.
For the customer, this is an opportunity to make sure that the freelancer actually worked the stated hours. And for the employee - a guarantee of payment of money.
Why then do not all employers and freelancers switch to this service?
He has certain disadvantages.
Pitfalls oDesk for freelancer:
1. A lot of hassle with registration and getting started
How to get started on odesk.com? You must register and confirm your identity. And for this:
- fill out a profile
- to confirm the profile, send your photo, passport scan, scan of bank statement, apartment check. All this is in English and notarized,
- Confirm payment methods
- Take the “Readiness Test” to understand how oDesk works.
And only now you can apply for a job. There are difficulties again. At the start, you can only submit 2 applications for work. To increase the limit, you need to successfully complete 5 works or pass several online tests - to confirm the qualifications.
2. The language barrier
Even after registration, many stop halfway to the cherished work. Why? Due to the need to go through an interview with the customer. During the interview, both sides discuss:
- assignment, examples of previous work
- working hours are hours when both the customer and the contractor will be in touch
- accessibility - how many hours a freelancer can devote to work
And in order to prepare for the interview and make a good impression on the customer, a good knowledge of English is required. For most domestic freelancers, this is a difficult task.
According to the oDesk report, we see: 75% of the work done by Ukrainian specialists is technical work (web programming, mobile applications, web design, desktop applications and other types of software development). These are the types of work that do not require a good knowledge of English.
(According to the materials of the site www.dou.ua)
3. Time zone difference
While working at oDesk, the customer and the contractor need to be in touch at the same time. We must learn to live in the time of the customer.
Due to the large time difference, it is difficult to conduct an interview. For example, the 12-hour difference with American customers does not allow you to communicate in the daytime.
We have to look for customers from countries with close time zones.
4. Difficulties with the withdrawal of money:
- Legality. In Ukraine and CIS countries, it is very difficult to get money with oDesk legally. In fact, there are no “white” ways. You have to take risks, choosing from the "gray" methods.
- Commission. Keep in mind that oDesk charges a commission of 10% of all customer payments. An intermediary bank and a local bank will also withdraw their interest.
- Delay. After the customer has paid, the contractor needs to wait a week and a half before cashing out earnings.
5. It does not take into account non-computer hours
If you agree on an hourly rate, then the hours of work not at the computer will not be taken into account when paying. But sometimes you need to think trite or call.
Of course, you can add this watch manually. But oDesk does not guarantee payment of such time. Everything will depend on the employer.
Yes, and over time, the PC is not so simple. Before putting the project in, you need to look at all the screenshots and delete those that are not related to work. Together with the picture takes 5 minutes of time. Each image additionally contains a description. Without it, time may not be counted as working. Description must be added manually.
ODesk disadvantages for the employer
1. Unable to control office staff
Odesk is a highly specialized service for finding and working with freelancers. Accordingly, Odesk cannot be installed in the company and used to track the time of employees who work in the office.
2. The result is replaced by a process.
During hourly work, payment is guaranteed only if the employee uses the work time tracking program. The screenshots indicate keyboard activity. This is not entirely correct, because at the time of the picture, the freelancer could study the requirements of the customer or the documentation. However, oDesk also takes this into account.
Because of this, the result is often replaced by a process. Instead of thinking for half an hour, and then writing code in 5 minutes, the programmer knocks on the keyboard for 2 hours.
Is there an alternative?
This is Yaware.TimeTracker - a service that keeps track of employee time at the computer.
The service automatically collects detailed information about the employee’s work:
- at what time he began work and in which he finished. When and for how long was distracted
- how many hours worked in total per day / week / month,
- What programs and resources I used, which sites I visited.
The employer sees the monitoring results in the form of convenient graphs and reports. On them different colors indicate productive-unproductive time.
Why it is more profitable to use Yaware.TimeTracker
1. Yaware.TimeTracker can be installed in the company and apply to time tracking of office employees and remote branches.
2. Ability to choose a Russian-language or English-language interface
Domestic freelancers can work with customers from other countries.
3. Cost of use
Yaware.TimeTracker does not take 10% of the commission from hourly pay, bonuses, etc., does not withdraw $ 2 when withdrawing money from the card. One workplace will cost the employer only $ 6 for 1 month. You can pay for your subscription in any convenient way.
4. Real time is paidspent on order fulfillment
The employer notes “productive” only work programs. Anything else will be neutral or unproductive. No need to waste time looking at screenshots and reading comments on them.
5. Less time to analyze
Yaware.TimeTracker has the ability to take screenshots and snapshots of the webcam. But the employee does not have to sign them manually. The service independently adds the name of the program / site with which the employee was working at that moment.
The manager also does not have to take pictures every 2 minutes. He can just look at the Yaware.TimeTracker charts and see if the employee is doing his job.
6. The result is not replaced by a process
As in oDesk, in Yaware.TimeTracker, an employee can click “Suspend monitoring” for a time when he wants to do personal business or just leave. But at oDesk, such extracurricular hours will not be taken into account.
In Yaware.TimeTracker, there is an offline activity function. It allows you to take into account working hours not at the computer.
For example, if a designer first draws a diagram on paper, one can envision such offline activity and designate it as “productive”. Then the employee does not have to “pull the mouse” every 5 minutes.
Are you an employer looking for a remote employee? Or a freelancer who needs a job?