programming level

Lecture



Are you interested in your programming level?
Computer science and information theory
2 n (Level 0) n 2 (Level 1) n (Level 2) log (n) (Level 3) Commentary (from author)
Data structures Does not know the difference between an array and a linked list Can explain the essence and use arrays, linked lists, associative arrays Can tell you how hash tables are implemented, collisions are processed in them, knows the priority queues and how to implement them He knows complex data structures such as: binomial and fibonacci heap, B-tree, AVL tree, red-black tree, prefix tree, expanding tree, list with omissions.

Note: I apologize for the bony translation, I also replaced some difficult-to-translate expressions.
Then we ask under cat.

Computer science and information theory
2 n (Level 0) n 2 (Level 1) n (Level 2) log (n) (Level 3) Commentary (from author)
Data structures Does not know the difference between an array and a linked list Can explain the essence and use arrays, linked lists, associative arrays Can tell you how hash tables are implemented, collisions are processed in them, knows the priority queues and how to implement them He knows complex data structures such as: binomial and fibonacci heap, B-tree, AVL tree, red-black tree, prefix tree, expanding tree, list with omissions.
Algorithms Can not find the arithmetic average in the array. (Author's comment: it's hard to believe, but I interviewed such candidates) Knows the basic sorting Knows such things as: tree, object graph, can understand the difference in the levels of this table. Good knowledge of graph algorithms, dynamic programming. I would like to work with someone who has reached the highest level. (comment: I would like it too!)
Programming device He does not know what a compiler, linker, interpreter is. Basic understanding of compilers, linkers, interpreters. He knows the concepts: assembly code, virtual memory, swap. Knows how iron works. Understands the difference in kernel mode and user mode, understands multithreading, types of synchronization and how they are implemented. Able to read the assembler code, know how the network works, understanding of sockets and network protocols / Understands the work of CPU, memory, cache, interrupts, machine code, garbage collection, compilers, linkers, JIT compilers, heaps, stack, memory addressing
Software engineering
2 n (Level 0) n 2 (Level 1) n (Level 2) log (n) (Level 3) Commentary (from author)
Version Control Systems Folders with backups. Novice CVS / SVN User An experienced CVS / SVN user, knows how to branch and merge, use patches .. I tried Bzr / Mercurial / Darcs / Git
Assembly Knows how to build via IDE Can build project via command line Can customize the script for the main assembly Can customize the script for the assembly and writing of documentation, notes to the build.
Automated Testing Thinks a test is only a tester Wrote a good modular test. Wrote code in TDD (Development through testing) technique. Understands and can customize tests for functionality / UI / performance.
Programming
2 n (Level 0) n 2 (Level 1) n (Level 2) log (n) (Level 3) Commentary (from author)
Code Code without branching, uses only Ctrl + C / Ctrl + V to repeat the code. It can break the program into several functions. Can write functions / objects used several times. Correctly uses various types of structures and algorithms.
Communication Cannot express thoughts / ideas. Interlocutors understand thoughts Can communicate with interlocutors Can effectively communicate with interlocutors This characteristic is often underestimated, but it is very important.
Code organization in one file Code not structured Methods are logically grouped. The code is divided into regions, well commented The file has a license in the header, the file looks beautiful, the code is well commented.
2 n (Level 0) n 2 (Level 1) n (Level 2) log (n) (Level 3) Comments (from the author)
Code organization in files No code organization Related files are in the same folder. Each file has its own purpose, for example: defining one class, implementing one function, etc. Looking at the names of folders and files, you can understand the organization of the code
File organization All in one folder Files are logically organized into folders. Binaries, libraries, documentation, builds - everything is divided into their folders Looking at the names of folders and files, you can understand the organization of the code The difference between this and the previous line is the scale of the organization.
Code readability Monosyllabic names Good names for files, classes, variables, etc. No long features, comments explain unusual code, bug fixes, Code flows like speech, no deep nesting
Protection against misuse Does not understand the meaning of this Checks all arguments Checks return values, looks for exceptions in code that may fail. Has its own library to protect against misuse, wrote unit tests to simulate errors
2 n (Level 0) n 2 (Level 1) n (Level 2) log (n) (Level 3) Comments (from the author)
IDE Uses IDE to edit text. Well knows the IDE interface, effectively uses the IDE and knows its menu. Knows hotkeys for frequent operations Wrote my macros
API Often peeps into documentation Keeps frequently used APIs in the head. Extensive, deep API knowledge I wrote my libraries to simplify frequent tasks, and also fill in the gaps in the API. Note translator: I do not agree with the author, in my opinion there is no point in knowing the whole API of something.
Frameworks I have not heard about frameworks Heard about popular frameworks, but did not use Used more than one framework. Framework author

Comments


To leave a comment
If you have any suggestion, idea, thanks or comment, feel free to write. We really value feedback and are glad to hear your opinion.
To reply

Software and information systems development

Terms: Software and information systems development