Начинаются мои «мысли вслух»… Заранее предупреждаю, что дальше идет исключительно моё субъективное мнение, которое может не совпадать с вашим. Ну а это и логично — так и должно быть, сколько людей — столько и мнений.
В чем разница между следующими фразами Web developer, Front-end developer, Back-end developer, PHP developer, JS developer? Ответ: во всем!

Теперь начнем чуть издалека. В прошлом году на одном из докладов на iForum 2013 я слушал доклад одного какого-то мобильного разработчика, который вещал о том, что он и любой другой программист может знать очень много языков программирования и что перепрофилироваться из Android-разработчика в PHP-разработчика это дело чуть ли не одного дня. Возможно, теоретически это и реально, но, просидев целый день за статьями, документацией и книгами, вы получите лишь теоретическую информацию, которую вы на следующий день забудете. Практики будет очень мало или вообще не будет.
Весь «кайф» заключается в том, что вы будете считать, что вы знаете как правильно сделать какую-то фичу (прочитав это в книге и посчитав нужным не рассматривать это на практике), но при этом на практике вы столкнетесь с кучей проблем, которые «подкрадутся незаметно». В итоге вы будете никому ненужным Junior PHP developer’ом, который за первой попавшейся задачей полезет в гугл с запросом «php how detect real ip adress». А вы при этом будете считать, что помимо Android developer’а, являетесь еще и PHP developer’ом и возможно даже уже подумываете добавить в своем резюме в поле «Знание языков» и PHP (скорее так и будет). Но на самом деле это не так. Вы напичканы теоретической информацией, которая переплелась и частично потерялась.
Теперь, когда вы хорошо программируете под Android, прочитали пару статей и книгу по PHP да еще за компанию решили и про Node.js почитать, вы кем являетесь? Android developer, web developer, back-end developer, PHP developer, Android + PHP + Node.js developer, …? Сложно определиться хотя бы только для себя, верно?
Идем дальше… У меня есть два друга-программиста. Один работает PHP developer’ом в Германии, второй web-developer’ом в Харькове.

Первый занимается исключительно серверной частью всех разрабатываемых проектов. Это соответственно: сам код на PHP, API для front-end’а и работа с базами данных. Всё логично, верно? Он — PHP developer и занимается исключительно тем, чем должен заниматься PHP разработчик. При этом, он знает Python, но, по его словам, проектов на Python пока не дают из-за отсутствия достаточного опыта. В front-end не лезет и предпочитает развиваться только в направлении back-end.
Второй занимается разработкой на PHP (+Yii, +ZF), JavaScript (+AngularJS, +EmberJS), Node.js, еще на чем-то и пишет прототипы под Android. Кстати, еще и ковыряет Java. На вопрос «что такое прототип под Андроид?» можно получить примерно такой ответ: «Это HTML5-JS-CSS приложение, которое показывает как будет работать будущее приложение, но написать его полностью я не могу, т. к. ещё не всё могу сделать». Не всё логично, верно? Человек распределяет свое внимание на совершенно разные технологии. В итоге получаем: «ещё не всё могу сделать на …», «уже давно не программирую на …», «планирую заняться …» и т. п.
У меня есть еще и третий друг-программист :) Он раньше занимался back-end и front-end разработкой. Т. е. на одном проекте он делал верстку, писал JavaScript, делал плагины, писал серверный код на PHP. После увольнения со своей предыдущей работы он решил уделить своё внимание исключительно front-end’у. Он использует JavaScript, CoffeeScript и AngularJS. Все данные в виде XML и JSON он получает от back-end разработчика, ему же отдает тоже данные в аналогичном формате. Вспомнили про моего первого друга? Что-то похожее наблюдается?
Неожиданно оборвём рассказы о моих друзьях и перейдем к заключению. Я считаю, что хороший программист будет хорошим только тогда, когда он будет уделять всё своё внимание определенному пулу технологий, которые имеют схожую основу. К сожалению (или к счастью), наш мозг не может концентрироваться одновременно на многих вещах. И различные технологии и языки программирования не исключение. Начав изучать что-то новое, мы отнимаем определенный процент внимания от уже существующего и отдаем эту часть чему-то новому. И дело не только во внимании, а ещё и в постоянной практике. Ключевое слово здесь «постоянной».
Я не в коем случае не призываю всю жизнь программировать на PHP. Возможно, в средине вашей жизни PHP уже и не будет (что, кстати, маловероятно ввиду большого количества проектов на нём). Я лишь считаю, что распределение своего внимания на разные технологии в разных областях могут пагубно отобразиться на том, что вы уже знаете и успешно используете.
1) А как вы считаете: кто из моих троих друзей поступает правильно и кого вы поддерживаете?
2) А как вы считаете: PHP developer со знанием различных СУБД — это Web developer?
3) А как вы считаете: достаточно ли быть только JavaScript разработчиком (со знанием AngularJS), чтобы быть web-developer’ом и писать под Android?
4) А как вы считаете: логичным ли является указание одновременно разных профильных технологий (пример: PHP, Yii, JavaScript, AngularJS, Node.js) в одной вакансии на сайтах поиска работы?
В чем разница между следующими фразами Web developer, Front-end developer, Back-end developer, PHP developer, JS developer? Ответ: во всем!

