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 |
本文提供了一个详尽的能力矩阵,概述了从初级到高级不同阶段软件开发者应具备的关键技能,包括算法、数据结构、数据库管理、网络知识等核心领域。
2656

被折叠的 条评论
为什么被折叠?



