Category Archives: projects

Hourly rates, Amount of work and Availability

Note: This essay is not always applicable while some projects definitely demand a straight work schedule, reporting and collaboration between the team members. However it reflects the majority of projects and clients out there in the wild.

As an employer I prefer to charge on a project basis. It's easier to plan my budgets and the costs of the final results. 

As a contractor I prefer hourly payments. It helps dropping the pressure from incorrect specifications and further negotiations after the project and the budget have already been set.

However I am well acquainted with the pros and cons of both methods. But there are three terms that I believe most clients use in an inappropriate context without gaining the maximum productivity and optimal costs for their projects. We're speaking about the hourly rates, the amount of work and availability.

Hourly rate

As I said I got tired of arguing with clients with dummy specifications and clonings of the "Clients from Hell" samples. I don't expect all of them to be technicians. But usually the time dedicated for meetings, specifications and other meetings during the process exceeds the actual development time. And also the initial meetings and negotiations are still 'Awaiting' and projects are not actually accepted so there is a serious risk of "This price doesn't fit to my budget, I cancel" so... yeah.

So I prefer the hourly rates. I estimate single tasks and modules based on what I know. In case of any misunderstanding we have a short chat/call with detailed data what is the extra work all about, what else needs to be done and how will this reflect the previous estimate. On approval we work, on rejection - I don't waste my time. Simple as that. 

What annoys me most is that clients are looking for specific hour rates. For instance: "I am able to pay $10 per hour" while I am estimating some projects on $20/h. And I get rejected because of my _hourly rate_ without even being able to estimate the amount of work to be done.

This is completely wrong for one simple and basic reason. A task to be solved is based on the following formula:

Solution = amount of time * hourly cost * quality coefficient

Lets start backwards.

  1. Quality coefficient - a decimal variable between 0 and 1 that values the final quality of the solution. For instance, talking about a website creation, a QC of 0 would be completely useless end product. A coef of 1 would be a multilingual website (if needed) which is W3C valid, cross-browser compatible, reusable and well documented source code, stable and secure. 
  2. Hourly cost - simply the price for working for 60 minutes.
  3. Amount of time - here is the tricky moment. This is the time that an expert needs to complete a given task. You know what? My $5-coders I work with are pretty slow and their end work quality often needs refactoring. While they solve a simple problem in 4+ hours with a coefficient of 0.7, my core developers for $20/h complete their assignment in less than an hour with 0.95+ quality. And asking for more.

So, what I am about to tell is: don't judge the coder by the hourly rate. It's irrelevant until you know the end estimate and the quality of the work.

Amount of work

This is another standard requirement which is particularly based on the hourly rate.

In my experience there are 2 types of projects - maximum work for a short term or flowing work which is long term. Most employers require long-term non-stop working. This usually affects the productivity of the worker and his/her motivation as well. 

If you work with an experienced coder or designer, or whatever who could do proficient and high quality work for a short time, you need to give him/her the freedom of the 9-5 working office schedule. Sometimes this is not possible due to some company requirements about the availability and meetings and so on, especially when people do work in different time zones. So here it is step 3 - the availability.

Availability

The availability is the time range while the worker is available to contact the project responsible person. However most clients expect that the person is available only during the time of the actual work and also, that he/she is working all the time during the availability period. Which is completely not mandatory.

For projects that need some quick reaction and support the contractor must guarantee availability hours and _not_ work hours. Its just like the support positions - 2 people should be _available_ 12h for any possible exceptional situation. But it doesn't necessary mean that they need to do actual work during this period. 

My practice is working on 2 or 3 projects a week, as the projects vary in their specifications I dedicate 40-50 hours a week at total. I am available 70+ hours a week for a client if needed to get some consulting or just status updates and I do quick and clean work for the 15-25 hours that I have agreed on working for the given project. This usually leads to best results at a minimal cost.

What I could have done for the conservative clients?

