📜 ⬆️ ⬇️

Your programming level and not only

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 structuresDoes not know the difference between an array and a linked listCan explain the essence and use arrays, linked lists, associative arraysCan tell you how hash tables are implemented, collisions are processed in them, knows the priority queues and how to implement themHe knows complex data structures, such as: binomial and fibonacci heap, B-tree, AVL tree, red-black tree, prefix tree, expanding tree, list with gaps.

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 structuresDoes not know the difference between an array and a linked listCan explain the essence and use arrays, linked lists, associative arraysCan tell you how hash tables are implemented, collisions are processed in them, knows the priority queues and how to implement themHe knows complex data structures, such as: binomial and fibonacci heap, B-tree, AVL tree, red-black tree, prefix tree, expanding tree, list with gaps.
AlgorithmsCan not find the arithmetic average in the array. (Author's comment: hard to believe, but I interviewed such candidates)Knows the basic sortingKnows 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 a person who has reached the highest level. (comment of the translator: I would like too!)
Programming deviceHe 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 SystemsFolders with backups.CVS / SVN novice userAn experienced CVS / SVN user, knows how to branch and merge, use patches ..I tried Bzr / Mercurial / Darcs / Git
AssemblyKnows how to build via IDECan build project via command lineCan configure the script for the main assemblyCan customize the script for the assembly and writing of documentation, notes to the build.
Automated TestingThinks a test is only a testerWrote 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)
CodeCode 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.
CommunicationCannot express thoughts / ideas.Interlocutors understand thoughtsCan communicate with interlocutorsCan effectively communicate with interlocutorsThis characteristic is often underestimated, but it is very important.
Code organization in one fileCode not structuredMethods are logically grouped.The code is divided into regions, well commentedThe 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 filesNo code organizationRelated 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 organizationAll in one folderFiles are logically organized into folders.Binary, libraries, documentation, builds - everything is divided into their foldersLooking at the names of folders and files, you can understand the organization of the codeThe difference between this and the previous line is the scale of the organization.
Code readabilityMonosyllabic namesGood names for files, classes, variables, etc.No long features, comments explain unusual code, bug fixes,Code flows like speech, no deep nesting
Protection against misuseDoes not understand the meaning of thisChecks all argumentsIt 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)
IDEUses IDE to edit text.Well knows the IDE interface, effectively uses the IDE and knows its menu.Knows hotkeys for frequent operationsWrote my macros
APIOften peeps into documentationKeeps frequently used APIs in the head.Extensive, deep API knowledgeI 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.
FrameworksI have not heard about frameworksHeard about popular frameworks, but did not useUsed more than one framework.Framework author

')

Source: https://habr.com/ru/post/187728/


All Articles