Get your FREE 30 page Developing SOLID Applications guide!

Take the summer session of The Object-Oriented PHP Masterclass

masterclasslogoA large number of people told me that they couldn’t make the February class of The Object-Oriented PHP Masterclass, and that they hoped I’d teach it again soon.

Well, if you’re one of those people, I have great news for you: the Object Oriented PHP Masterclass is back, and registration is open!

(more…)

Breaking the Single Responsibility Principle

Whenever I give lessons on the Single Responsibility Principle, I always teach that object creation is a job, and that it should be separate from classes that are using the objects. (more…)

How to know if your remote workers are working

Let’s get right down to it: many managers worry about whether or not their employees would work or goof off if they were allowed to be remote. It’s a huge fear; it requires faith in your employees, since you can no longer see them or glance at their screen from time to time. Employees are expensive to have on board, so you’d rather they spend their time actually solving problems rather than playing Sudoku or watching Star Trek on Youtube.

And yet, there are dozens if not hundreds of companies that are partially, mostly or completely remote. From Automattic to Github, these companies have figured out how to get things done while partially to fully remote. And the good news is, so can you.

(more…)

Creating services you won’t hate

The biggest complaint people have about object-oriented design is where they put all the “glue code” that ties together a bunch of objects and makes them work well. For many, this place is the controller, but as I’ve covered before, most of this logic belongs in the model. In fact, the model should be where all business logic resides. And yet, it can still seem difficult to figure out precisely how to manage all of these behaviors in one place and still follow the best practices of object-oriented design and development.

But there is a way to accomplish this that won’t make you crazy. It’s accomplished by making use of “services” – bits of code that act as the “glue code” for all the different objects that have to operate.

(more…)

Managing client work when you don’t offer estimates

My recent post on the reasons estimates suck generated some interesting questions about the management of client work, specifically related to client expectations and the “need” to offer an estimate of completion or cost to the client. Some of us are lucky enough to have internal clients to whom we can refuse to estimate; others are working with external paying clients who really want an answer to the question, “when will this be done?”

There are some ways that you can avoid offering estimates and still make your clients happy. The solution lies in figuring out precisely what question your client is asking when they ask “how long will this take?” Clients are asking this question usually for one of two reasons: because they have a business need that is unmet and they need this ASAP, or because they are trying to control cost.

(more…)

Why estimates never work

Somewhere, right now, a project manager is compiling estimates on a software project and coming up with a completion date based on “velocity” and “scope”. When they’re done, they’ll take their completed work and show it to their boss, who will look it over, and set a “hard date” for delivering the project. There will be a team meeting, the developers will be gathered, the plan will be presented to great fanfare, and everyone will go off to work, expecting that they’ll actually meet the hard deadline in three months.

Three months will go by. The deadline will come and go. And in most cases, the deadline will be sorely missed.

(more…)

« Older Entries