views:

478

answers:

3

I picked CodeIgniter as the first PHP MVC framework to learn.

I've used it for a few projects and feel quite comfortable with it. I now have the opportunity to work on a project that uses Cake. My question is, how long do you think it will take to transition to this framework if I have a good grasp on CodeIgnitor? I don't want to be overconfident and let the client down. I plan to dig into it over holidays.

I hope it will take (at most) a day or two to get up to speed.

What are your thoughts or insights?

+3  A: 

For any framework, API, SDK, library, etc., getting "hello world" working is easy, but knowing all the ins and outs well enough to take advantage of the strengths and avoid the weaknesses takes experience.

There are levels of facility:

  1. Bare minimum: You can understand conceptually how it works, you can make minor tweaks or bug fixes to an existing instance. You have to consult the documentation for every use of the API. This takes one-half day to two days.
  2. Productive: You can start new projects, add new features, design solutions. You have to consult documentation for some tasks, but others you can do from memory. This takes about one to two weeks of working with the framework.
  3. Fluency: You can extend the framework, and integrate it with other libraries. You've not only learned all the advanced API, but a bunch of clever ways to use options in the basic API. You've read all the documentation and you're writing a cheat-sheet for the other members of the team. Reaching this stage takes at least three to six months.

This assumes you have enough foundation knowledge to come up to speed on the architecture. You're in a good position given that you've worked with the concepts in another MVC framework.

I'd be careful of billing for time when you're not even at "bare minimum" yet with this framework. Some clients are not comfortable paying for your time to come up to speed on an API (unless it's really specific to their project).

If you have a good relationship with the client, you might be able to talk frankly with him and come to an agreement about how much ramp-up time he'll pay you for and how much is your responsibility.

I think most programmers stretch the truth a little bit about their level of productivity with the unfamiliar API, and then hope to work with enough privacy that they can get the job done without showing too many missteps while they learn. Then pad a little bit the hours reported for other tasks, to account for the ramp-up time. Is this dishonorable? It's a question of degree; adding 10-20% to the time for overhead probably won't get any objection, but tripling the hours wouldn't be fair.

It goes both ways, too. When you work for a salary, an employer may expect you to work overtime occasionally, so your total hours averages 10-20% over the "official" 40 hours/week. But expecting double or triple hours per week on a regular basis would be ridiculous.

Bill Karwin
A: 

From what I know of CodeIgnitor, it's a little leaner of a framework than Cake. It'll probably take you a week or so to get to the point where you're really comfortable with cranking product out with it, using all it's available features. Things like behaviors, etc., may not be so familiar to you -- but you can always roll it your own way, if you don't want to learn sections of those libraries.

It's up to your ethics what you bill, and when. But for the first week or so, I think you'll be spending a decent amount of time in #cakephp (a great resource, btw), or perusing the Cake book and API.

HTH, Travis

Travis Leleu
A: 

I haven't used CodeIgniter personally - only CakePHP - but, from what I have read, you do have to "code some code".

CakePHP on the otherhand prefers convention over configuration, so you may find yourself initially wanting to writing more code than strictly necessary.

I recommend hitting the cook book before getting started. Read up on naming conventions for MVC files/database tables, and also read automagic form elements so you can make the most of the form helper.

Also, take a run through the blog tutorial during your holidays so you can get a grasp of how everything fits together.

deizel