Ваш уровень программирования и не только

в 17:44, , рубрики: ненормальное программирование, Программирование, рейтинг

Вам интересен ваш уровень программирования?

Информатика и теория информации
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

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js