I don't like cheating and I usually cancel projects and reject client invitations for people that wouldn't understand this article. But, you know what? If I am confident in my skills (as I am in few technologies I've been polishing my skills in during the last 7 years) I could have done the following:

  • estimate projects completion time multiplied by three or four 
  • giving half of my availability

As a result I would charge for 4 times slower work and 2 times the price I would charge normally with a flexible client. I would mark in my work diary 120 hours of work (3 projects * 40 hours) while it is hardly possible while I actually work on my normal rates and schedule. No one would even doubt if I am a fast and clean worker. But why should I cheat if we could agree on my preferred rate and a flexible working time?

del.icio.us Digg DZone Facebook Google Google Reader Magnolia reddit SlashDot Technorati ReadMe.ru Dobavi.com Dao.bg Lubimi.com Ping.bg Pipe.bg Svejo.net Web-bg.com

Project moon circle

Projects come and go, and this cycle is way important for a freelancer.

Recently I've been in a full circle for the past few months with no option to turn off for a week or so. I've been occupied even during my summer holiday (although I hadn't worked a lot there), however all of my time here is busy with existing projects, trainings, events etc.

I'm trying to close 3 CakePHP based projects at the moment and bugfix on a Croogo one. At the same time I'm doing my final lectures of my Java for QA's training for VMware. I've rejected few web projects because I cannot handle that much work and I sincerely hope that we could start something bigger. There is too much communication and coordination when you manage 4+ projects and I prefer working on 2 projects at all. That would reduce the time that we spend on meetings, skypes, mails etc with many clients at a time and help me focus on the real core of the project.

I am also negotiating on 2 Java projects, one of them is Groovy based. I am keen on Java and on scripting RAD as well and Grails does them both, so I'd be happy to code that for a couple of months, I suppose. At the same time I'm trying to teach trainings and manage more in order to have some sort of relaxation for a month or two, before I get back to the real hardcore freelance for a living. 

del.icio.us Digg DZone Facebook Google Google Reader Magnolia reddit SlashDot Technorati ReadMe.ru Dobavi.com Dao.bg Lubimi.com Ping.bg Pipe.bg Svejo.net Web-bg.com

Motoclub.BG – our new moto project

 

We delivered Motoclub.BG and now it's available and accessible. The web portal is an online version of a magazine for motorcycle sports and vehicles, ATVs and others. As the bikers' favourite music is rock/metal, breaking news on concerts and live events in clubs are posted there as well.

The portal has few interesting sections for magazine online overview. You could find news and specialised articles, moto calendar with coming events, catalogue with specifications for different brands and so on. Filters and archives provide searching via keywords or month/year ranges. RSS feed on latest news is staying in the left column, next to the invitation to the Facebook group of the website.

The project is CakePHP based with MySQL database behind. I've implemented a few custom solutions on user management and RSS aggregation which I'm going to describe later.

del.icio.us Digg DZone Facebook Google Google Reader Magnolia reddit SlashDot Technorati ReadMe.ru Dobavi.com Dao.bg Lubimi.com Ping.bg Pipe.bg Svejo.net Web-bg.com

How come that I don’t do Skype for business?

 

The Skype revolution few years ago was one of the Internet innovations I was rather unhappy to happen than cool with it.

First of all, my Internet experience was based on technology that didn't allow VoIP communication at all. Hardware was weak, there were no integrated sound devices on motherboards, and the Internet connection usually was slow enough even to load pages properly. That's way my first years were related with IRC and ICQ - more chit-chatting protocols.

The other issue is the closed protocol that Skype provides. Compared to IRC that is open (free-for-all) or ICQ that is at least unlocked at some point, Skype provides no support for 3rd party clients, scripts etc. You have no idea what happens behind the scene. So in fact the only think you have is the facade, the UI that developers have meant for you to use. How does it actually work is an open question for all.

VoIP and video conf calls are great feature to talk to relatives around the world. It's free and it's good to communicate with people abroad and do more 'live' connection with voice and look. But when it comes to business, I would prefer using mails and messaging. First you have enough time to form correctly your thoughts and define it the right way for the other side. Second, you have logging which makes it suitable to keep in touch with what you have to do in a tasklist-like form. The ink is on paper, that's all.

Email/Gtalk is what I would use as an alternative.

del.icio.us Digg DZone Facebook Google Google Reader Magnolia reddit SlashDot Technorati ReadMe.ru Dobavi.com Dao.bg Lubimi.com Ping.bg Pipe.bg Svejo.net Web-bg.com

Project-base, Support and Salary

 

During my couple years of work as a PC techy support guy, administrator, company hired developer and freelancer, I've finally separated three different types of work: project-base, support and salary.

Project-base

This is a popular way of working in USA and Europe. The client has a task to be performed by an expert. Therefore the employer seeks for an appropriate guru to fulfil the one's requirement. Simple as that.

What are the major characteristics of project-base work?

  • fixed requirements
  • usually short-term or medium-term
  • fixed price for the whole project or different phases

Focusing on the broader perspective, a freelancer could be hired for a small website or script, but there are big corporate systems developed for tens of manmonths, too. So borders may vary. But requirements are fixed at the beginning, as for the money, too. No surprises during the development process.

Support

Support staff is hired for a preliminary defined schedule. Let's say every second Monday of the month or for 10 hours for the whole month. This is a capacity being paid at the beginning for doing simple (or important, but not that time wasting) tasks. The client doesn't need a full time expert, but wants a regular technical guy to be available for consultations or small fixes.

Usually, typical support marks:

  • fixed work-time or hours
  • fixed month/hour price

Support work could be tricky if you maintain couple of different support projects. But if business case is clear and hours can be easily predicted, than it is a sweet and not that engaging perspective.

Salary

That's probably the most popular working type in the world. Rules are simple: you have a week amount to fill and... you just have to fill it. Let's say 40h a week, 9am to 6pm working  at the office and that's all. Irregular overtime, constant availability. Tasks may vary - the employee is available at the work time he is contracted for and can be 'squeezed' for different tasks/services.

What's cool with salary work?

  • regular and usually good payment
  • some benefits as transportation taxes covered or cell phone bills
  • work ands at 18 o'clock and then you're all free

And what kind of work do you do?

del.icio.us Digg DZone Facebook Google Google Reader Magnolia reddit SlashDot Technorati ReadMe.ru Dobavi.com Dao.bg Lubimi.com Ping.bg Pipe.bg Svejo.net Web-bg.com

Collabtive – cannot login after installation

 

I had a research on project management systems. My top 2 choices were .project and Collabtive. Unfortunately I was unable to properly install the .project and logically rejected using it as a personal PM solution.

What I find charming in Collabtive is the concept of usability - most important sections are in the horizontal menu on the top. The system is AJAX-oriented which makes passing through different modules almost transparent. There are few important mods:

  • Projects
  • Tasklists/Tasks
  • Users
  • Messages
  • Tracking

So, what can you do with Collabtive? Add users with privillegies, write description for your clients and projects, then divide them by phases and add tasklists with tasks. You could set start/end hour for working projects and receive an invoice-like print preview of all projects and how long did you work on them. Fair enough. The only missing feature is automatic tracking and start/stop button for tasks - when you don't have to take care of start and end hour of each task.

Hope this one would be implemented, too. Otherwise you could use Toggl - either the whole PM system, or the timer only. Or use a custom tracking script.

I was surprised that I was unable to login for second time after logout. There was a technical problem with the system. I tried a couple of things to fix the issue, but no success. Some of the known issues include incorrect session.save_path in the PHP settings which can be redefined to a path with writing permissions. The other was the magic quotes option that could misunderstand your user input and therefore change the password itself.

My server had writing permissions and session.save_path changed via php.ini file so problem was hiding somewhere else. The hardcore fix was changing the password from the database:

 

  1.  
  2. UPDATE user SET pass = SHA1('your password') WHERE ID = 1;

 

The Collabtive system uses SHA1 hashing for passes, so I just hashed the pass by myself. So it's working the correct way now.

del.icio.us Digg DZone Facebook Google Google Reader Magnolia reddit SlashDot Technorati ReadMe.ru Dobavi.com Dao.bg Lubimi.com Ping.bg Pipe.bg Svejo.net Web-bg.com

Optika Zornica – google ranking improvement

оптика Зорница

2 months ago I deployed a client project online - Оптика Зорница, for optic services, sunglasses, health consultations etc. It started with no budget for advertisements and I had to do at least basic ranking. What I did was the standard procedure:

  • Chose an appropriate domain name
  • Define title/keywords/descriptions
  • Write valid XHTML/CSS
  • Link it from my personal projects
  • Submit the URL in public search engines and social networks
  • Create a blog and publish information about new products, health advices and other useful data
  • Simulate dynamic activity via rss feeds in the basic site
  • Create Facebook fanpage of the website

I have a couple of other things to do, but I prefer doing them step by step - in order to keep regular activity and watch the continuous improvement. Currently I keep the first 2 places for the Optics name (it already existed in many ranked catalogs) and present on second page on "Оптика" search in Google. Google page rank - 2. Target is first page and blog popularity.

del.icio.us Digg DZone Facebook Google Google Reader Magnolia reddit SlashDot Technorati ReadMe.ru Dobavi.com Dao.bg Lubimi.com Ping.bg Pipe.bg Svejo.net Web-bg.com