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