Skip to content

katrudog/programmer-roadmap

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 

Repository files navigation

Programmer Roadmap

My personal roadmap to become a great programmer.

Inspired on Sijin Joseph's Programmer Competency Matrix and John Washam's Coding Interview University.

Some things like communication and experience will be trained within the method: writing blogs and delibarated practices.

My study annotations will be found in my personal blog.

Table of Contents


Data structures

You should have knowledge of advanced data structures like B-trees, binomial and fibonacci heaps, AVL/Red Black trees, Splay Trees, Skip Lists, tries etc.

Algorithms

You should be able to recognize and code dynamic programming solutions, good knowledge of graph algorithms, good knowledge of numerical computation algorithms, able to identify NP problems etc.

Advanced algorithms

System architecture

You should understands the entire programming stack, hardware (CPU + Memory + Cache + Interrupts + microcode), binary code, assembly, static and dynamic linking, compilation, interpretation, JIT compilation, garbage collection, heap, stack, memory addressing and others.

Computer networks

Source code version control

Knowledge of distributed VCS systems. Has tried out Bzr/Mercurial/Darcs/Git

Build automation

Can setup a script to build the system and also documentation, installers, generate release notes and tag the code in source control

Automated testing

Understands and is able to setup automated functional, load/performance and UI tests

System Design, Scalability, Data Handling

Problem decomposition

Use of appropriate data structures and algorithms and comes up with generic/object-oriented code that encapsulate aspects of the problem that are subject to change.

  • Dynamic Programming
  • NP, NP-Complete and Approximation Algorithms
    • Know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem.
    • Know what NP-complete means.
    • Greedy Algs

Systems decomposition

Able to visualize and design complex systems with multiple product lines and integrations with external systems. Also should be able to design operations support systems like monitoring, reporting, fail overs etc.

  • Design patterns
    • Describe all the 24 patterns in the GOF book and a working knowledge in the patterns of POSA books
  • Design principles
    • Know the SOLID principles and have a good understanding of the component principles
  • Methods
    • XP
    • Scrum
    • Lean
    • Kanban
    • Waterfall
    • Structured Analysis
    • Structured Desing
  • UML
  • DFDs
  • Structure charts
  • Petri Nets
  • State Transition Diagrams
  • Decision tables
  • Object oriented programming

Code organization

Code organization at a physical level closely matches design and looking at file names and folder distribution provides insights into design

Physical layout of source tree matches logical hierarchy and organization. The directory names and organization provide insights into the design of the system.

Requirements

Able to suggest better alternatives and flows to given requirements based on experience

Database

Can do basic database administration, performance optimization, index optimization, write advanced select queries, able to replace cursor usage with relational sql, understands how data is stored internally, understands how indexes are stored internally, understands how databases can be mirrored, replicated etc. Understands how the two phase commit works.

  • Understand the benefits of relational data, e.g. SQL.
  • Learn about NoSQL databases, e.g. MongoDB.
  • Understand which would be better in certain situations.
  • Know how to connect a database with your chosen back-end language (e.g. Node.js + MongoDB).
  • Understand the benefits of in-memory data stores like Redis or memcached.
  • Web storage to store sessions, cookies, and cached data in the browser.
  • Scaling databases, ACID, and ORM (all optional).

Security

Mathematics


Other topics

To be categorized.

  • Cryptography
  • Computer Intelligence

Papers

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published