source:http://kevinrodrigues.com/blog/2009/12/28/what-skills-should-a-good-developer-possess/
算是比较全的列表,权且用来自检一下吧,分为三个等级 未知 了解 掌握 。
革命尚未成功,同志仍需努力!
The capability matrix below provides an excellent capability matrix of what skills a good software developer should possess.
Capability Matrix
Skill | Software Engineer (2+ yrs) | Sr Software Engineer (4+ yrs) | Tech Lead (8+ yrs) | GM (10+ yrs) |
---|---|---|---|---|
Algorithmic skills | ||||
Understand and 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 |