Platform Engineers or Rock Star Engineers

I've hired a lot of engineers over the years, and one of the first things I'm always asked to add to the job description is "must have experience in XXXX platform." I sometimes put it on there to make people happy, but I rarely will disregard an engineer because they do not have a lot of experience in a particular platform. Give me a Rock Star, or even a very good/great engineer, and I guarantee you that person will run circles around the average engineer with platform experience. Now, if you can find the Rock Star with platform experience -- BONUS! The only time I deviate from this plan is if the project calls for someone to "just get it done and fast." Then I need to pay more attention to platform experience because I don't have time to wait for the new platform to be learned. I've lost track of how many times this simple fact has been proven to me. The qualities of a great engineer carry over to any platform, and a great engineer will pick up a new platform quickly -- mostly because they love learning new things. If you're starting out in software development, concentrate on being a great engineer. That's far more valuable than an engineer that knows a platform.

What makes a great engineer? To me, it's pretty simple. You have a passion and ability to craft outstanding, maintainable, and testable code. You know your algorithms, design patterns, and data structures like the back of your hand. Finally, you posses the other skills necessary to round things out -- communication, time management, risk assessment, strategic and detailed design, and quick decision making (and sticking to those decisions). You can write a loop in Java? I don't really care. You understand dependency injection or how an outer join works. Now we're talking.

What do you think?