Hiring is perhaps the most challenging thing that any manager can ever do. Getting it right is half skill, half luck. Making a good decision on a candidate can be the difference between moving the project forward and setting it back.
So what happens when you’re hoping to hire mid-level or senior engineers, and you end up with a staff of juniors? This isn’t all that uncommon a problem; I’ve seen it at least a dozen times in my career. What do you do next?
Recently there’s been a great deal of discussion as to the merits of isolated testing versus integration and acceptance testing. Some proponents argue that integration testing far outweighs the value of isolated testing. While this is a perfectly valid position, I feel oversimplifies the complexity of testing in the same way that the “isolated testing only” crowd does.
Integration testing is wonderful for testing how components come together for a particular task. And it’s perfectly acceptable (and reasonable) to test how a model interacts with a real database, or to test how a controller interacts with the lower levels of an application.
Any time software and business come together, there is an inherent conflict between “get it done fast” and “do a good job”. This conflict often comes to a head when deadlines are missed, whether through unrealistic expectation or underestimation on the part of the developers.
The dilemma between quantity, speed and feature set isn’t going to go away any time soon. It’s an inherent dilemma in software. But there are approaches we can take to help solve it.
Note: I received a free review copy with the promise to write a review. However, this review is my own review and reflects my viewpoints alone.
What is wrong with this code sample?
Note: The recommendations in this post are intended for a very advanced audience. While the content applies broadly, creating and maintaining your own framework is not advised for everyone, unless you know exactly what you’re doing.
For many of us in the PHP community, our identities are as much tied into the framework we use as the language that powers our products. For better or worse, we often tie our careers to a particular platform, and we spend considerable energy on the community and culture of that platform and it’s supporting tools.
The modern web has largely settled on Model-View-Controller (MVC) as the paradigm of choice. Though it may ultimately be described by different names, these components are the core of what makes most object-oriented web applications work. And most people know that the model is the most important element of the application. But crafting good models can be extremely challenging. Many developers end up putting code all over the place, with the logic that belongs in the model scattered throughout the view and the controller layers.
What ultimately makes a good model? Where does each aspect of the model belong? And what is to be made of the other layers of the application? Let’s explore together.