Software engineer кто это: Что такое Software Engineering? — XARP
Профориентиры: Чем занимается software engineer
Код должен быть не только функциональным, но и красивым, считает Software Engineer в Luxoft, член программного комитета конференции JavaDay 2017 Маргарита Недзельская. О своем непростом пути в сферу IT, гуманитарном образовании и любимых книгах Маргарита рассказывает в интервью для спецпроекта «Профориентиры».
В чем разница между software engineer и programmer?
Очень часто возникает путаница с этими определениями, и в итоге всех специалистов просто называют «программистами». На самом деле, programmer – это человек, который пишет код. Перед ним поставили задачу, рассказали, как ее решать, и он, следуя этим указаниям, пишет код на определенном языке программирования. А software engineer, прежде чем написать код, решает поставленную перед ним задачу, моделирует, находит оптимальное решение, чтобы программа не просто работала, а была оптимизированной и выглядела красиво, поддерживала обновления и расширения. Если вы новичок, то вы junior. Когда у специалиста становится больше опыта, он получает новые знания, сдает сертификации и постоянно работает над собой, то со временем он может пройти интервью внутри компании и получить уровень middle, а дальше — senior. Но эта процедура обычно оговаривается в каждом конкретном случае и зависит от политики компании. После senior также можно развивать свою карьеру и перейти в software architect или стать team lead. Архитекторы, так же как и software engineer, решают проблемы, но на более высоком уровне. Они продумывают, какими должны быть внутреннее устройство и внешние интерфейсы программного комплекса. После принятия сложных архитектурных решений, они отдают задачу на разработку.
А расскажите, как вы пришли в эту профессию.
Когда я училась в университете, то поняла, что мне больше нравится заниматься не математикой в чистом виде, а что-то разрабатывать, программировать. У меня это хорошо получалось, и меня очень поддерживали преподаватели. Они ставили передо мной сложные задачи по программированию, и когда у меня получалось их решать, я поняла, что кайфую от этого и хочу заниматься этим и в дальнейшем. Потом я начала искать работу: сначала это был небольшой студенческий стартап, потом попала в компанию Epam, а теперь работаю в Luxoft.
Где вы получили среднее и высшее образование?
Математику я любила всегда, еще с первого класса она была моим любимым предметом, но родители отдали меня учиться в гимназию №191 им. П.Тычины, потому что это было лучшее учебное заведение в районе. Когда я уже училась на первом курсе в университете им. Тараса Шевченко на факультете компьютерных наук и кибернетики, мне было немного сложно, потому что у нас в гимназии математика не преподавалась на столь высоком уровне. Мои однокурсники, которые учились в математических лицеях, все это уже прошли, а я впервые в жизни видела. Поэтому первый год мне было сложно учиться, и я спросила у родителей, почему они не отдали меня в математический лицей, ведь они знали, что у меня есть способности. Но потом я поняла, что родители все-таки были правы, потому что в моей гимназии я получила хорошие знания языков. Я владею английским, немного французским и итальянским. И теперь я понимаю, что если бы не знала языков, то мне было бы сложнее их выучить, чем подтянуть математику.
Свежие новости
Когда я училась на четвертом курсе, у меня получилось устроиться стажироваться в компанию Epam. Говорят, что стажировка в этой компании – чуть ли не самый сложный путь студента в IT. Сначала нужно было пройти отборочное тестирование. На него пришло около 700 – 800 человек. Среди заданий были задачи на логику, задачи по программированию, математике и по английскому языку. Потом из нас отобрали 70 человек и разделили на три группы. Я попала в одну из групп, и потом три раза в неделю посещала курсы лекций от Epam, выполняла задания, сдавала проекты. Когда курсы закончились, мы проходили компьютерное тестирование. Задания были не из легких. Например, вам показывали кусочек кода и спрашивали, что он выведет на экран. Но это были не какие-то адекватные фрагменты кода. Нужно было понять, частью чего они являются, как бы в уме дописать их. При таком тесте сразу становится понятным, владеет ли человек тем или иным языком программирования. Тех, кто успешно проходил тестирование и собеседование, направляли на обучение в лабораторию от компании Epam, где была возможность поработать в команде и что-то поделать. В основном, это была работа над какими-то проектами «для себя», однако там вы получаете именно опыт работы в команде. Со многими ребятам оттуда до сих пор в хороших отношениях. Кроме того, в лабе читались лекции по конкретным фреймворкам, которые сейчас очень популярны.
Что вам больше всего нравится и не нравится в вашей профессии?
Я очень довольна своей профессией, она мне нравится во всех аспектах. Я часто слышу от людей, которые работают в других сферах, что они недовольны коллективом, недовольны тем, что имеет место быть конфликт поколений. У меня такого нет, потому что IT-сфера — относительно молодая, а потому команда, в которой я работаю, тоже молодая. И мы легко находим общий язык, мы все добры друг к другу, каждый всегда может прийти к другому на помощь. Мне это очень нравится. И с одной стороны, ты очень молодой специалист, но к тебе относятся серьезно, как и к другим специалистам.
Сталкивались ли вы в бизнес-среде с проявлениями дискриминации?
Да, были какие-то нюансы, но, скорее, в форме шутки. Я работаю в коллективе с людьми, которым 26 – 30 лет, и иногда они говорят и шутят на какие-то свои темы. Я, естественно, еще не родилась тогда, когда они уже в школу ходили, поэтому могу чего-то не знать. И они иногда надо мной по этому поводу подшучивают. Но я тоже могу их «потроллить», что они уже «старички». А если серьезно, то они никогда не делают мне замечаний по поводу того, что я чего-то не знаю или не умею касательно моей работы. Да, в силу моего возраста мне иногда не хватает опыта и знаний, однако мои коллеги всегда готовы мне помочь, объяснить. Я считаю, что нужно адекватно реагировать на критику и тогда все будут нормально к вам относиться. Не критикуют лишь тех, кто ничего не делает.
Считаете ли вы себя особенной из-за выбора столь «непопулярной» среди женщин профессии?
Честно, никогда не задумывалась об этом. Мне кажется, нет. Я не считаю себя особенной. Просто я делаю то, что мне нравится. И я всем говорю, что стоит заниматься только тем, что ты действительно любишь. И правильно когда-то сказал Конфуций: «Выбери себе работу по душе, и тебе не придется работать ни одного дня в своей жизни». Я не говорю, что все женщины сейчас должны поголовно идти в программисты, в IT. Я считаю, что если у человека это получается, если он получает кайф, то стоит попробовать, и не важно – мужчина это или женщина.
Что вы посоветуете смотреть/читать/изучать начинающим разработчикам?
Я бы посоветовала прочесть книги Роберта К. Мартина «Чистый код. Создание, анализ и рефакторинг» («The Clean Coder: A Code of Conduct for Professional Programmers») и «Идеальный программист. Как стать профессионалом разработки ПО» («The Clean Coder: A Code of Conduct for Professional Programmers »). Прежде чем начать программировать, нужно почитать этого автора. Он рассказывает, как нужно писать, чтобы код был красивым, читабельным, поддерживаемым. Вторая книга уже о том, каким должен быть разработчик. Что касается книг непосредственно по языкам, фреймворкам, то тут список довольно большой и очень зависит от конкретного направления. Помимо книжек, вы должны всегда быть в тренде, подписывайтесь на тематические группы в Facebook, Instagram, Twitter, будьте частью этого комьюнити. IT-сфера очень быстро развивается, и вам необходимо постоянно за этим развитием следить. Например, еще не вышла Java 9, но уже сейчас можно прочитать много разных статей, послушать доклады о том, что в ней будет. Так что нужно постоянно работать над собой, читать и следить за новостями.
Что бы вы посоветовали девочкам, которые задумываются о профессии в STEM?
Я бы спросила, какие задачи она перед собой ставит, и выяснила, есть ли у нее способности. Многие люди хотят перейти в IT-сферу, потому что там высокие зарплаты. Однако высокие зарплаты там не у всех. А чтобы добиться хорошей зарплаты, надо работать над собой. Если вы новичок, то никто вот так сходу не будет платить вам 3-4 тысячи долларов в месяц. В начале карьерного пути вы будете получать по $100, 300, 600. А когда человека что-то не устраивает, то он будет только страдать. Успехов можно добиться в любой другой сфере при условии, что ты занимаешься тем, что тебе нравится.
Что касается детей, то если ребенку нравятся компьютеры, нравится заставлять компьютер выполнять что-то вместо себя, например, он хочет создать робота, который бы убирал комнату или там заполнял дневник, то я бы поддержала его и направила на курсы программирования для детей, к счастью, сейчас таких инициатив много. Если у ребенка есть талант и способности к программированию, то их стоит развивать.
Что или кто вас вдохновляет в профессиональном плане?
Я часто посещаю разные конференции, и меня очень вдохновляют спикеры, которые рассказывают о своих историях успеха. У меня была одна интересная история: когда я заканчивала магистратуру, мне нужно было писать диплом, но дело не шло, так как сложно было совмещать работу, диплом, дом. И я написала у себя на Facebook: «Ничто так не мотивирует писать диплом как… Хотя меня и правда ничто не мотивирует». И как раз в это время я посетила одно из мероприятий, где встретила знакомого, который прочел мой пост, он спросил, почему меня ничего не мотивирует. И он порекомендовал послушать мне доклад одного человека, чья дипломная работа потом стала кандидатской, и теперь весь этот проект вырос в большую компанию. Я настолько этим вдохновилась, что потом написала пост-опровержение о том, что у меня замечательная сфера деятельности, в которой меня никто не ограничивает, я могу делать все, что хочу. И буквально за ночь я написала 80% диплома. Так что не обязательно вдохновляет один конкретный человек. Нужно находиться в этой среде, и другие люди будут вас вдохновлять.
Беседовала Ира Керст. Фото из личного архива Маргариты Недзельской
— Читайте также: Наука — детям: 10 YouTube-каналов на смекалку
Coder vs. Developer vs. Engineer — а какой Job Title у тебя, %username%? / Хабр
Computer Scientist, Software Engineer и Coder заходят в бар.
— О, а вот и программисты! — окликает их бармен…
Я знаю людей, которые программируют уже не один десяток лет, но обижаются, когда их называют «программистами«. А по запросу Coder vs Developer vs Software Engineer в гугле находится 113 000 000 ссылок: 1 2 3 4 5 6 7 8 9 … 113 000 000. Что интересно, можно найти совершенно противоположные мнения об одном и том же. С чем-то я согласен, а с чем-то в корне нет.
Последние же несколько лет так вообще постоянно подливают масло в огонь, появляются какие-то совсем странные программисты, которые называют себя Creative Technologist, Creative Coder и Interactive Developer.
Давайте же попробуем разобраться.
А какой Job Title у тебя, %username%?
Итак, расслабьтесь, если говорить о России, то мы тут на самом деле все Инженеры-программисты (или вообще просто Программисты). Все эти непонятные тайтлы придумали где-то там, а здесь они звучат прикольно и пишутся необычно. Я вот вообще представляюсь как Lead Interactive Architect, что ничего не говорит о том, что я тут делаю.
За всю свою недолгую карьеру, извините, программиста, я успел поработать со множеством разных людей. И всех их магическим образом можно довольно точно разделить на несколько категорий. Конечно, будут и те, кто окажется где-то между этими категориями, но их вполне можно отбросить как статистическую погрешность.
Данная классификация не подразумевает какого-то абсолютного порядка и вложенности одних категорий в другие. Речь пойдет о следующих группах людей так или иначе относящихся к программированию:
- Scripter
- Coder
- Hacker
- Software Developer
- Software Engineer
- Computer Scientist
- Creative coder
Scripter
Изначально, скриптами называли небольшие программы на простых языках. Вспомним Shell scripts, Batch files, AppleScript, JavaScript, ActionScript, VBScript. Их основное применение — автоматизировать повторяющиеся однотипные задачи.
Это сейчас на JavaScript можно написать Flash IDE в браузере, но «тогда» его использование ограничивалось в основном прокруткой дурацкого текста в статусной строке. Это сейчас ActionScript 3 является полноценным ООП языком, на котором пишут enterprise приложения, но «тогда» у самого первого не было даже текстового представления, действия надо было выбирать из списка, по одному на key frame.
Но смысл, тем не менее, остался. Сейчас даже дизайнер может при определенном желании написать себе скрипты для автоматизации чего бы то ни было в своей повседневной работе. Что я, кстати, весьма приветствую. Это довольно печально, смотреть, как дизайнер, например, рисует 100 «случайных» элементов руками. А еще печальнее, когда ему приходится их все перерисовывать.
Еще часто скриптинг упоминается в контексте разработки игр. Умные программисты уже давно сообразили, что проще выдать гейм-дизайнерам небольшие тулзы, с помощью которых они могут сами делать нужную им функциональность, чем постоянно вручную менять одни непонятно откуда взявшиеся числа на другие (такие вот они геймдизайнеры). Опять же, как и в прошлом примере, тут не нужно быть программистом, чтобы составить какой-никакой скрипт из доступных команд.
Иногда можно услышать в корне неправильное определение скриптинга — писать инструкции, которые парсит и выполняет другая программа. Но ведь это и есть код. Инструкции, которые выполняет что-то другое.
Coder
Кодер — это человек, который переводит из одного языка в другой. Проще говоря, инструкции на «русском матерном» преобразует в инструкции на некотором языке программирования, будь то Java, PHP, C# или какой-нибудь другой, тысячи их. Разумеется, соблюдая правила и требования пратформы и окружения, где этому коду потом выполняться.
Я сам не люблю этот термин. Когда кто-то говорит «coder», я представляю себе человека, который бездумно пишет код, главное и единственное свойство которого — он компилируется; и этот человек не в состоянии делать что-то бОльшее из-за отсутствия знаний, опыта или желания; вместо того, чтобы включить мозг и разобраться в проблеме, придумать решение, он максимум способен соединить куски кода с гугла, которые он даже не понимает как работают.
Зачастую, не имеет никакого специального образования, поэтому и код у получается с запашком.
Yes, it is an open secret fact which Software Companies won’t say/accept — that Software Professionals specially in India are not programmers but mere coders, they are the assembly line workers. [via]
Отсюда идет ассоциация с обезьянами — Code Monkey.
Hacker
Под хакерами я подразумеваю совсем не аудиторию журнала Хакер, я просто не могу придумать подходящее название. В английском есть слово Tinkerer, возможно, оно подходит больше.
Сюда я отношу людей, которых можно назвать «geeks«. Конечно, это стереотип еще тот, но многие как минимум частично ему соответствуют: необщительные, с посаженным ночным сидением перед плохим монитором зрением, имеют физическое или математическое образование, знают C, используют Linux, любят копаться в исходниках и пересобирать все под себя, часто одной рукой пишут код, а в другой держат паяльник, имеют обширные знания тонкостей работы железа и софта, хорошо разбираются в низкоуровневом программировании. Их можно встретить на олимпиадах, они пишут софт для демосцены, занимаются reverse engineering разнообразных устройств, и вообще чрезвычайно умные и образованные люди.
Но с ними невозможно работать в команде. По разным причинам, и да, бывают исключения.
Software Developer
Среднестатистический программист работающий в команде. Часто приклеен к языку/платформе, поэтому приписывает себе его название. Например,
- Flash Developer
- Java Developer
- .NET Developer
- …
Принято делить на категории по знаниям/опыту:
- Junior Developer
- Developer
- Senior Developer
- Lead Developer
Взяв декартово произведение этих двух списков, получим более-менее устоявшиеся подкатегории: Junior Flash Developer, Lead Java Developer, Senior .NET Developer, ну и так далее.
Developer отличается от кодера тем, что непосредственно кодирование — это всего лишь одна из его обязанностей. Чаще всего в обязанности разработчика входят: предметный анализ, спецификация, дизайн, кодирование, отладка, юнит тесты, документация, оптимизация.
Я считаю, что Junior Developer — это Coder, который жаждит учиться и развиваться. Его еще не пускают к важным этапам проектирования софта и заставляют выполнять самые нудные и/или простые таски. Но, если есть желание и мозг, человек будет набирать знания и опыт и постепенно продвигаться вверх.
Существует миф, что одни разработчики в N раз более продуктивны, чем другие. Я очень рекомендую потратить час и посмотреть видео Greg Wilson — What We Actually Know About Software Development, and Why We Believe It’s True. Если вам жалко времени, то конкретно по этому поводу он говорит с 18-й минуты.
Разумеется, чем «старше» разработчик, тем больше ему нужно знать. К сожалению, у нас в институтах не учат проектированию enterprise систем (по крайней мере, в мое время не учили). Поэтому, всему приходится учиться по книжкам, у умных людей или на своих ошибках.
Необходимые знания же из области в область отличаются. Неправильно говорить, что Вася плохой разработчик, потому что он не знает чего-то. Скорее всего, он и не должен, потому что у него совсем другая область. Что можно сказать, так это, например, что Flash разработчики в основном имеют более низкий уровень общей алгоритмической подготовки, чем C++ разработчики.
Lead Developer / Team Lead чаще всего отдаляется непосредственно от программирования и становится менеджером, поэтому нам не интересен. Есть много случаев, когда Senior Developer рос не в Lead Developer‘а, а в Super Mega Senior Developer‘а, превращаясь в ходячую энциклопедию по платформе/языку/фреймворкам — это заблуждение, что все хотят расти в менеджеров и руководить.
В небольших конторах / стартапах может быть вообще 1-2 программиста, которые цепляют себе тайтл Lead Flash Developer, а что, самый крутой девелопер тут и управляет всеми остальными 0 человеками. А потом его берут в нормальную контору джуниором. Так что это опять же не говорит ни о чем.
Software Engineer
В разговорной речи обычно употребляется с тем же смыслом, что и Software Developer. Описания Software Developer и Software Engineer взятые с salary.com весьма абстрактны и довольно похожи. Зарплаты тоже +- одинаковы, хотя мне говорили, что люди с тайтлом Software Engineer получают больше.
По поводу значения слова Engineer в названии профессии в интернете ведутся холиворы и по сей день. Википедия говорит следующее:
Software engineering (SE) is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software.
Вообще, инженерное дело — это набор работающих методов и практик, которые позволяют что-то строить/делать с некоторой надежностью и уверенностью. Так вот, Software Engineering does not work — Real Software Engineering – Glenn Vanderburg.
А во многих странах, чтобы называть себя инженером, нужно иметь лицензию. Беднягам, приходится быть простыми Software Developer’ами.
Но тем не менее, я четко выделяю отдельную группу Software Engineer и считаю, что слово инженер по отношению к разработке софта очень даже подходит. Инженер отвечает за то, чтобы построенное им тупо не развалилось. Главное не сравнивать со строительством мостов. Люди строят мосты уже тысячи лет, а софт пишут лет 30 от силы. В конце концов, кому какое дело, если от нагрузки упадет плохо спроектированный сервис? А вот, когда дело доходит до самолетов и атомных станций, наверняка, там есть свои аттестации и лицензии. А в будущем, я надеюсь, чтобы называться Software Engineer, нужно будет сдавать экзамены и получать корочки.
Software Engineer должен обладать большим опытом и кучей теоретических знаний не только из Math, Computer Science и Software Engineering. Знание разных языков вторично. В конце концов, принципы OOP и O(n^2) во всех языках имеют одинаковый смысл. У разработчика из этой категории обычно очень большой кругозор, у американцев есть отличная поговорка: когда у тебя есть только молоток, все вокруг выглядит как гвоздь.
Поэтому меня раздражают позиции с названиями типа Java Engineer или Ruby Engineer. Инженер не может быть привязан к языку. И, черт побери, где-то была статья ровно по этому поводу, а я не могу ее найти, чтобы процитировать.
Так что нет, чаще всего Senior/Lead Developer это не Software Engineer, хотя многими своими свойствами и обязанностями они пересекаются. Другое дело, человек может быть инженером, в свободное время делать что-то на одной платформе, читать умные книжки, а (чуть не сказал днём) на работе быть загнанным в рамки другой платформы Lead’ом, и сидеть править код за бездырями, потому что платят больше. Это да.
Software Architect
Архитекторов я не выношу в отдельную категорию, потому что либо их не существует, либо я их не видел и не понимаю кто они такие. Все, кто приписывают себе в тайтл Architect, либо следуют моде, либо стебутся над модой, либо клинические идиоты.
It is actually pretty sad that in this industry you pretty much have to tack-on architect at the end of your title after a certain number of years in the industry, otherwise you lose a level of credibility and earning potential. I believe the word architect should die as applied to software, it is not necessary and often harmful. [из комментариев к статье]
Аналогии со строительством тут не работают. Знаниями, которые нужны для создания архитектуры системы, должен обладать Software Engineer или Senior Developer. Это зависит от того, делается ли архитектура в рамках какой-то платформы, или нужно разработать что-то сложное межплатформенное.
Программистам в своей работе постоянно приходится принимать те или иные архитектурные решения. Более опытным и продвинутым доверяют приложить руки к архитектуре больших проектов. Вот и все.
А вообще, архитектуризм — это клиническая болезнь. Постоянно приходится сталкиваться с людьми, которые пишут свой движок со своей супер архитектурой. Годами. Идеальный движок в вакууме тысяч абстракций, который никогда не сталкивался с практическим применением, ибо о реальный мир он разобъется как стеклянный шар о каменный пол. Сами там были…
Computer Scientist
В отличие от инженеров, которые озабочены прикладным применением конкретных знаний, ученые от CS изучают их теоретические основы. Аналогично математикам-теоретикам, которые доказывают почему те или иные формулы и алгоритмы работают в абстрактных моделях, Computer Science берет свои корни из Математики и наследует от нее методы рассуждения и доказательства теорем. Как и в остальных науках, ученые специализируются в той или иной области, например: построение и доказательство корректности алгоритмов (в куче областей), теория вычислимости, функциональное программирование, machine learning, computer vision итд.
Про ученых в последнее время в массе известно лишь из-за функционального программирования. Например, набрав какой-то рост, Scala споткнулась о собственную сложность (еще бы, The type system in Scala is Turing complete), а в Haskell никто не понимает что такое Monad.
Хотя, казалось бы «A monad is just a monoid in the category of endofunctors, what’s the problem?» [via]
Я лично не знаком ни с одним человеком, который занимается только наукой, но по крайней мере, я уверен, что такие существуют (не в нашей стране, разве что). Время от времени проскакивают интересные публикации. Вот, совсем недавно был шортлист по 2011-му году, который я опять же не могу найти теперь.
Creative coder
В последнее время, с развитием технологий и инструментов, из скриптеров стал вырастать совершенно другой и весьма интересный класс программистов. Во многом этому способствовали Flash, Processing, Max/MSP, vvvv, JavaScript, OpenFrameworks, Cinder.
Именно из скриптеров, потому что цель изначально другая — использовать код, чтобы что-то нарисовать, оживить, изобразить, сыграть. Прийдя из художников, VJ’ев и других нетехнических областей, они стали быстро впитывать поверхностные особенности программирования и окружения, в котором приходится работать.
Человек задает вопрос «А как мне сделать вот это?». Гугл подсказывает код и как соединить разные компоненты вместе. Компоненты не обязательно софтварные, время от времени возникает необходимость использовать разное железо, например датчики через Arduino. Поэтому у Creative Coder’а в основном есть обширный запас поверхностных знаний. Но, не имея достаточной подготовки, опыта, а часто нужного склада ума, он не в состоянии сделать чуть более чем простой продукт. Потому что код сделан из копипаст и заплаток между ними.
Но тем не менее, Creative Coder’ы показывают потрясающую способность быстро собирать прототипы с вынесенными наружу параметрами. Используя различные технологии и связки между ними. В то время как Engineer будет вникать в теорию, а Developer писать фреймворк (который понадобится лишь один раз, для конкретной задачи), Creative Coder нагуглит и соберет уже рабочую программу. Которая, разумеется, предназначена для дальнейшей поддержки ровно никак, но кого это волнует?
Зачастую, креативность выражается как раз в подгонке значений этих внешних параметров — «а что будет, если здесь поставить 0.1, а тут 42?.. Класс!». Поэтому, в узких кругах существует мем «заниматься креативным кодингом», что означает на глазок подгонять какие-то параметры в коде для достижения всеобщей радости или каким-то образом иметь у себя в коде кусок, которые не понятно как работает, но поставленную цель достигает.
Creative Coder’ы с одной стороны похожи на Coder’ов: качеством кода, копипастингом, отсутствием желания разобраться в теоретических основах этого кода; с другой стороны у них есть желание развиваться, делать что-то прикольное, экспериментировать, пробовать новые вещи.
Также, их можно было бы просто назвать Junior Developer’ами и поставить точку, но, как я уже сказал, у них другая изначальная цель, а код используется, потому что с его помощью можно делать креативные вещи. Если Junior Developer углубляется в основы программирования и растет в Developer’а и дальше, то Creative Coder’у такой процесс роста не интересен. Он хочет расти засчет небольших интересных (исследовательских, одноразовых) проектов.
И вот тут я, честно говоря, не понимаю как Creative Coder работает в команде с другими разработчиками, потому что в терминах команды он Junior Developer, никак иначе. Никто ему не даст самостоятельные интересные проекты, пока он не научится правильно проектировать программы и писать код. Получается, все они работают либо в одиночку, либо с единомышленниками непрограммистами?
Тем не менее, есть примеры Creative Coder’ов, которые не стали игнорировать теорию и обладают нужным складом ума для проектирования разумных алгоритмов и вменяемого софта. Не ограниченные платформой, они подошли к Software Engineer с противоположной стороны от Software Developer и в то же время проявляют качества из категории Hacker.
Creative Technologist
В совсем последнее время можно увидеть объявления, где профессия описывается как Creative Technologist. Требования везде разные: от полудизайнера/полу-js-кодера без опыта программирования (sic!), до мастеров С++ и OpenGL.
Позиция эта выросла из необходимости digital агентств воплощать креатив в код. Соответственно, казалось бы, человек с дизайнерским мышлением и умеющий кодить был бы идеальным кандидатом на данную позицию. Но, как показывает практика, в основном, люди с дизайнерским мышлением — плохие разработчики (именно разработчики). Как-то это связано с полушариями мозга, я не медик и не психолог — мне пофиг.
Гораздо правильнее нанять хорошего разработчика, который при этом еще и не лишен коммуникационных скилов и хорошего вкуса. Конечно, несколько месяцев ему понадобится, чтобы избавиться от разных пагубных привычек большого Software Development. Но в конце концов, у вас будет code base, на которую можно положиться, а не набор заплаток на соломенном домике.
Поэтому, у меня нет специальной категории Creative Technologist. Так себя называет либо Creative Coder, либо Software Developer/Engineer, который работает в мире digital агентств.
Interactive Developer
Человек хочет подчеркнуть, что он пишет софт, который взаимодействует с пользователем. Помимо софта для интерактивных инсталляций, Interactive в последнее время приписывают себе Flash разработчики и JS разработчики, которые экспериментируют с WebGL, Canvas и всяким более другим HTML5.
Заключение
Людям свойственно классифицировать наблюдаемые объекты по группам, часто с большой вложенностью — вспомните, например, биологию. Позднее, определив к какой группе может принадлежать конкретный объект, легко экстраполировать на него свойства этой группы.
Держа в голове категории, и пытаясь мысленно поместить человека в одну из них, становится проще сделать некоторые предположения о нем, оценить его знания и подготовку, понять его цели и образ мышления. Это позволяет избежать множества проблем связанных с налаживанием рабочей коммуникации.
Разумеется, данное деление на категории — это чисто моё субьективное мнение (которое в любой момент может измениться). Кто-то со мной полностью или частично согласится, но если же вы считаете, что я в корне неправ — приглашаю к дискуссии в коментариях.
И, если у вас до сих пор нет подобного списка, попробуйте составить свой, или возьмите этот. В будущем пригодится.
Где ответственность, или кто такой Senior Software Engineer
Всем привет! Тема специалистов в CIS мне близка: за 10 лет в IT-индустрии я прошел путь от молодого разработчика до руководителя направления и был по обе стороны «баррикад». Потому предлагаю обсудить вопрос исключительно в формате «проблема-решение».
Наш рынок относительно молодой и развивается преимущественно эмпирическим путем: методом проб и ошибок. С одной стороны, это звучит гордо: без толкового профильного образования мы пробились через асфальт. Но в реальности мы теряем огромный потенциал времени. Почему? IT не настолько творческая деятельность, как считают многие, оправдывая свое нежелание брать существующие практики и, тем более, отстаивать их жизнеспособность. Большинство подходов и методов описаны и применялись кем-либо в прошлом или настоящем (пропускаем инновации). Такие проблемы, как отсутствие понимания Delivery Management, использования существующих практик и отсутствие профильных академических знаний заметны не сразу, так как спрос на специалистов по-прежнему превышает их количество на рынке.
Почему это проблема? Подобная безграмотность становится катализатором рисков на проектах. В особо плачевных случаях компания просто теряет все инвестированные деньги, и продукт не выходит в рабочую среду. В подобной ситуации специалисты ссылаются на менеджеров, которые не понимают тонкостей производства, а те, в свою очередь, в ответ «восхваляют» исполнителей. Картина не самая лицеприятная, но и те, и другие в короткий срок получают новый проект, потому что за неимением хороших кадров, приходится отбирать лучших из худших.
Думаю, вступительная часть уже вынуждает некоторых начать писать комментарии. Но предлагаю все же дочитать до конца. Я не сторонник жалоб. Это описание реальности, которую, возможно, некоторым не хочется признавать. А теперь давайте разберем причинно-следственную связь и варианты выхода из сложившейся ситуации.
«Seniority»
Сама тема ответственности и распределения обязанностей в производственном цикле разработки проекта широкая, и, видимо, не просто так книжные полки ломятся от профильной литературы. Примечание: проект может быть любого характера, производства ПО можно заменить на производство сарделек. Мы же разберем насущную проблему: «Кто такой Senior Software Engineer?»
Почему в центре нашего внимания именно Senior? Эта фигура является границей между исполнителем и управляющим. Именно этот специалист остается в душе разработчиком, а весь внешний мир требует от него принятия решений и ответственности. Те, кто на все смотрит категорично, сразу займут определенный лагерь. Специалист будет склоняться к тому, что менеджеры просто хотят свалить на него ответственность. Менеджмент же будет склонен считать, что специалист еще не зрел и отложит инициативу в долгий ящик.
Лично я — за баланс и отказ от резких суждений и штампов. Менеджменту нужны люди для роста продукта, проекта или организации (карьеристы не в счет), и у специалиста, чей потенциал был замечен, меняется система метрик его труда. В большинстве случаев осознание Senior-специалистом масштабов и зон ответственности диаметрально меняет его отношение к работе менеджерского состава, учит мыслить целостно, а не частями. Те, кто не справляется, возвращаются обратно и больше не затрагивают тему несправедливости. Но их пример мы опустим. Данный материал нацелен на достижение результата, а не попытку.
1. Результативность
Итак, мы определились с героем рассказа — это Senior специалист. Теперь, войдя в его «шкуру», что мы видим? Ему в той или иной мере присущ нарциссизм. Недостаточное внимание к собственной персоне — мысль, на которой он часто себя ловит (как и все мы, собственно). Мысль эта стимулирует негодование и недовольство текущей средой и ключевыми фигурами. Не нужно ерничать, каждый этого хочет, иначе бы мы не стремились все иметь и рассказать об этом как можно более широкой массе людей про новое авто, гаджет, квартиру и остальное.
Теперь посмотрим на ситуацию глазами взрослого человека. Если у вас есть прибыльное производство, и вы планируете увеличить доходность предприятия, вам нужен заместитель, которые уделит определенному вопросу больше времени, чем вы, и сможет решить его эффективнее, чем вы. Конечно, вы не пожелаете взять на ответственную задачу сомнительного «Senior» специалиста. Не нужно себя обманывать, что кроме вас это никто не сможет сделать лучше. Жизненный цикл растущего предприятия требует смены управленческой модели и структуры для удержания положительной динамики при смене переменных показателей. Это продиктовано здравым смыслом.
То есть, нужно путем анализа выявить потенциально сильного кандидата и разработать для него адаптационную программу по последовательному применению тех навыков, которые он должен будет использовать на новой должности. Если Senior хочет, чтобы его заметили и стали инвестировать в его профессиональный и карьерный рост — он должен сделать первые шаги в этом направлении. Правило № 1: важен только результат, а не попытки.
2. Поиск возможностей
Теперь у большинства людей включится череда комментариев-оправданий типа: «я пробовал — не получилось», «не все так просто», «у меня совершенно другая ситуация» и им подобных. Оправдания — мощнейший инструмент людей, которые не добиваются результатов. С помощью оправданий они могут обосновать связь между голодом в Африке и решением начальника не давать ему «заслуженного» повышения. За мою карьеру я видел немало гениальных людей, которые могли обосновать все, лишь бы не приступить к делу. Как у них обстоят дела сейчас? Они по-прежнему занимают место рядовых разработчиков и, вероятно, пробудут там до IT-пенсии.
В НЛП есть понятия фрейминга — рамок, определяющих позиции восприятия. Фактически, это означает, что мы можем рассматривать одну и ту же ситуацию как возможность и как проблему. Исходя из позиции, мы диаметрально меняем наши шаги по решению этого вопроса.
Простой пример: вы только что закончили мучительно-сложный проект. Со стороны пессимиста вы проклинаете этот прецедент в вашей жизни и с опаской смотрите на каждый последующий. При рассмотрении глазами оптимиста данный прецедент заставляет задуматься над «подводными камнями» (другими словами, извлечь опыт) и выработать модель работы с последующими проектами, не опасаясь, но будучи во всеоружии. Вероятно, этому будут способствовать общения с более опытным специалистом, пройдя тренинг или прочитав профильную литературу. Правило № 2: рассматривать новое как возможность, отдавая отчет окупаемости инвестиций.
3. Самостоятельность
Представим, что наш Senior специалист как минимум не пессимист, но как быть в ситуации, когда ты просто специалист (пешка), а над тобой нависает несколько кругов ада, которые ограничивают тебя в правах и действиях (достаточно распространенное суждение)? На самом деле, ограничения существуют только в голове. Продолжая думать в таком контексте, наш Senior неосознанно начинает искать «уютное» и «стабильное» место, какой-нибудь идеальный проект, в котором все построено по книжкам и царит всеобщее счастье и взаимопонимание.
Давайте договоримся: «уют» и «стабильность» — гибкие и относительные понятия, для постоянного наличия которых нужно много действовать самостоятельно, не ожидая мессии со стороны. Оставаясь в зоне комфорта, человек попадает в ловушку времени и плавно перетекает из состояния динамики в состояние стагнации по принципу лягушки в кипящей воде. Я не встречал ни одну личность, вышедшую из идеальной, рафинированной среды. Любой достойный человек, с которым нам хочется общаться и работать, имеет результаты за спиной и тернистый профессиональный путь.
Возьмем, к примеру, «Senior» специалиста, который не построил процессы, а просто попал в благоприятную среду, и поместим его на новый проект, в котором конь не валялся, а клиент в придачу и не хочет, чтобы он вообще там валялся: 95% специалистов не смогут показать в этой ситуации результат на предыдущем уровне (5% оставляем под потенциально сильных и целеустремленных людей). Проблема в отсутствии должных навыков, которыми казалось бы наш специалист должен обладать.
Senior скажет: «Меня ограничивают!», а теперь побудим спросить его самого себя «Что я уже попытался сделать?». Ответ не поразит своей новизной, список сведется максимум к одной или двум попыткам. Скорее всего, наш специалисты поднимал беспокоящий его вопрос, но:
— он был адресован не тому человеку, который в состоянии его решить или помочь;
— информация не была донесена должным (то есть, ясным) образом;
— предложение поступило в сухой форме, без каких-либо предварительных попыток повлиять на ситуацию или желания самого Senior взять ответственность за результат.
С каждой минутой просветления наш Senior будет перемещать ответственность за результат из зоны внешней среды в поле своего влияния. Правило № 3: хороший проект — проект сделанный своими руками.
4. Hard и Soft навыки
Рассмотренное выше — лишь верхушка айсберга в вопросе личностной мотивации специалиста. Итак, представим, что Senior пребывает в боевом настроении и готов свергнуть горы. Есть проект, в котором наш специалист усмотрел возможности для своего профессионального роста и приступает к выполнению персонального плана развития посредством этого проекта. Он становится автономным, ответственным и ориентированным на результат.
В этой иллюзии часто кроется проблема: то, что хорошо в масштабе подсистемы, которой занимается Senior, не коррелируется с качественным результатом всего проекта. Senior-исполнитель, вовлеченный в свою задачу, иногда с академически нездоровым интересом, теряет фокус с общего результата.
Кто всему виной? Конечно, Project Manager, Project Coordinator или Scrum Master. Это их задача — контролировать процесс и обеспечивать эффективное взаимодействие между отделами. «Виноват кто угодно из эшелона менеджмента, только не я — простой и честный трудяга», — думает наш Senior. Давайте рассмотрим роль этих менеджеров. Каждый из вышеперечисленных, может исполнять обязанности без наличия профильных глубинных навыков в технологии. Методологии разработки, такие как RUP, Scrum, Waterfal и другие, служат лишь инструментами, позволяющими абстрагироваться от конечной среды и визуализировать процесс. Исходя из этого, все риски связанные с процессами Risk Management, Change Management, Release Management, Requirements Gathering, Planning, Estimation и остальными требуют вовлеченности и проактивности ключевых специалистов на проекте.
Очередной пример: Senior-специалист, работая над проектом, знает о вероятных последствиях при возникновении конкретных рисков. Он считает свои долгом проинформировать о них и пишет короткое сообщение в общем чате проекта. Долг перед отечеством исполнен — можно спать спокойно. Чем ближе день Икс, тем вероятность возникновения риска выше, и, в конце концов, он «выстреливает». Работа кипит, фаза «ASAP». Ситуацию улаживают, страдает репутация, компания, возможно, терпит издержки в виде штрафов. Никого не интересует, что о проблеме все знали, интересует, почему она не была услышана ключевым составом проекта и не были предприняты действия.
Комментарий из зала: «Так, а почему PM некачественно исполняет свою роль? Мог бы потрудиться и прочитать весь словесный поток в поисках нюансов». Может PM был неправ, а может информация была истолковано некорректно, тем не менее, факт остается фактом: проблема возникла.
Причина в том, что исполнитель, потративший последние 5-7 лет своей жизни, чтобы занять должность Senior, не смог осознать, что с каждой ролью у него появлялись новые обязанности — большей степени не технического, а организационного характера, в связке с персональными навыками. Правило № 4: Senior на 50% состоит из Hard Skills и на 50% из Soft и Management Skills.
5. Качество, проверенное временем
Заседание продолжается, господа присяжные ©. Senior, посредством продолжительного анализа и работы над собой, постигает состояние равновесия со Вселенной и действительно начинает производить результат, который повышает доходность конечного клиента. Такими результатами можно гордиться и на основании реальных достижений этот специалист становится востребованным, в том числе за стенами родной компании.
Вопрос из зала: «Зачем обучать людей, если они уйдут?» Давайте представим, что мы не инвестируем в людей, и они остаются. Картина получится ужасающая. Senior становится реальной ключевой персоной и логично предположить, что в параллели этой активности будет запущен какой-то Knowledge Management процесс.
Есть цели:
— построить автономный механизм, не зависящий от команды, что в целом является задачей любого профессионала;
— обеспечить возможность продвижения на более высокие позиции;
— минимизировать риски для проекта.
К сожалению, негативные штампы управленческой модели до сих пор живут в сердцах многих людей. Таким кадрам сложно принять, что воспитанные, молодые и амбициозные специалисты могут занять их место. Сказывается незрелость личности. В подобных случаях компания и специалист становятся узниками друг друга, и, с течением времени, эксперт плавно превращается в партизана в динамично меняющейся организации. Правило № 5: результат труда должен простоять не один год.
Тема ответственности за общий результат достигает колоссальных масштабов. Но даже если остановиться сейчас и представить Senior специалиста, который соответствует всем этим пунктам, мы увидим не простого исполнителя, а зрелого и ответственного Senior Software Engineer, который может преодолеть любое испытание в виде поставленных перед ним задач. Такого специалиста хотела бы видеть каждая компания и клиент. Реально ли это? Конечно, реально, и я думаю, что практически каждый знает человека из своего окружения, который вышел за рамки собственных ограничений.
Буду рад услышать ваши конструктивные комментарии, всем хорошего дня!
P.S. Спасибо Михаилу Сидоренко и Олесе Ковалевой за подготовку иллюстраций.
software engineer — с английского на русский
software engineer — UK US noun [C] IT ► someone whose job is to create computer programs … Financial and business terms
Software engineer — A software engineer is an engineer who applies the principles of software engineering to the design, development, testing, and evaluation of the software and systems that make computers or anything containing software, such as computer chips,… … Wikipedia
software engineer — noun a person who designs and writes and tests computer programs • Syn: ↑programmer, ↑computer programmer, ↑coder • Derivationally related forms: ↑code (for: ↑coder), ↑program ( … Useful english dictionary
software engineer — programinės įrangos inžinierius statusas T sritis profesijos apibrėžtis Inžinierius, analizuojantis informatikos panaudojimo poreikius ir kuriantis programoms ir jų paketams tinkančias kompiuterines kalbas. Be to, jis kuria ir tobulina programas … Inžinieriai, technikai ir technologai. Trikalbis aiškinamasis žodynėlis
software engineer — noun One who designs and implements software solutions … Wiktionary
Consulting software engineer — In the field of software engineering, the term consulting software engineer denotes a person who represents the customer s interests with, e.g., the project team actually building a software system, application or software product. The term… … Wikipedia
Dave Cutler (software engineer) — Infobox Person name = Dave Cutler birth date = birth date and age|1942|3|13 birth place = Lansing, Michigan, USA occupation = Software engineerDavid Neil Cutler, Sr. (born March 13, 1942) is a noted American software engineer, designer and… … Wikipedia
Michael Kay (software engineer) — Michael Kay Born October 11, 1951 (1951 10 11) (age 60) Hannover … Wikipedia
Michael Perry (software engineer) — Michael D. Perry, is a United States software engineer. He is the founder of InterCommerce Corporation. Originally a programmer and software designer, he founded Progressive Computer Services, Inc., which published utility software for the IBM PC … Wikipedia
Michael Barr (software engineer) — Michael Barr is a software engineer, consultant, and author, specializing in embedded systems.[1] He is a past Editor in Chief of Embedded Systems Design magazine[2] and author of many articles. Barr began his career working as an embedded… … Wikipedia
chief software engineer — vyriausiasis programinės įrangos inžinierius statusas T sritis profesijos apibrėžtis Programinės įrangos inžinierius, užimantis pareigas, reikalaujančias labai aukštos kvalifikacijos, ir turintis ilgametę praktinio darbo patirtį. atitikmenys:… … Inžinieriai, technikai ir technologai. Trikalbis aiškinamasis žodynėlis
Инженер-программист — Software engineer — qaz.wiki
Практик программной инженерии
Инженер-программист, пишущий код Java
Инженер — программист это человек , который применяет принципы программной инженерии для проектирования, разработки, обслуживания, тестирования и оценки компьютерного программного обеспечения .
До середины 1970-х годов программисты обычно называли себя компьютерными учеными , программистами или разработчиками программного обеспечения , независимо от их реальной работы. Многие люди предпочитают называть себя разработчиком программного обеспечения и программистом , потому что большинство согласны с тем, что означают эти термины, в то время как точное значение слова « инженер-программист» все еще обсуждается.
Образование
Половина всех практикующих сегодня имеет ученые степени в области компьютерных наук , информационных систем или информационных технологий . Небольшое, но постоянно растущее число практиков имеют степени в области разработки программного обеспечения. В 1987 году кафедра вычислительной техники в Имперском колледже Лондона представила первые три года разработки программного обеспечения степень бакалавра в Великобритании и мире; в следующем году Университет Шеффилда учредил аналогичную программу. В 1996 году Рочестерский технологический институт установил степень программы первого по разработке программного обеспечения бакалавра в Соединенных Штатах, однако, она не не получила ABET аккредитацию до 2003 года, в то же время , как Rice University , Университета Кларксона , Милуоки школа инженерии и Университета штата Миссисипи получил их. В 1997 году технологический колледж PSG в Коимбаторе, Индия, первым начал получать пятилетнюю интегрированную степень магистра наук в области разработки программного обеспечения.
С тех пор во многих университетах были учреждены степени бакалавра программной инженерии. Стандартная международная учебная программа для студентов программных инженеров, SE2004 , была определена руководящим комитетом в период с 2001 по 2004 год при финансовой поддержке Ассоциации вычислительной техники и IEEE Computer Society . По состоянию на 2004 год в США около 50 университетов предлагали степени в области разработки программного обеспечения, в которых преподаются как компьютерные науки, так и инженерные принципы и методы. Первая степень магистра программной инженерии была учреждена в Сиэтлском университете в 1979 году. С тех пор степени магистра программной инженерии стали доступны во многих других университетах. Точно так же в Канаде Совет по аккредитации инженеров Канады (CEAB) Канадского совета профессиональных инженеров признал несколько программ разработки программного обеспечения.
В 1998 году Высшая военно-морская школа США (NPS) учредила первую в мире докторскую программу по программной инженерии. Кроме того, появилось множество онлайн-ученых степеней в области программной инженерии, таких как степень магистра наук в области разработки программного обеспечения (MSE), предлагаемая на факультете компьютерных наук и инженерии Калифорнийского государственного университета в Фуллертоне . Стив МакКоннелл считает, что, поскольку большинство университетов преподают информатику, а не разработку программного обеспечения, настоящих инженеров-программистов не хватает. IEEE поручил университету ETS (École de technologie supérieure) и UQAM (Université du Québec à Montréal) разработать свод знаний по программной инженерии ( SWEBOK ), который стал стандартом ISO, описывающим совокупность знаний, охватываемых инженером-программистом.
Другие степени
В бизнесе некоторые практикующие специалисты по программной инженерии имеют дипломы CS или Software Engineering . Что касается встроенных систем , некоторые из них имеют степень в области электротехники , электроники , информатики с акцентом на «встроенные системы» или компьютерную инженерию , поскольку встроенное программное обеспечение часто требует детального понимания оборудования. В области медицинского программного обеспечения практикующие врачи могут иметь степени в области медицинской информатики , общей медицины или биологии.
У некоторых практиков есть степени в области математики , естественных наук , инженерии или технологии ( STEM ). У некоторых есть философия (в частности, логика) или другие нетехнические степени. Например, Барри Бём получил степень по математике. А у других нет ученых степеней.
Профессия
Трудоустройство
Большинство инженеров-программистов работают в качестве сотрудников или подрядчиков. Инженеры-программисты работают с предприятиями , государственными учреждениями (гражданскими или военными) и некоммерческими организациями. Некоторые инженеры-программисты работают самостоятельно в качестве инженеров-консультантов. В некоторых организациях есть специалисты для выполнения всех задач в процессе разработки программного обеспечения . В других организациях инженеры-программисты разделяют на основе конкретных задач разработки программного обеспечения. Эти компании иногда нанимают стажеров (возможно, студентов университетов или колледжей) на короткий срок. В крупных проектах инженеры-программисты отличаются от людей, которые специализируются только на одной роли, потому что они принимают участие как в разработке, так и в программировании проекта. В небольших проектах инженеры-программисты обычно выполняют несколько или все роли одновременно. Специализации включают:
Влияние глобализации
Большинство студентов в развитых странах избегают получения дипломов, связанных с разработкой программного обеспечения, из-за страха перед оффшорным аутсорсингом (импорт программных продуктов или услуг из других стран) и из-за того, что их вытеснят иностранные визовые работники . Хотя государственная статистика в настоящее время не показывает угрозы самой программной инженерии; связанная с этим карьера, компьютерное программирование , похоже, действительно пострадала. Часто ожидается, что человек сначала будет программистом, а затем станет инженером-программистом. Таким образом, карьера в области разработки программного обеспечения может быть трудной, особенно во время рецессий.
Некоторые консультанты по вопросам карьеры предлагают студентам также сосредоточиться на «человеческих навыках» и бизнес-навыках, а не на чисто технических навыках, потому что такие «мягкие навыки» якобы труднее передать в офшор. Разумное владение навыками чтения, письма и разговорной речи по-английски требует большинство работодателей. Похоже, что именно квазиуправленческие аспекты программной инженерии удерживают ее от воздействия глобализации.
Призы
В области разработки программного обеспечения есть несколько призов:
- В наградах Codie является ежегодной наградой , выданной программного обеспечения и информационной промышленность ассоциации передового опыта в области разработки программного обеспечения в индустрии программного обеспечения.
- Jolt Awards — это награда в индустрии программного обеспечения.
- Премия Стивенса — это награда за разработку программного обеспечения, вручаемую памяти Уэйна Стивенса.
Использование звания «Инженер»
Происхождение термина
Маргарет Гамильтон продвигала термин «программная инженерия» во время своей работы над программой Apollo . Термин «инженерия» использовался для обозначения того, что к работе следует относиться так же серьезно, как и к другим вкладам в развитие технологий. Гамильтон подробно описывает использование этого термина:
Когда я впервые придумал этот термин, никто раньше о нем не слышал, по крайней мере, в нашем мире. Долгое время это была постоянная шутка. Им нравилось подшучивать над моими радикальными идеями. Это был памятный день, когда один из самых уважаемых гуру аппаратного обеспечения объяснил всем на встрече, что он согласен со мной, что процесс создания программного обеспечения также следует рассматривать как инженерную дисциплину, как и в случае с аппаратным обеспечением. Не из-за того, что он принял новый «термин» как таковой, а потому, что мы заслужили его и признание других присутствующих в зале как самостоятельных инженеров.
Пригодность термина
Можно утверждать, что программная инженерия подразумевает определенный уровень академической подготовки, профессиональной дисциплины, соблюдения формальных процессов и особенно юридической ответственности, которые часто не применяются в случаях разработки программного обеспечения. Общая аналогия заключается в том, что работа в строительстве не делает человека инженером-строителем , а написание кода не делает человека инженером-программистом. Более того, поскольку вычисления не используют методы математической физики, общие для всех традиционных инженерных дисциплин, более уместно называть тех, кто занимается этим занятием, разработчиками программного обеспечения или аналогичными.
В 1978 году компьютерный ученый Э. У. Дейкстра написал в статье, что использование термина « инженер-программист» бесполезно, поскольку это неуместная аналогия:
Существование простого термина послужило основой для ряда крайне поверхностных — и ложных — аналогий, которые просто запутывают проблему … Компьютеры — такие исключительные устройства, что есть веские основания полагать, что большинство аналогий с другими дисциплинами слишком мелкие, чтобы иметь какое-либо положительное значение, даже настолько мелкие, что только сбивают с толку.
В каждое из последних нескольких десятилетий, по крайней мере, один радикально новый подход входил в мейнстрим разработки программного обеспечения (например, структурированное программирование , объектная ориентация ), подразумевая, что область все еще меняется слишком быстро, чтобы считаться инженерной дисциплиной. Сторонники утверждают, что якобы радикальные новые подходы являются скорее эволюционными, чем революционными.
Отдельные комментаторы резко расходятся во мнениях относительно того, как определять программную инженерию или ее легитимность как инженерной дисциплины. Дэвид Парнас сказал, что программная инженерия на самом деле является формой инженерии. Стив МакКоннелл сказал, что это не так, но должно быть. Дональд Кнут сказал, что программирование — это искусство и наука. Эдсгер В. Дейкстра заявил, что термины « программная инженерия» и « инженер- программист» использовались неправильно и должны считаться вредными, особенно в Соединенных Штатах .
Нормативная классификация
Канада
В Канаде использование названия должности « инженер» контролируется в каждой провинции саморегулируемыми профессиональными инженерными организациями, которым также поручено обеспечивать соблюдение регулирующего законодательства. Цель состоит в том, чтобы любой человек, выступающий в качестве инженера, прошел проверку на предмет получения определенного аккредитованного уровня образования, а его профессиональная деятельность подлежит этическому кодексу и проверке со стороны коллег. Также незаконно использовать звание Инженер в Канаде, если физическое лицо не имеет лицензии.
В Онтарио Закон о профессиональных инженерах устанавливает минимальный уровень образования в виде трехлетнего диплома в области технологий Колледжа прикладных искусств и технологий или степени в соответствующей области науки. Тем не менее, бакалавриат технических специальностей и все другие соискатели не могут использовать звание инженера до тех пор, пока они не завершат минимальный четырехлетний опыт работы в дополнение к сдаче экзамена по профессиональной практике (PPE). Если кандидат не имеет степени бакалавра инженера, ему, возможно, придется сдать подтверждающий практический экзамен или специальную программу экзаменов, если комитет не откажется от требований к экзамену.
ИТ-специалистам, имеющим ученые степени в других областях (таких как информатика или информационные системы), запрещено использовать звание « инженер-программист» или формулировку « инженер-программист» в заголовке, в зависимости от их провинции или территории проживания.
В некоторых случаях в суд передавались дела о незаконном использовании защищенного титула Engineer .
Европа
Во всей Европе инженеры с соответствующей квалификацией могут получить профессиональную квалификацию европейского инженера .
Франция
Во Франции термин ingénieur (инженер) не является охраняемым титулом и может использоваться кем угодно, даже теми, кто не имеет ученой степени.
Тем не менее, звание Ingénieur Diplomé (дипломированный инженер) является официальным ученым званием, защищаемым государством и связанным с Diplôme d’Ingénieur , одной из самых престижных академических степеней во Франции.
Исландия
Использование титула tölvunarfræðingur ( ученый-компьютерщик ) защищено законом Исландии. Программная инженерия преподается на факультетах компьютерных наук в исландских университетах. Согласно исландскому законодательству, при присвоении ученой степени за границей необходимо получить разрешение министра промышленности до использования титула. Звание присуждается тем, кто получил степень бакалавра компьютерных наук в признанном высшем учебном заведении.
Новая Зеландия
В Новой Зеландии Институт профессиональных инженеров Новой Зеландии (IPENZ), который лицензирует и регулирует деятельность дипломированных инженеров страны (CPEng), признает программную инженерию законной отраслью профессиональной инженерии и принимает заявки инженеров-программистов для получения дипломированного статуса при условии, что они имеют высшее образование по утвержденным предметам. Программная инженерия включена, тогда как информатика обычно не входит.
Соединенные Штаты
Бюро статистики труда (BLS) классифицирует инженеры компьютерного программного обеспечения в качестве подкатегории «компьютерных специалистов», наряду с профессиями, как компьютерные ученые, программист, администратор базы данных и сетевым администратор. BLS классифицирует все другие инженерные дисциплины, включая инженеров по компьютерному оборудованию, как инженеров .
Многие штаты запрещают лицам, не имеющим лицензии, называть себя инженерами или указывать отрасли или специальности, на которые не распространяется действие лицензионных актов. Во многих штатах звание инженера зарезервировано для лиц с лицензией профессионального инженера, указывающей на то, что они продемонстрировали минимальный уровень компетенции посредством аккредитованного инженерного образования, квалифицированного инженерного опыта и экзаменов инженерного совета.
В апреле 2013 года Национальный совет экспертов по проектированию и геодезии (NCEES) начал предлагать экзамен на профессионального инженера (PE) по программной инженерии. Экзамен был разработан совместно с IEEE Computer Society . NCEES завершил экзамен в апреле 2019 года из-за отсутствия участников.
Смотрите также
Ссылки
software engineer — Перевод на русский — примеры английский
На основании Вашего запроса эти примеры могут содержать грубую лексику.
На основании Вашего запроса эти примеры могут содержать разговорную лексику.
Thomas Knoll is an American software engineer who created Adobe Photoshop.
Томас Нолл — программист из США, создавший программу Adobe Photoshop.
I’m actually an unemployed software engineer.
I’m also a software engineer, and I make lots of different kinds of art with the computer.
Software engineer Alexey Stomakhin referred to snow as «an important character in the film,» therefore it attracted special attention from the filmmakers.
You are a software engineer who specializes in remote operating systems.
1991-1992 — software engineer of PE «Nyva», Zhytomyr.
Matthew Cutts (born 1972 or 1973) is an American software engineer.
A game programmer is a software engineer who primarily develops video games or related software (such as game development tools).
Игровой программист — это инженер-программист, который в основном разрабатывает компьютерные игры или относящееся к ним программное обеспечение (такое как инструменты разработки игр).
Jay Ryan Freeman (born November 27, 1981) is an American businessman and software engineer.
Джей Фримен (родился 27 ноября 1981) — американский бизнесмен и программист.
1988-1990 — software engineer at the Zhytomyr Regional department of technological connection.
My name is Michael Hasti, and I am a senior software engineer for Lazarum Systems.
Senator Ted Paulson, software engineer Brian Willingham, and Chicago Star-Herald reporter David Alcott.
Сенатора Тэда Полсона, программиста Брайана Уиллингэма, и Дэвида Алькотта, репортера чикагского «Стар-Геральд».
In 2002, software engineer Alan Russell moves into a new house with his wife Marie, 10-year-old son Tim, and 12-year-old daughter Kaylie.
В 2002 году инженер-программист Алан Рассел переезжает в новый дом с женой Мари, 10-летним сыном Тимом и 12-летней дочерью Кейли.
That’s the same last name as the software engineer who committed suicide.
A being… that is willing to kill as many people as it takes to keep its own existence secret and its power intact, like your software engineer, Charles Wynn.
Некто… кто хочет убить столько людей, сколько потребуется чтобы сохранить и свое существование в тайне, а власть неприкосновенной. вроде вашего программиста Чарльза Винна.
So if you’re a software engineer and you’re trying to think about whether to add some new functionality to your program, it’s important to think about how much it costs.
Так, если вы — программист, и вы думаете, стоит ли добавить в вашу программу новую функцию, важно подумать, сколько это будет стоить.
You’re a software engineer?
Harold Martin, freelance software engineer.
From 1993 to 1994, he was promoted a software engineer of the first category, a leading engineer of the Svitoch Research and Production Enterprise Limited Liability Company.
С 1993 по 1994 год — инженер-программист 1 категории, ведущий инженер Общества с ограниченной ответственностью Научно-производственное предприятие «Свиточ».
Spybot 2.0: Patrick Kolla, our chief software engineer, has started a series of small blog posts on features of Spybot-S&D 2.0, starting with a blog post about modularization, with more entries on various other topics already waiting in queue.
Spybot 2.0: Патрик Колла (Patrick Kolla), наш ведущий программист начал публиковать в блоге серию небольших заметок о возможностях будущей версии Spybot-S&D 2.0. Начало серии — пост про модуляризацию, множество других заметок еще ждут своей очереди.
4 причины стать Data Engineer / Блог компании New Professions Lab / Хабр
Привет, Хабр! На данный момент в Data Science образовался огромный перекос в сторону data scientist-ов, об этой профессии сейчас знают даже те, кто никак не связан с IT, а новые вакансии появляются ежедневно. В свою очередь data engineer-ы не получают того внимания, которое бы соответствовало их важности для компании, поэтому в сегодняшнем посте мы бы хотели исправить эту несправедливость и объяснить, почему разработчикам и администраторам стоит немедленно начинать изучать Kafka и Spark и строить свой первый пайплайн.
В скором времени ни одна компания не сможет обойтись без Data Engineer
Давайте рассмотрим типичный рабочий день data scientist-а:
Получается, что около 80% своего времени data scientist тратит на сбор данных, их предобработку и очистку — процессы, которые напрямую не связаны с главной его обязанностью: поиском инсайтов и паттернов в данных. Конечно, подготовка данных требует высшего уровня мастерства, но это не data science, это не то, зачем тысячи людей сегодня стремятся попасть в эту отрасль.
Именно поэтому компаниям следует освобождать data scientist-ов от наименее приятной для них части работы и делегировать предобработку данных data инженеру, наличие которого в data science команде, во-первых, позволит data scientist-ам заниматься тем, что они по-настоящему любят — построением моделей, что в свою очередь предотвратит их потенциальный уход из компании и привлечет наиболее талантливых. А во-вторых, увеличится эффективность data scientist-ов, поскольку они будут проводить в разы больше времени в поисках ценных инсайтов, что естественно принесет пользу бизнесу.
Также не стоит забывать и о принципе garbage in — garbage out: если моделям на вход подаются некачественные данные, то бессмысленно ждать от них адекватного результата. Следовательно, для того, чтобы максимизировать эффективность data science отдела компании необходимо нанимать инженеров данных, которые, в отличии от data scientist-ов, специализируются на организации процесса сбора, очистки и предобработки данных.
Вот что по этому поводу думает Big Data Engineer в Mail.ru Group, Антон Пилипенко: «На текущий момент большинство компаний научились хранить большое количество данных и строить на их основе разного рода модели. Однако, зачастую, вопросам эффективного хранения и обработки накопленных данных не уделяют достаточного внимания. Как следствие постоянно то тут, то там возникают вопросы о сайзинге, масштабировании приложений, потоковой и near-realtime обработке. Как показывает опыт, деление на Data Science и Data Engineer специалистов появилось не на пустом месте. Data Engineer — в первую очередь инженер, который хорошо понимает, что и зачем он делает, как оно устроено „под капотом“ и какая архитектура „не взлетит“.
Data Engineer-у легче обратить на себя внимание работодателя
Ни для кого не секрет, что сегодня профессия data scientist становится все более и более популярной, тысячи студентов по всему миру хотят получить работу в данной отрасли, а многие зрелые специалисты из других областей меняют свою специализацию в пользу data science. Причина проста — высокие зарплаты, решение аналитических задач и растущий неудовлетворенный спрос на аналитиков данных. Все это может вылиться в большое количество неквалифицированных кадров, которые пришли в трендовую область, не обладая достаточными знаниями программирования и статистики, при этом аналитикам, действительно заинтересованным в построении моделей, будет сложно выделиться среди этой массы.
Теперь с этой же точки зрения взглянем на data engineer-ов, у которых ситуация обратная: с первого взгляда обязанности data engineer-а выглядят менее интересными, чем у data scientist-а (что естественно не так), поэтому сотни резюме не летят на почту работодателям, находящимся в поисках хорошего инженера данных, хотя зарплаты data engineer-ов и data scientist-ов находятся на примерно одном уровне (90 и 91 тыс. долларов в год соответственно в США). Людям нужно видеть результат своей работы, а лучше всего — удовлетворенность клиента и бизнеса. Легче всего получить удовольствие от своей работы, узнав о сотнях новых клиентов за счет построения модели по созданию персонализированных предложений, чем от очищенных данных, поэтому большинству трудно оценить значимость data engineer-ов, которые не меньше data scientist-ов вносят вклад в итоговый результат.
Data Engineer-ы практически незаменимы в компании
Сегодня почти повсеместно все чаще возникает вопрос о том, будут ли в скором времени те или иные профессии заменены искусственным интеллектом. Касаемо data engineering многие высказывают мнение о том, что процесс сбора, обработки и очистки данных является рутинным и может быть легко автоматизирован, поэтому профессия является бесперспективной. Однако это мнение неверно, поскольку подготовка данных к анализу является настоящим искусством, и подход, который сработал с одним датасетом, может совершенно не подойти другому набору данных. Машины пока не способны самостоятельно подстраиваться под данные, в ближайшем будущем их настройкой все еще будет заниматься человек — data engineer.
Более того, в обязанности data engineer-а входит еще более комплексная, чем предобработка данных, задача по построению стабильных пайплайнов, делающих данные доступными для всех пользователей внутри компании. Лишь благодаря инженеру данных data scientist-ы обеспечены качественными датасетами в удобном им виде и в правильное время, в этом и заключается незаменимость data engineer-а. То, как сильно он влияет на бизнес-процессы и успех компании можно увидеть невооруженным взглядом.
С этой точки зрения согласны и профессионалы: Senior Software Engineer в Agoda, Артем Москвин говорит: „Data engineer – это тот, кто делает всю ту бигдату, про которую вы слышали, возможной. Работу с данными можно условно разделить на 2 части: инжиниринг и исследования. Однако для того, чтобы сделать возможной вторую, нужно хорошо поработать над первой“, а по мнению Data Engineer-а в E-Contenta, Андрея Сутугина: „В мире анализа данных не все так радужно и красиво, как может показаться после решения “титаника» на kaggle. Для того, чтобы приступить непосредственно к самому анализу, необходимо проделать титаническую работу, но для того, чтобы «поставить на поток» сбор и трансформацию данных, требуется еще больше усилий. К сожалению, в мире «big data» нет «серебряных пуль», и обилие инструментов и фреймворков может вскружить голову”.
Data Engineering не требует глубокого знания статистики и теории вероятностей
Многие люди, которые хотят построить карьеру в IT, после 1-2 курсов технических университетов с зубодробительными курсами математического анализа и теории вероятностей опускают руки, считая, что без продвинутого математического бэкграунда они не смогут найти работу, даже несмотря на то, что пишут неплохой код. В связи с этим data engineering — это отличная возможность начать карьеру в сфере работы с данными для людей, которые имеют лишь базовое представление о машинном обучении, но при этом интересуются разработкой баз данных и их управлением. Таким образом, такая работа, конечно, больше подойдет software engineer-ам, архитекторам и администраторам баз данных.
По мнению Николая Маркова, Senior Data Science Engineer-а в Aligned Research Group LLC: «Зачем заниматься Data Engineering-ом? Я считаю, что это логичный путь в сферу анализа данных для людей, которые умеют программировать и имеют опыт работы в индустрии разработки. Дело в том, что люди крайне редко бывают глубоко заинтересованы и в том, и в другом — одновременно серьезное знание математики и глубокий computer science в одном человеке не встречается практически никогда. Поэтому давайте оставим математикам то, что они делают лучше всего — исследования, модели и графики, а сами подумаем, что нужно сделать для того, чтобы из аналитической идеи получился готовый работающий продукт?».
Newprolab 13 ноября запускает программу Data Engineer, на которой участники в течение 6-ти недель будут создавать стабильные пайплайны обработки данных от сбора до их визуализации, изучать и оттачивать навыки работы со следующими инструментами: Divolte, Kafka, ELK, Spark, Luigi, Sqoop, Druid, ClickHouse, Superset, Storm, которые будут объединять в один большой и стабильный пайплайн. Подробнее о программе Data Engineer.
Чем занимается инженер-программист? — CareerExplorer
Что такое инженер-программист?
Программная инженерия — это отрасль информатики, которая включает в себя разработку и создание программного обеспечения для компьютерных систем и прикладного программного обеспечения. Программное обеспечение компьютерных систем состоит из программ, которые включают вычислительные утилиты и операционные системы. Прикладное программное обеспечение состоит из программ, ориентированных на пользователя, включая веб-браузеры, программы баз данных и т. Д.
В настоящее время в разработку программного обеспечения вкладываются большие средства из-за растущей зависимости от мобильных технологий, стартапов, поддерживаемых венчурным капиталом, растущей сложности технологий и развивающихся отраслей.Спросу на квалифицированных и квалифицированных инженеров-программистов нет конца. Этот спрос усиливается меняющимся экономическим ландшафтом и потребностью в технологических решениях. Благодаря миллиардам физических устройств по всему миру, которые теперь подключены к Интернету и собирают и обмениваются данными, все отрасли быстро становятся отраслями, ориентированными на технологии.
Инженеры-программисты обладают обширными знаниями языков программирования, разработки программного обеспечения и компьютерных операционных систем, и они применяют инженерные принципы при создании программного обеспечения.Применяя эти инженерные принципы к каждому этапу процесса разработки, от анализа требований до процесса разработки программного обеспечения, они могут создавать индивидуальные системы для отдельных клиентов. Подобно тому, как инженер-строитель должен убедиться, что мост имеет прочную основу, инженер-программист также начнет с тщательного изучения требований и систематически проработает процесс разработки.
Чем занимается инженер-программист?
Инженеры-программисты пользуются большим спросом.Разработчики, которые живут в районах с высоким спросом, часто получают много запросов в месяц от рекрутеров и хедхантеров. Инженер-программист применяет математический анализ и принципы информатики для проектирования и разработки компьютерного программного обеспечения.
Существует множество типов программного обеспечения, которое может разработать инженер-программист, например, операционные системы, компьютерные игры, промежуточное программное обеспечение, бизнес-приложения и системы управления сетью. Технологические изменения и новые области специализации позволяют этой профессии быстро развиваться.
При работе с клиентом инженер-программист обычно анализирует потребности клиента, а затем проектирует, тестирует и разрабатывает компьютерное программное обеспечение для удовлетворения этих потребностей. Они являются экспертами в вычислительных системах, структуре программного обеспечения и признают ограничения существующего оборудования. Процесс сложный и запутанный, поэтому используются диаграммы, блок-схемы и создание алгоритмов, сообщающих компьютеру, что делать. Преобразование этих инструкций в компьютерный язык (кодирование / программирование) обычно является обязанностью компьютерного программиста.
Программные инженеры также должны обладать навыками межличностного общения и уметь эффективно общаться с пользователями, чтобы обучать, тестировать и отлаживать программное обеспечение на всем пути к конечному продукту. Их часто привлекают с ранних этапов планирования программного обеспечения до этапов тестирования, разработки, обучения и поддержки.
Программных инженеров можно разделить на две категории:
Инженеры по приложениям
Инженеры по приложениям создают или адаптируют приложения для предприятий и организаций, анализируя потребности конечных пользователей.Они будут проектировать, создавать, устанавливать и поддерживать эти приложения или программы.
Системные инженеры
Системные инженеры координируют создание, обслуживание и рост компьютерных систем предприятия или организации. Они координируют потребности каждого отдела, предлагают техническое направление и настраивают любые сети, связывающие компьютеры с компанией.
Инженер-программист — отличный выбор карьеры для человека, который исключительно хорошо владеет как левым, так и правым полушарием (аналитические навыки, а также навыки решения проблем).Инженеры-программисты инстинктивно решают проблемы, умеют работать с другими и сосредоточены на доведении проблем до их успешного завершения.
Инженер-программист должен хорошо разбираться в:
— Программирование и кодирование
— Основы информатики
— Дизайн и архитектура
— Алгоритмы и структуры данных
— Анализ информации
— Программное обеспечение для отладки
— Программное обеспечение для тестирования
Каково рабочее место инженера-программиста?
Благодаря такому беспрецедентному росту во множестве отраслей инженеры-программисты могут делать карьеру в любом количестве областей, включая технологии, здравоохранение, автомобилестроение, экологически чистую энергию, дистанционное зондирование, аэронавтику, правительство, некоммерческие организации и финансы.
Инженеры-программисты могут работать в качестве сотрудников или подрядчиков. Обычно они работают в комфортных условиях, но иногда это тяжелая работа, требующая долгих часов и сжатых сроков.
.
Чем занимается инженер-программист? (с иллюстрациями)
Инженер-программист является экспертом в теории вычислительных систем, а также проектирует и поддерживает программное обеспечение. Эти инженеры обычно делятся на две категории: инженер-программист компьютерных приложений и инженер-программист компьютерных систем. Обычно инженер-программист работает над множеством проектов, включая производство, промышленность, правительство и образовательные учреждения. Эти профессионалы часто аналитичны и очень внимательны к деталям и обычно имеют высшее образование в области компьютерного программного обеспечения или программной инженерии.Инженеру-программисту необходимо постоянно идти в ногу со своей профессией по мере появления новых языков программирования и технологий.
Инженер-программист может разрабатывать приложения для планшетов.
Получив проект, инженер-программист анализирует ситуацию и использует свои знания в области информатики, инженерии и математики для выполнения задачи.Обычно человек на этой должности будет использовать системные блок-схемы, подробно описывающие, как данные будут проходить через компьютер. После создания программы инженер-программист протестирует ее, чтобы убедиться в отсутствии ошибок в данных.
Компьютерные инженеры могут работать над проектами в группе.
Инженер-программист компьютерных приложений создает прикладные программы, которые имеют конкретное назначение. Обычно инженер-программист компьютерных приложений использует определенный язык программирования, такой как C, C ++ и Java. Этот тип инженеров может работать над проектом самостоятельно или в группах.
Инженеры по компьютерному программному обеспечению могут испытывать напряжение глаз и усталость из-за длительного сидения перед компьютером.
Специалист, который является инженером-программистом компьютерных систем, обычно отвечает за разработку программного обеспечения, необходимого для правильной работы компьютерной системы. Инженер-программист компьютерных систем также помогает организовать требования к компьютерам для различных отделов организации и помогает сделать связь между отделами максимально гладкой.Этот тип компьютерных инженеров-программистов обеспечивает безопасность систем, которые они создают.
Инженеры-программисты тестируют компьютерные программы перед тем, как они будут проданы широкой публике.
Рабочая среда инженера-программиста обычно состоит из офиса, лаборатории или другого рабочего места, содержащего компьютерное оборудование.Как правило, инженер-программист будет работать 40 часов в неделю, но может работать и дольше, если он не успевает уложиться в срок. Некоторые инженеры-программисты, работающие в консалтинговой компании, будут ездить к клиентам, иногда за границу. Инженер-программист проводит много времени за экраном компьютера, и у него может развиться напряжение глаз или синдром запястного канала.
В некоторых случаях человеку может потребоваться только двухлетняя степень или сертификат, чтобы стать инженером-программистом, но работодатели часто предпочитают степень бакалавра в области информатики, разработки программного обеспечения, компьютерных информационных систем или математики.Большинство инженеров-программистов будут иметь национальную сертификацию по основным компьютерным языкам. Для более технических должностей может потребоваться ученая степень.
Чтобы не отставать от постоянно меняющейся профессии, инженер-программист обычно проходит курсы повышения квалификации и семинары по повышению квалификации.Профессия требует смекалки и сильных навыков решения проблем. По мере того, как инженер-программист приобретает больше опыта, он может перейти к руководителю проекта или менеджеру информационных систем.
Инженер-программист проводит так много времени перед компьютером, что у него может развиться синдром запястного канала..
Что такое программная инженерия? Определение, основы, характеристики
- Home
Тестирование
- Back
- Agile Testing
- BugZilla
- Cucumber
- Тестирование базы данных
- Jmeter
- Jmeter Testing
JUnit
- LoadRunner
- Ручное тестирование
- Мобильное тестирование
- Mantis
- Почтальон
- QTP
- Назад
- Центр качества (ALM)
- RPA
- SAP Testing
- RPA
- TestLink
SAP
- Назад
- ABAP
900 03 APO
- Новичок
- Basis
- BODS
- BI
- BPC
- CO
- Назад
- CRM
- Crystal Reports
- MMO
HAN
- Назад
- PI / PO
- PP
- SD
- SAPUI5
- Безопасность
- Менеджер решений
- Successfactors
- SAP Tutorials
- Назад
- Java
- JSP
- Kotlin
- Linux
- Linux
- Kotlin
- Linux
- Perl
js
- Назад
- PHP
- PL / SQL
- PostgreSQL
- Python
- ReactJS
- Ruby & Rails
- Scala
- SQL
- SQL
- UML
- VB.Net
- VBScript
- Веб-службы
- WPF
000
000
0003 SQL
000
0003 SQL
000
Обязательно учите!
- Назад
- Бухгалтерский учет
- Алгоритмы
- Android
- Блокчейн
- Business Analyst
- Создание веб-сайта
- CCNA
- Облачные вычисления
- 00030003 COBOL 9000 Compiler
- 9000 Встроенные системы
- 00030002 9000 Compiler 9000
- Ethical Hacking
- Учебники по Excel
- Программирование на Go
- IoT
- ITIL
- Jenkins
- MIS
- Сеть
- Операционная система
- Назад
- Управление проектами Обзоры
- Salesforce
- SEO
- Разработка программного обеспечения
- VB A
Big Data
- Назад
- AWS
- BigData
- Cassandra
- Cognos
- Хранилище данных
- HBOps
- HBOps
- MicroStrategy
0003
0003
0003
.
Как стать инженером-программистом в 2020 году (без диплома CS)
Несмотря на популярные мифы, вы можете стать разработчиком программного обеспечения, не имея высшего образования.
Независимо от того, возвращаетесь ли вы на работу или застряли в карьере, которая вам не нравится (администрация, операционная деятельность, банковское дело и т. Д.), Стать разработчиком программного обеспечения вполне в ваших силах, если вы готовы приложить все усилия. Работа.
Согласно US News, средняя зарплата разработчиков программного обеспечения составляет 103 620 долларов в год, а уровень безработицы — 1.6%, что делает эту карьеру одной из самых прибыльных. Кроме того, эта профессия обеспечивает баланс работы и личной жизни выше среднего.
Более того, Бюро статистики труда прогнозирует, что в период с 2018 по 28 год темпы роста составят 21%. Между тем средний рост по всем профессиям составляет 5 процентов. Это означает 284 100 вакансий.
И знаете что? Несмотря на позитивный прогноз и изобилие возможностей, только 3% выпускников колледжей изучают информатику и информатику.Как вы можете видеть на изображении ниже, в 2020 году будет 1,4 миллиона вычислительных рабочих мест по сравнению с 400 000 студентов CS.
Вы понимаете: навыки программирования могут обеспечить большую финансовую безопасность, а также гибкость в повседневной работе. Но как получить эти навыки, не просидев четыре года на курсах CS? И, что еще более важно, как сделать одну из этих востребованных и высокооплачиваемых карьер?
Хорошие новости: это вполне возможно! Это 11-шаговое руководство приоткроет завесу и покажет вам, как стать инженером-программистом без диплома CS.Так что читайте дальше!
Раскрытие информации: я горжусь тем, что являюсь партнером некоторых ресурсов, упомянутых в этой статье. Если вы купите продукт по моим ссылкам на этой странице, я могу получить небольшую комиссию за ваше направление. Спасибо!
Что такое инженер-программист?
По определению, инженер-программист — это тот, кто пишет код программных продуктов (видеоигры, операционные системы, приложения, функции, роботы и т. Д.).
Есть ли разница между инженером-программистом и разработчиком программного обеспечения? На самом деле, нет.Эти термины в значительной степени взаимозаменяемы, и компании склонны рассматривать их как одно и то же. Когда вы ищете работу по разработке программного обеспечения, обязательно ищите и просматривайте объявления как «инженер-программист», так и «разработчик программного обеспечения», чтобы получить максимальные результаты.
Как стать инженером-программистом без высшего образования
Перед тем, как начать, поймите, что следующие шаги предназначены для тех, кто ищет постоянную работу (я сокращенно FTJ) в качестве разработчика программного обеспечения.
Они будут менее полезны человеку, который:
Но все это отличные вещи, к которым нужно стремиться, и остальная часть блога также полна контента на эти темы!
Теперь давайте рассмотрим 11 шагов, как стать инженером-программистом.
Шаг № 1. Четко сформулируйте свою конечную цель в разработке программного обеспечения
Сделать новую карьеру непросто. Но когда вы имеете в виду конечный пункт назначения, это очень помогает, когда вы сталкиваетесь с неровностями дороги.Кристально чистая цель выглядит примерно так:
- «Я хочу работать разработчиком программного обеспечения в известной технологической компании».
- «Я хочу работать в новом стартапе как инженер-программист в той отрасли, которую я обожаю».
- «Я хочу создавать что-то в команде и получать за это хорошие деньги».
Независимо от специфики вашей мечты, если вы хотите пройти через все 11 шагов, вы ДОЛЖНЫ стремиться к конечной цели — стать штатным инженером-программистом.Это то, что будет двигать вас вперед, когда дела идут плохо.
Шаг № 2: Выберите хороший язык программирования , чтобы выучить
Поначалу многие люди застревают, решая, какой язык программирования (и фреймворк) им следует изучить. Рубин на рельсах? Python и Django? СРЕДНИЙ стек? Так много вариантов, так мало времени.
Вот в чем дело: если вы хорошо знаете конкретный язык / стек, нетрудно перейти на новый.Это означает, что когда вы становитесь программистом, вам нужно сосредоточиться на понимании основ программирования. По сути, изучая , как учить .
Если у вас есть прочный фундамент, вы можете легко перейти на новые языки, фреймворки и технологии. Как говорит соучредитель Flatiron School Ави Фломбаум: «Самый важный аспект в том, что вы учитесь мыслить как разработчик».
Начать кодирование сейчас
Прекратить ждать и начать обучение! Получите мои 10 советов, как научиться программировать.
Успех! Теперь проверьте свою электронную почту, чтобы подтвердить подписку.
Все это говорит о том, что для начала вам следует сосредоточиться на одном языке / фреймворке.
При таком большом количестве языков бывает трудно понять, какой выбрать. Я рекомендую потратить некоторое время на изучение разных языков. Это руководство по выбору языка программирования — отличное место для начала.
Для многих Ruby — отличный вариант.
Ruby удобочитаем и эффективен, поэтому освоить его гораздо проще, чем с некоторыми другими языками.Он также имеет открытый исходный код, поэтому у вас будет бесплатный доступ ко множеству инструментов и сообществу других разработчиков. И, что, пожалуй, самое главное, он гибкий: язык используется множеством компаний (Airbnb, GitHub, Hulu, Kickstarter и т. Д.) И дает вам прочную основу для дальнейшего перехода на другие языки.
Шаг № 3: Практикуйтесь в разработке программного обеспечения… и еще раз практикуйтесь
Хотя стек, который вы изучаете, не имеет большого значения, важно учиться на практике.Это означает, что вы должны посвятить немного реального времени совершенствованию вашего нового ремесла. Вы должны уделять учебе значительное количество времени каждый день, каждую неделю.
Вы не можете стать разработчиком программного обеспечения после 10 часов практики. Это просто невозможно.
Некоторые говорят, что для того, чтобы стать экспертом, нужно 10 000 часов. Теперь вам не нужно 10 000 часов практики, чтобы получить свою первую работу разработчика программного обеспечения. Но вам нужно посвятить серьезное время.
Приведу один пример: на прохождение учебной программы «Основы компьютерных наук для разработки программного обеспечения» на edX требуется около 4 месяцев (7–9 часов в неделю).
Шаг №4: Используйте настоящие инструменты программного обеспечения разработчиков
Хотя бесплатные ресурсы, такие как Codecademy, — это здорово, вы не находитесь в реальной среде, когда используете их. Вместо этого вы вводите текст прямо в веб-браузере и получаете оценку на основе викторины или другого интерактивного действия.
Это, безусловно, полезно как способ привыкнуть к кодированию и закреплению концепций в уме.Однако в реальном мире вы не собираетесь так работать. Итак, что вы хотите сделать с самого начала, так это построить то, как строят настоящие инженеры. Вы хотите использовать инструменты, которые они используют. В будущем это упростит переход на штатную должность и присоединение к команде.
Но трудно понять, как настоящие разработчики создают и используют инструменты, которые используют настоящие разработчики, когда вы только начинаете. (Если вы похожи на меня, трудно даже понять, с чего начать.)
Хорошая новость заключается в том, что существуют программы, которые научат вас пользоваться этими инструментами — например, Контроль версий с Git, онлайн-курс на Coursera.
Его учебная программа затрагивает инструменты и процессы, которые настоящие инженеры используют каждый день, например:
Это позволит вам настроить гораздо быстрее, когда вы будете на реальной работе, по сравнению с h
.