This is something about development practice to speed up development time (code faster), I learn this from Kah Wai, who is my architect in my previous job. Everyone of us are assign 2 projects at a time, one for delivery project, and the other for research project.
In terms of vertical development, it is about customer. We are focus on the customer requirement, from front end screen development till back end database development, it is one strict line from the top to bottom. It is strict forward, meeting delivery deadline, stressful, tired, no programming challenge. Just code!
Whereas in terms of horizontal development, it is about technical and technology. During the vertical development, we will come across on the technology challenge. Sometime this will stop a programmer moving forward to meet the delivery deadline. Hence we need someone who is expect and specialize in the particular technology area to support the team.
For me, I was an expert in Jasper, Selenium, and Web Service. It doesn't really matter whether I am a certified or not, just that it is my responsibility to build up the strength in those key area in the team. Thus when the developer show stopper on continuing his/her task on Jasper, then I will jump in to help his/her out. Same thing, when I stuck in the JSF development, someone will have to jump in to help me out.
This is what I am currently proposing to my team lead tomorrow.