| Skill |
Software Engineer (2+ yrs) |
Sr Software Engineer (4+ yrs) |
Tech Lead (8+ yrs) |
GM (10+ yrs) |
| Algorithmic skills |
| Understand and dissect complex problems quickly |
Must have |
Must have |
Must have |
Must have |
| Understand trade-offs between space / time complexity |
Must have |
Must have |
Must have |
Must have |
| Come up with solutions with minimal space / time complexity |
Should have |
Must have |
Must have |
Must have |
| Reasonably mathematically savvy |
Bonus |
Bonus |
Should have |
Should have |
| Familiarity with graph theory, graph traversals etc |
Bonus |
Bonus |
Should have |
Should have |
| Data Structures |
| Basic Knowledge of data structures – Hashmaps, Binary tree, B-Tree, B+Tree, Linked Lists etc |
Should have |
Must have |
Must have |
Must have |
| Understanding of trade-offs between various data structures etc |
Should have |
Must have |
Must have |
Must have |
| Advanced Knowledge of implementation of data structures – Hashmaps, Binary tree, B-Tree, B+Tree, Linked Lists etc |
Should have |
Should have |
Must have |
Must have |
| RDBMS |
| Basic RDBMS knowledge |
Must have |
Must have |
Must have |
Must have |
| Advanced RDBMS knowledge |
Should have |
Should have |
Must have |
Must have |
| Query optimization |
Should have |
Should have |
Must have |
Must have |
| RDBMS tuning |
Should have |
Should have |
Must have |
Must have |
| Replication and Clustering |
Should have |
Should have |
Must have |
Must have |
| RDBMS Scalability |
Should have |
Should have |
Must have |
Must have |
| Caching |
| Basic knowledge of caching |
Should have |
Must have |
Must have |
Must have |
| Advanced caching strategies |
Should have |
Should have |
Must have |
Must have |
| Design and modeling |
| Strong knowledge of OOPs |
Must have |
Must have |
Must have |
Must have |
| Design patterns and application thereof |
Should have |
Must have |
Must have |
Must have |
| Understanding of KISS, YAGNI, DRY, SOC, SRP, Loose Coupling etc |
Should have |
Must have |
Must have |
Must have |
| Networking |
| Basic knowledge of DNS |
Should have |
Must have |
Must have |
Must have |
| Protocol level understanding of TCP / UDP |
Should have |
Should have |
Must have |
Must have |
| Deep understanding of OSI stack |
Should have |
Should have |
Should have |
Must have |
| Basic understanding of Routing concepts |
Should have |
Should have |
Should have |
Must have |
| Socket programming |
| Ability to implement a protocol server/client |
Should have |
Must have |
Must have |
Must have |
| Ability to write high performance server/client |
Should have |
Should have |
Must have |
Must have |
| Understanding of Async I/O |
Should have |
Should have |
Must have |
Must have |
| Understanding of various network protocols |
Should have |
Should have |
Should have |
Must have |
| Web application development |
| Basic HTML and CSS |
Must have |
Must have |
Must have |
Must have |
| Basic Javascript |
Should have |
Must have |
Must have |
Must have |
| Protocol level knowledge of HTTP |
Should have |
Must have |
Must have |
Must have |
| Advanced HTML and CSS |
Should have |
Should have |
Must have |
Must have |
| Advanced Javascript |
Should have |
Should have |
Must have |
Must have |
| Ajax / Flex |
Should have |
Must have |
Must have |
Must have |
| Understanding of MVC architecture |
Should have |
Must have |
Must have |
Must have |
| Multi-threading and concurrency |
| Basic knowledge of multi-threading |
Must have |
Must have |
Must have |
Must have |
| Advanced knowledge of multi-threading / trade-offs |
Should have |
Must have |
Must have |
Must have |
| Automated Testing |
| Understanding of unit testing |
Should have |
Must have |
Must have |
Must have |
| TDD |
Should have |
Must have |
Must have |
Must have |
| Writing code conducive to Automated testing |
Should have |
Must have |
Must have |
Must have |
| Planning and writing functional tests |
Should have |
Must have |
Must have |
Must have |
| Planning and writing stress tests |
Should have |
Should have |
Must have |
Must have |
| Knowledge of unit and functional testing frameworks for relevant platforms |
Should have |
Should have |
Must have |
Must have |
| OS Concepts |
| Understanding of OS concepts, kernel, interrupts, native libraries etc |
Bonus |
Bonus |
Should have |
Must have |
| Understanding of OS process scheduling concepts |
Bonus |
Bonus |
Should have |
Must have |
| IPC / RPC / Web Services |
| Knowledge of different forms of IPC / RPC |
Should have |
Must have |
Must have |
Must have |
| Knowledge of various protocols involved and trade-offs |
Should have |
Should have |
Must have |
Must have |
| Basic implementation knowledge of any one RPC mechanism |
Should have |
Must have |
Must have |
Must have |
| Advanced knowledge of SOAP / REST / other remoting |
Should have |
Must have |
Must have |
Must have |
| Security |
| Knowledge of OWASP |
Bonus |
Should have |
Must have |
Must have |
| Knowledge of Network layer security |
Bonus |
Bonus |
Must have |
Must have |
| Knowledge of secure architectures |
Bonus |
Bonus |
Should have |
Must have |
| Internationalization |
| Knowledge of Unicode and its implementations |
Bonus |
Should have |
Must have |
Must have |
| Knowledge of implementation of internationalized interfaces |
Bonus |
Should have |
Must have |
Must have |
| Understand implications of internationalized data in RDBMS, searches, indexing etc |
Bonus |
Should have |
Must have |
Must have |
| Development Methodologies |
| Knowledge of Agile, XP, Scrum, TDD and pairing |
Bonus |
Should have |
Must have |
Must have |
| Knowledge of Identifying code smells and Refactoring |
Should have |
Must have |
Must have |
Must have |
| Scaling |
| Write and plan stress tests to determine scalability |
Bonus |
Bonus |
Must have |
Must have |
| Ability to identify scalability and performance bottlenecks quickly |
Bonus |
Bonus |
Must have |
Must have |
| Ability to determine whether an application is / will be disk bound, memory bound, cpu bound, network bound etc |
Bonus |
Bonus |
Must have |
Must have |
| Understanding of all layers from the hardware to the application to determine bottlenecks |
Bonus |
Bonus |
Must have |
Must have |
| Knowledge of scaling techniques on the application side such as Async IO, caching, multi-threading etc |
Bonus |
Bonus |
Must have |
Must have |
| Knowledge of scaling techniques on the data side such as Identifying optimized data structures, caching strategies, Horizontal / Vertical partitioning, replication / clustering |
Bonus |
Bonus |
Must have |
Must have |
| Knowledge of scaling techniques on the app server side such as clustering and load balancing |
Bonus |
Bonus |
Must have |
Must have |
| System Administration |
| Basic Unix commands and shell operation (including grep, awk, sed, regex and shell / perl scripting) |
Bonus |
Should have |
Must have |
Must have |
| Basic Windows administration |
Bonus |
Should have |
Must have |
Must have |
| Usability |
| Knowledge of information architecture |
Bonus |
Should have |
Must have |
Must have |
| Ability to design intuitive UI |
Bonus |
Should have |
Must have |
Must have |
| Communication Skills |
| Good grammar – written and oral |
Must have |
Must have |
Must have |
Must have |
| Ability to understand discussions well |
Must have |
Must have |
Must have |
Must have |
| Ability to articulate a concept / subject well |
Must have |
Must have |
Must have |
Must have |
| Good command over vocabulary |
Should have |
Should have |
Must have |
Must have |
| Penchant for Writing |
| Frequently writes internal / external documents / articles |
Should have |
Must have |
Must have |
Must have |
| Conducts internal and external training sessions |
Should have |
Should have |
Must have |
Must have |
| Penchant for reading |
| Avid reader of tech and industry blogs, articles, news and books etc |
Must have |
Must have |
Must have |
Must have |
| Strategy and Vision |
| Business acumen |
Bonus |
Bonus |
Must have |
Must have |
| Ability to determine features and product strategy |
Bonus |
Bonus |
Must have |
Must have |
| Platform Selection |
| Ability to select languages, OS, RDBMS, Data structures, Frameworks, libraries, Hardware for an application |
Bonus |
Bonus |
Must have |
Must have |
| Understand performance, cost and other trade-offs between myriad platform choices |
Bonus |
Bonus |
Must have |
Must have |
| Architecture |
| Understanding of deployment architectures and their trade-offs |
Bonus |
Bonus |
Must have |
Must have |
| Capacity Planning |
| Ability to plan and conduct capacity planning exercises |
Bonus |
Bonus |
Must have |
Must have |
| Soft Skills |
| Likeable / people’s person |
Should have |
Must have |
Must have |
Must have |
| Ability to garner respect amongst peers by demonstrable knowledge and actions |
Should have |
Must have |
Must have |
Must have |
| Proactive mentor who loves to impart and share knowledge |
Should have |
Must have |
Must have |
Must have |
| Attract and Recruit ‘A’ players |
Bonus |
Bonus |
Must have |
Must have |
| Train and grow team |
Bonus |
Bonus |
Must have |
Must have |
| Contribute to process evolution |
Bonus |
Bonus |
Must have |
Must have |
| Motivate and inspire the team |
Bonus |
Bonus |
Must have |
Must have |
| Product Evangelism |
| Frequently blog |
Bonus |
Should have |
Must have |
Must have |
| Misc |
| Humility |
Must have |
Must have |
Must have |
Must have |