Skip to content

songtianyi/landscape-of-programming

Repository files navigation

Landscape of programming

This repo aim to show you what to learn on the way to excellence. And the knowledge hierarchy is helpful for writing your resume. It's a baby yet, any improvements will be appreciated!

中文 English

In college, the scheduled classes shaped your way of learning, But after graduated, nobody telling you what to learn. You learned a lot, but in the meantime, you realized you know nothing. Because you don't have a knowledge hierarchy in your mind. This repo will(but not yet) show you a full clear view of programming techniques. Schedule your study plan with this hierarchy. Get charged before you out of battery :)

Knowledge hierarchy for programming

Please PR for improving the hierarchy

Computer architecture
Programming languages

c/c++ node golang java, groovy, scala shell type systems paradigms tool chains haskell rustetc.

Data structure and algorithms

queue, set, linked list, heap, stack, hash-table, trie, b tree, b+ tree, red-black tree, splay tree, R tree etc.

dfs, bfs, quick sort, heap sort, binary search, dynamic programming, dijkstra, floyd, hash(crc32, md5), math(number theory, linear algebra, 3D-math) etc.

Software engineering

runtime(os, virtualization, interpreters, container..), design patterns, models(concurrency, memory, lock, epoll, nio, kqueue..), mechanisms(gc, transactional..), theories(CAP, etc), RFCs, etc

Software frameworks

spring-boot, boost, express, vue, protobuf, ionic, gtk, openGL, qt, etc.

Database and storages

relational(mysql..), document(mongodb..), time-serials(timescale..), key-value(redis..), graph(neo4j..), wild-column(cassandra..), event(event-store..), object-oriented(perst, ObjectDB..), fs, hard-disk, etc.

Middlewares

message-queue(rabbitmq, rocketmq, kafka..), etc.

Networks

tcp/ip, https, http2.0, sdn, bluetooth, routers, switchs, vlan, vxlan, firewalls, etc.

Software architecture and solutions

c/s, b/s, p2p, distributed systems, decentralized systems, plugin, HA, micro services, serverless, faas, cloud infrastructure, etc.

Software development and quality assurance

methodologies, debugging, deployment, tools, testing, mainteance, performance, docs, CI/CD, security, monitoring, etc.

Uncategorized

Domain specific knowledge Sheet

Example

If you want to be an expert in blockchain, organize the knowledge pieces like following sheet.

hierarchy domain specific techniques
Programming languages c/c++, golang, solidity
Data structure and algorithms POW, POS, DPOS, PBFT, Merkle Tree, DAG, mining, Raft, Paxos
Software engineering os, fs, FLP Impossibility, CAP theorem
Software frameworks ethereum, bitcoin
Database and storages IPFS, Block DB(BigchainDB, etc)
Middlewares
Networks p2p
Software architecture and solutions state channels, payment channel, decentralized system
Software development and quality assurance asymmetric encryption
Uncategorized
Domain specific or job specific knowledge sheet

Please pr for more expert knowledge hierarchy sheet

Contribution guidelines

  • There are many technique items in each level, each item should have appropriate intro/def resource link. ex. C . Modify the link if you have better one.