What skills shoshould a good developer possess?

Source: Internet
Author: User

Source: http://kevinrodrigues.com/blog/2009/12/28/what-skills-should-a-good-developer-possess/

 

It is a comprehensive list. It can be used for self-check. There are three levels of unknown knowledge.

The revolution has not yet succeeded. comrades still need to work hard!

 

The capability matrix below provides an excellent capability matrix of what skills a good software developer shocould 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 Shocould have Must have Must have Must have
Reasonably mathematically savvy Bonus Bonus Shocould have Shocould have
Familiarity with graph theory, graph traversals etc Bonus Bonus Shocould have Shocould have
Data Structures
Basic knowledge of data structures-hashmaps, binary tree, B-tree, B + tree, linked lists etc Shocould have Must have Must have Must have
Understanding of trade-offs between various data structures etc Shocould have Must have Must have Must have
Advanced knowledge of implementation of data structures-hashmaps, binary tree, B-tree, B + tree, linked lists etc Shocould have Shocould have Must have Must have
RDBMS
Basic RDBMS knowledge Must have Must have Must have Must have
Advanced RDBMS knowledge Shocould have Shocould have Must have Must have
Query Optimization Shocould have Shocould have Must have Must have
RDBMS Tuning Shocould have Shocould have Must have Must have
Replication and clustering Shocould have Shocould have Must have Must have
RDBMS scalability Shocould have Shocould have Must have Must have
Caching
Basic knowledge of caching Shocould have Must have Must have Must have
Advanced caching strategies Shocould have Shocould 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 Shocould have Must have Must have Must have
Understanding of kiss, yagni, dry, Soc, SRP, loose coupling etc Shocould have Must have Must have Must have
Networking
Basic knowledge of DNS Shocould have Must have Must have Must have
Protocol level understanding of TCP/UDP Shocould have Shocould have Must have Must have
Deep understanding of OSI Stack Shocould have Shocould have Shocould have Must have
Basic understanding of routing concepts Shocould have Shocould have Shocould have Must have
Socket programming
Ability to implement a protocol server/client Shocould have Must have Must have Must have
Ability to write high performance server/client Shocould have Shocould have Must have Must have
Understanding of async I/O Shocould have Shocould have Must have Must have
Understanding of various network protocols Shocould have Shocould have Shocould have Must have
Web Application Development
Basic HTML and CSS Must have Must have Must have Must have
Basic Javascript Shocould have Must have Must have Must have
Protocol level knowledge of HTTP Shocould have Must have Must have Must have
Advanced HTML and CSS Shocould have Shocould have Must have Must have
Advanced Javascript Shocould have Shocould have Must have Must have
Ajax/flex Shocould have Must have Must have Must have
Understanding of MVC Architecture Shocould 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 Shocould have Must have Must have Must have
Automatic Testing
Understanding of Unit Testing Shocould have Must have Must have Must have
TDD Shocould have Must have Must have Must have
Writing code conducive to automated testing Shocould have Must have Must have Must have
Planning and writing functional tests Shocould have Must have Must have Must have
Planning and writing stress tests Shocould have Shocould have Must have Must have
Knowledge of unit and functional testing frameworks for relevant platforms Shocould have Shocould have Must have Must have
OS concepts
Understanding of OS concepts, kernel, interrupts, native libraries etc Bonus Bonus Shocould have Must have
Understanding of OS process scheduling concepts Bonus Bonus Shocould have Must have
IPC/rpc/Web Services
Knowledge of different forms of IPC/RPC Shocould have Must have Must have Must have
Knowledge of various protocols involved and trade-offs Shocould have Shocould have Must have Must have
Basic Implementation Knowledge of any one RPC mechanism Shocould have Must have Must have Must have
Advanced knowledge of SOAP/rest/other remoting Shocould have Must have Must have Must have
Security
Knowledge of OWASP Bonus Shocould have Must have Must have
Knowledge of network layer security Bonus Bonus Must have Must have
Knowledge of secure ubuntures Bonus Bonus Shocould have Must have
Internationalization
Knowledge of Unicode and Its Implementations Bonus Shocould have Must have Must have
Knowledge of implementation of internationalized Interfaces Bonus Shocould have Must have Must have
Understand implications of internationalized data in RDBMS, searches, indexing etc Bonus Shocould have Must have Must have
Development methodologies
Knowledge of agile, XP, scrum, TDD and pairing Bonus Shocould have Must have Must have
Knowledge of identifying code smells and refactoring Shocould 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 Shocould have Must have Must have
Basic Windows Administration Bonus Shocould have Must have Must have
Usability
Knowledge of Information Architecture Bonus Shocould have Must have Must have
Ability to design intuitive UI Bonus Shocould 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 Shocould have Shocould have Must have Must have
Penchant for writing
Frequently writes internal/external documents/articles Shocould have Must have Must have Must have
Conducts internal and external training sessions Shocould have Shocould 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 ubuntures and their trade-offs Bonus Bonus Must have Must have
Capacity Planning
Ability to plan and conducting CT capacity planning exercises Bonus Bonus Must have Must have
Soft Skills
Likeable/People's person Shocould have Must have Must have Must have
Ability to garner respect amongst peers by demonstrable knowledge and actions Shocould have Must have Must have Must have
Proactive mentor who loves to impart and share knowledge Shocould 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 Shocould have Must have Must have
Misc
Humility Must have Must have Must have Must have

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.