Определение уровня программиста по фрагменту кода?
====================================================

 Есть несколько файлов кода, относящихся к одному компоненту в Реактовском приложении (компонент, юнит тест, и тп). Что можно понять, посмотрев на данный код, и сколько кода нужно увидеть вам, что бы понять уровень разработчика?   
  

Пытался искать, но не удовлетвориться поиском, если данный вопрос уже обсуждался, оставьте ссылку и я удалю этот пост. 

 Присоединяюсь к мнению выше, что по коду можно весьма примерно оценить.  

И, наверное, чем серьезнее разработчик, тем сложнее оценить только по коду.  

Имхо, очень многое зависит от конкретного компонента и требований к нему.  

Пойду от очевидного:  

- чистота кода,  

- знание и использование в нужных местах возможностей ES6 (стрелочные, интерполяция, спред, деструктуризация),  

- умение решать промежуточные микрозадачи с минимумом кода, элегантно, легкочитаемо,  

- глядя на компонент, как ни парадоксально, можно сделать предположение, программист ещё пишет классами, или перешел на функциональные компоненты, но это не точно)),  

- в связи с предыдущим пунктом можно оценить понимание и использование жизненного цикла или хуков,  

- подход к хранению данных: стейт, контекст, ридакс etc,  

- если Redax, например, то что осталось в компоненте, что пошло в action, является ли reducer чистой функцией,  

- JS или TypsScript...  
  

Я когда начинал писать не думал, что такой список получится... Выходит, много можно оценить!) 

 Уровень разработчика определяется далеко не только кодом 

 Предположим, есть некий Вася, который пилит мобильные приложения в одиночку. Пилит хорошо, в его коде нет ни одного **бага**. Ну, просто он гений, да и перепроверяет свой код по сотне раз перед публикацией. Делает на этом большие деньги.  
  

Однако если взглянуть на его код, то там хрен разберешь, что к чему. Так называемый, **спагетти-код**. Ему этот код понятен. А нам, сторонним наблюдателям, - нет. Очевидно, что для работы в команде Васе нужно подкачать кое-какие скиллы. Но вопрос ведь в другом.  
  

Вопрос в том, какой уровень у программиста Васи. Как это определить? Плохой он программист или хороший? И плохой для кого? Лично Васе - норм, денег хватает на еду, **яхту** и на загородный **особняк**. Можно ли вообще по коду понять его "уровень"? Это же не игра какая-нибудь, где можно качать свой левел, который отображается в углу в виде **цифры**.  
  

Вот вам вилка для примера:  
* Код может быть кривым, но круто оптимизированным. То есть работает настолько быстро, насколько это вообще возможно на использованных технологиях.
* Или же наоборот, код красиво оформлен, с комментариями, разбит на кучу мелких функций для удобства понимания, но в нем есть как бы ошибка в самой архитектуре. Типа сортировки пузырьком.

 

 Сроки, соответствие ТЗ, понятность кода. 

> Что можно понять, посмотрев на данный код, и сколько кода нужно увидеть вам, что бы понять уровень разработчика?

  
  

Можно понять:  

а) Насколько ясно он мыслит в принципе  

б) Насколько владеет всеми приемами языка (знание ES6 в случае js)  

в) Насколько внимателен к тому, чтобы другие понимали его код, то есть дает ли он идентификаторам понятные названия, не пренебрегает ли комментариями  
  

Про количество кода сказать трудно, иногда достаточно пары десятков строк, если код сложный, тогда сразу видео почерки мастера. Иногда кода может быть много, но он простой и однотипный.  
  

В любом случае сказать можно очень и очень многое именно в вопросах кода. Но есть еще понятие архитектуры, это касается и реакт-приложений, способности к выстраиванию архитектуры не всегда идут вместе со способностью кодить, хотя в 90% случаев идут, потому что все это следствие ясности мышления. 

> Определение уровня программиста по фрагменту кода?

Запомните раз и навсегда:   

1. Кодер - это НЕ программист,   

2. Программист - решает задачу так, как считает нужным.  

3. Кодер - делает то, что скажет программист.  
  
**Ответ на вопрос:** чтобы понять уровень разработчика (программиста) - нужно быть минимум на его уровне интеллекта и осознанно не только понимать логику его кода, но и понимать: почему он выбрал именно такой вариант решения задачи, а не иной.