Теперь начнем чуть издалека. В прошлом году на одном из докладов на iForum 2013 я слушал доклад одного какого-то мобильного разработчика, который вещал о том, что он и любой другой программист может знать очень много языков программирования и что перепрофилироваться из Android-разработчика в PHP-разработчика это дело чуть ли не одного дня. Возможно, теоретически это и реально, но, просидев целый день за статьями, документацией и книгами, вы получите лишь теоретическую информацию, которую вы на следующий день забудете. Практики будет очень мало или вообще не будет.
Весь «кайф» заключается в том, что вы будете считать, что вы знаете как правильно сделать какую-то фичу (прочитав это в книге и посчитав нужным не рассматривать это на практике), но при этом на практике вы столкнетесь с кучей проблем, которые «подкрадутся незаметно». В итоге вы будете никому ненужным Junior PHP developer’ом, который за первой попавшейся задачей полезет в гугл с запросом «php how detect real ip adress». А вы при этом будете считать, что помимо Android developer’а, являетесь еще и PHP developer’ом и возможно даже уже подумываете добавить в своем резюме в поле «Знание языков» и PHP (скорее так и будет). Но на самом деле это не так. Вы напичканы теоретической информацией, которая переплелась и частично потерялась.
Теперь, когда вы хорошо программируете под Android, прочитали пару статей и книгу по PHP да еще за компанию решили и про Node.js почитать, вы кем являетесь? Android developer, web developer, back-end developer, PHP developer, Android + PHP + Node.js developer, …? Сложно определиться хотя бы только для себя, верно?
Идем дальше… У меня есть два друга-программиста. Один работает PHP developer’ом в Германии, второй web-developer’ом в Харькове.

Первый занимается исключительно серверной частью всех разрабатываемых проектов. Это соответственно: сам код на PHP, API для front-end’а и работа с базами данных. Всё логично, верно? Он — PHP developer и занимается исключительно тем, чем должен заниматься PHP разработчик. При этом, он знает Python, но, по его словам, проектов на Python пока не дают из-за отсутствия достаточного опыта. В front-end не лезет и предпочитает развиваться только в направлении back-end.
Второй занимается разработкой на PHP (+Yii, +ZF), JavaScript (+AngularJS, +EmberJS), Node.js, еще на чем-то и пишет прототипы под Android. Кстати, еще и ковыряет Java. На вопрос «что такое прототип под Андроид?» можно получить примерно такой ответ: «Это HTML5-JS-CSS приложение, которое показывает как будет работать будущее приложение, но написать его полностью я не могу, т. к. ещё не всё могу сделать». Не всё логично, верно? Человек распределяет свое внимание на совершенно разные технологии. В итоге получаем: «ещё не всё могу сделать на …», «уже давно не программирую на …», «планирую заняться …» и т. п.
У меня есть еще и третий друг-программист :) Он раньше занимался back-end и front-end разработкой. Т. е. на одном проекте он делал верстку, писал JavaScript, делал плагины, писал серверный код на PHP. После увольнения со своей предыдущей работы он решил уделить своё внимание исключительно front-end’у. Он использует JavaScript, CoffeeScript и AngularJS. Все данные в виде XML и JSON он получает от back-end разработчика, ему же отдает тоже данные в аналогичном формате. Вспомнили про моего первого друга? Что-то похожее наблюдается?
Неожиданно оборвём рассказы о моих друзьях и перейдем к заключению. Я считаю, что хороший программист будет хорошим только тогда, когда он будет уделять всё своё внимание определенному пулу технологий, которые имеют схожую основу. К сожалению (или к счастью), наш мозг не может концентрироваться одновременно на многих вещах. И различные технологии и языки программирования не исключение. Начав изучать что-то новое, мы отнимаем определенный процент внимания от уже существующего и отдаем эту часть чему-то новому. И дело не только во внимании, а ещё и в постоянной практике. Ключевое слово здесь «постоянной».
Я не в коем случае не призываю всю жизнь программировать на PHP. Возможно, в средине вашей жизни PHP уже и не будет (что, кстати, маловероятно ввиду большого количества проектов на нём). Я лишь считаю, что распределение своего внимания на разные технологии в разных областях могут пагубно отобразиться на том, что вы уже знаете и успешно используете.
1) А как вы считаете: кто из моих троих друзей поступает правильно и кого вы поддерживаете?
2) А как вы считаете: PHP developer со знанием различных СУБД — это Web developer?
3) А как вы считаете: достаточно ли быть только JavaScript разработчиком (со знанием AngularJS), чтобы быть web-developer’ом и писать под Android?
4) А как вы считаете: логичным ли является указание одновременно разных профильных технологий (пример: PHP, Yii, JavaScript, AngularJS, Node.js) в одной вакансии на сайтах поиска работы?