Вам интересен ваш уровень программирования?
Информатика и теория информации | |||||
---|---|---|---|---|---|
2n (Уровень 0) | n2 (Уровень 1) | n (Уровень 2) | log(n) (Уровень 3) | Комменатрии (от автора) | |
Структуры данных | Не знает разницу между массивом и связным списком | Может объяснить суть и использовать массивы, связные списки, ассоциативные массивы | Может рассказать как реализуются хэш-таблицы, обрабатываются столкновения в них, знает очереди приоритетов и способы их реализации | Знает сложные структуры данных, такие как: биноминальную и фиббоначиевую кучу, Б-дерево, AVL дерево, красно-черноё дерево, префиксное дерево, расширяющиеся дерево, список с пропусками. |
Прим.переводчика: извиняюсь за костлявость перевода, также я заменил некоторые труднопереводимые выражения.
Тогда просим под кат.
Информатика и теория информации | |||||
---|---|---|---|---|---|
2n (Уровень 0) | n2 (Уровень 1) | n (Уровень 2) | log(n) (Уровень 3) | Комменатрии (от автора) | |
Структуры данных | Не знает разницу между массивом и связным списком | Может объяснить суть и использовать массивы, связные списки, ассоциативные массивы | Может рассказать как реализуются хэш-таблицы, обрабатываются столкновения в них, знает очереди приоритетов и способы их реализации | Знает сложные структуры данных, такие как: биноминальную и фиббоначиевую кучу, Б-дерево, AVL дерево, красно-черноё дерево, префиксное дерево, расширяющиеся дерево, список с пропусками. | |
Алгоритмы | Не может найти среднее арифметическое в массиве. (Прим.автора: трудно поверить, но я проводил собеседование с такими кандидатами) | Знает основные сортировки | Знает такие понятия, как: дерево, объектный граф, может понять разницу в уровнях этой таблицы | Хорошее знание алгоритмов графа, динамичного программирования. | Хотелось бы поработать с человеком, достигшим высшего уровня. (прим.переводчика: Я бы тоже хотел!) |
Устройство программирования | Не знает что такое компилятор, линковщик, интерпретатор. | Базовое понимание компиляторов, линкеров, интерпретаторов. Знает понятия: ассемблерный код, виртуальная память, своп. Знает как работает железо. | Понимает разницу в режиме ядра и режиме пользователя, понимает многопоточность, виды синхронизаций и как они реализованы. В состоянии прочитать асссемблерный код, знает как работает сеть, понимание сокетов и сетевых протоколов/ | Понимает работу CPU, памяти, кэша, прерываний, машинного кода, cборки мусора, компиляторов, линкеров, JIT-компиляторов, кучи, стека, адресацию памяти | |
Software Engineering | |||||
2n (Уровень 0) | n2 (Уровень 1) | n (Уровень 2) | log(n) (Уровень 3) | Комменатрии (от автора) | |
Системы контроля версий | Папки с бэкапами. | Начинающий пользователь CVS/SVN | Опытный пользователь CVS/SVN, знает как ответвляться и сливаться, использовать патчи.. | Пробовал Bzr/Mercurial/Darcs/Git | |
Сборка | Знает, как проводить сборку через IDE | Может собрать проект через командную строку | Может настроить скрипт для основной сборки | Может настроить скрипт для сборки и написания документации, примечания к билду. | |
Автоматизированное тестирование | Думает, что тест — работа только тестера | Написал хороший модульный тест. | Писал код в TDD (Разработка через тестирование) технике. | Понимает и может настроить тесты для функциональности/UI/производительности. | |
Программирование | |||||
2n (Уровень 0) | n2 (Уровень1) | n (Уровень 2) | log(n) (Уровень 3) | Комменатрии (от автора) | |
Код | Код без ветвления, использует только Ctrl+C/Ctrl+V для повторения кода. | Может разбить программу на несколько функций | Может написать используемые несколько раз функции/объекты. | Правильно использует различные типы структур и алгоритмов. | |
Общение | Не может выразить мысли/идеи. | Собеседники понимают мысли | Может общаться с собеседниками | Может эффективно общаться с собеседниками | Эта характеристика часто недооценена, но она очень важна. |
Организация кода в одном файле | Код не структурирован | Методы логически сгруппированы | Код разделен на регионы, хорошо прокомментирован | У файла есть лицензия в заголовке, файл выглядит красиво, код хорошо прокомментирован. | |
2n (Уровень 0) | n2 (Уровень 1) | n (Уровень 2) | log(n) (Уровень 3) | Комментарии (от автора) | |
Организация кода в файлах | Никакой организации кода | Связанные файлы лежат в одной папке | Каждый файл имеет свое собственное назначение, например: определение одного класса, реализация одной функции и.т.д. | Глядя на имена папок и файлов можно понять организацию кода | |
Организация файлов | Все в одной папке | Файлы логически распределены по папкам | Бинарники, библиотеки, документация, билды — все распределено по своим папками | Глядя на имена папок и файлов можно понять организацию кода | Разница между этим и предыдущей строкой — масштаб организации. |
Читаемость кода | Односложные имена | Хорошие имена для файлов, классов, переменных и.т.д. | Нет длинных функций, комментарии объясняют необычный код, баг-фиксы, | Код течет как речь, нет глубокой вложенности | |
Защита от неправильного использования | Не понимает смысла этого | Проверяет все аргументы | Проверяет возвращаемые значения, ищет исключения в коде, который может дать сбой. | Есть своя собственная библиотека для защиты от неправильного использования, писал юнит-тесты для симуляции ошибок | |
2n (Уровень 0) | n2 (Уровень 1) | n (Уровень 2) | log(n) (Уровень 3) | Комментарии (от автора) | |
IDE | Использует IDE для редактирования текста | Хорошо знает интерфейс IDE, эффективно использует IDE и знает его меню. | Знает горячие клавиши для частых операций | Писал свои макросы | |
API | Часто подсматривает в документацию | Держит частоиспользуемые APIs в голове | Обширные, глубокие знания API | Писал свои библиотеки для упрощения частых задач, а также заполнить пробелы в API | Прим. переводчика: Не согласен с автором, по-моему нет смысла знать весь API чего-либо. |
Фреймворки | Не слышал о фреймворках | Слышал о популярных фреймворках, но не использовал | Использовал больше чем один фреймворк. | Автор фреймворка |
Автор: esayanoleg