В чем разница между программистом, разработчиком, инженером-программистом и хакером?

Семантика.

Отказ от ответственности: все мнения принадлежат мне.

Второй отказ от ответственности: это мнения и в значительной степени основаны на анекдотах. Я не претендую на звание эксперта или авторитета в этой теме.

Существует множество мнений о различиях между этими терминами. Некоторые люди тоже очень увлечены этим. Вот мой взгляд на них (а также то, что я в основном видел):

«Программист» - наименее формальный термин и может относиться к любому, кто может писать код… даже если это чушь. Неопытный подросток мог бы стать кодером. Технически вы можете считать себя кодером, если можете написать базовый JavaScript или что-то в этом роде.

Естественно, что большинство людей в индустрии программного обеспечения - программисты.

Разработчик - это шаг вперед: тот, кто работает по контракту или работает над разработкой приложений полный рабочий день. Ключевым отличием здесь является то, что разработчики охотно предоставляют свои услуги - ради развлечения, на благотворительность или за деньги.

А впоследствии это означает, что кто-то добровольно принимает или запрашивает их услуги.

Лично я бы не стал просить какого-нибудь случайного программиста сделать для меня приложение - они вообще знают, как? Однако я бы попросил разработчика приложений сделать то же самое. Это звучит более официально и, следовательно, вызывает большее доверие к их работе.

Я также прямо упомянул «продажу» или «волонтерство» услуг, потому что на самом деле, заставить других людей использовать ваше программное обеспечение / приложения - это обряд посвящения. Кто угодно может придумать себе небольшие лоскутные решения. Но если вы выложите приложение в App Store? Да, вы разработчик.

Итак, разработчик - это кодировщик (потому что разработчики пишут код), но кодировщик не обязательно является разработчиком (потому что разработчики на самом деле разрабатывают решения и приложения, а не просто собирают код здесь и там).

Разработчики ⊆ Кодеры

Если вы не помните или не знаете теорию множеств, «» означает «является / являются подмножеством». Все разработчики - кодеры, но не все программисты - разработчики. Следовательно, разработчики - это подмножество программистов.

«Инженеры-программисты» - это люди, которые не только умеют кодировать / разрабатывать, но также знакомы со всеми тонкостями разработки коммерческих продуктов в команде.

Они также разбираются в инженерии и других высокотехнологичных темах.

Многие разработчики являются инженерами-программистами, но, по моему скромному мнению, они не одно и то же: часть названия «инженер» указывает на человека, знакомого с настоящими основами инженерии, такими как продвинутая / дискретная математика, алгоритмы и т. Д. логика, среди прочего.

Возможность создавать мобильные приложения для iOS или Android делает вас разработчиком. Но если вы не можете объяснить или проанализировать производительность алгоритмов или эффективность кода, вы на самом деле не инженер.

Я также утверждаю, что отсутствие возможности предложить решение, отличное от грубой силы, тоже не очень похоже на инженерную. Большинство людей могут писать циклы for и вкладывать их. Но придумали умный способ сократить свой алгоритм до постоянного времени? Черт, да, это инженерия.

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

Моя теория расширяется до следующего:

Инженеры-программисты ⊆ Разработчики ⊆ Кодировщики

← Забавно стереотипное изображение «хакера»

Затем у нас есть «хакеры». Обычно (например, вне программного обеспечения) большинство людей думают о хакере как о человеке, который взламывает вещи (например, ваш банк, ваши онлайн-счета) и крадет вещи (например, ваши деньги, ваш SSN, пароли к другим вашим счетам и т. д.…).

Но в программной инженерии взломать (существительное) на самом деле описывает код, который является решением проблемы, и, следовательно, взломать (глагол) - это другое слово для решения проблем.

Вот почему «хакер» для многих разработчиков программного обеспечения в отрасли с любовью используется как термин для описания любого разработчика или программиста, который решает проблемы и вместе «взламывает» решения (например, приложение).

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

Технических директоров компаний-разработчиков программного обеспечения называют главными хакерами.

Итак, я думаю, мы будем придерживаться теории множеств: если мы будем считать хакеров высококвалифицированными решателями проблем, то они составляют лишь часть инженеров-программистов. Ведь не все могут сидеть наверху ...

Хакеры ⊆ Разработчики Разработчики ⊆ Кодеры

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

Если бы это было так, я бы не занимался разработкой программного обеспечения ¯ \ _ (ツ) _ / ¯. Иногда я даже не могу вспомнить, где припарковал эту чертову машину.

Так что это значит для нас с тобой?

Я упоминаю все это, потому что раньше видел, как люди сильно злились из-за того, что их «ошибочно принимают» за неправильный термин.

«Кодер? Нет, я инженер. Большая разница ».
- Snobby Ass, который, к сожалению, действительно хорош в том, что делает

Некоторые люди действительно злятся, когда вы используете слово «хакер» для обозначения грабителей цифровых банков, а не лиц, решающих проблемы.

«Нет человека, который полностью облажался. Хакер - это человек, который строит, а не ломает ».
- Инженер, которого я знаю, у которого твердое мнение обо всем

Лично я не трачу много времени на размышления об этих терминах и их различиях, и я смиренно не думаю, что вам следует тоже - навыки говорят сами за себя, независимо от названия.

В основном я выложил эту историю для развлечения.

Вы хакер или программист? Наверное, оба? Вы программист или разработчик? Мех, это действительно не имеет значения.

У вас хорошо получается то, что вы делаете? ← Теперь это ключевой вопрос.