Should be hands on C++ on Linux including STL and boost library usage.
Should have the ability to design large scale, highly available, scalable and distributed software systems .
Should be able to influence technical decisions of the teams.
Should have strong knowledge of OOAD and OOP.
Should be able to estimate the development size.
Should be able to visualize behaviors of design / software and come up with different scenarios.