Профессиональный программист пишет компьютерную программу для крупной фирмы
Обновлено: 21.11.2024
Как определить хороший код? Это 100% покрытие тестами или обратная совместимость с оборудованием десятилетней давности? Возможно, мы еще не в состоянии закончить этот спор, но хорошее программное обеспечение всегда соответствует нескольким определенным качествам кода. В этой статье внештатный инженер-программист Toptal Закари Голдберг предлагает шесть простых идей, которые помогут вам создавать более качественное и удобное в сопровождении программное обеспечение.
Захари, бывший ведущий инженер Google и резидент Tencent, является опытным профессионалом с опытом работы на уровне C.
Человек знакомится с искусством и наукой компьютерного программирования всего около полувека. По сравнению с большинством искусств и наук, информатика во многих отношениях все еще находится в стадии развития: она ходит по стенам, спотыкается о собственные ноги и время от времени швыряет еду через стол.
Я не думаю, что из-за его относительной молодости у нас пока нет единого мнения о правильном определении «хорошего кода», поскольку это определение продолжает развиваться. Некоторые скажут, что «хороший код» — это код со 100-процентным покрытием тестами. Другие скажут, что он очень быстрый, обладает потрясающей производительностью и приемлемо работает на оборудовании 10-летней давности.
Хотя это все похвальные цели для разработчиков программного обеспечения, я рискну добавить еще одну цель: ремонтопригодность. В частности, «хороший код» — это код, который легко и просто поддерживается организацией (а не только его автором!) и который будет жить дольше, чем просто спринт, в котором он был написан. карьера инженера в больших и малых компаниях в США и за границей, которая, кажется, коррелирует с ремонтопригодным, «хорошим» программным обеспечением.
Я далеко не первый, кто пишет, что основной аудиторией вашего кода является не компилятор/компьютер, а тот, кто должен читать, понимать, поддерживать и улучшать код (не обязательно вы, шесть месяцев с этого момента). Любой достойный инженер может создать код, который «работает»; что отличает превосходного инженера, так это то, что он может эффективно писать поддерживаемый код, который поддерживает бизнес в долгосрочной перспективе, и обладает навыками простого, понятного и удобного в сопровождении решения проблем.
На любом языке программирования можно написать хороший или плохой код. Предполагая, что мы оцениваем язык программирования по тому, насколько хорошо он облегчает написание хорошего кода (в любом случае, это должно быть, по крайней мере, одним из главных критериев), любой язык программирования может быть «хорошим» или «плохим» в зависимости от того, как он используется (или злоупотребляет им). ).
Примером языка, который многие считают «чистым» и удобочитаемым, является Python. Сам язык обеспечивает некоторый уровень дисциплины пробелов, а встроенные API-интерфейсы многочисленны и довольно последовательны. Тем не менее, можно создавать невыразимых монстров. Например, можно определить класс и определить/переопределить/отменить определение любого и каждого метода в этом классе во время выполнения (часто это называется исправлением обезьяны). Этот метод естественным образом приводит в лучшем случае к несогласованному API, а в худшем — к невозможному отлаживать монстра. Можно наивно подумать: «Конечно, но никто так не делает!» К сожалению, они это делают, и просмотр pypi не займет много времени, прежде чем вы столкнетесь с существенными (и популярными!) библиотеками, которые (ab) широко используют обезьяньи исправления в качестве ядра своих API. Недавно я использовал сетевую библиотеку, весь API которой меняется в зависимости от сетевого состояния объекта. Представьте, например, что вы вызываете client.connect() и иногда получаете ошибку MethodDoesNotExist вместо HostNotFound или NetworkUnavailable .
Хороший код легко читается и понимается частично и полностью другими (а также автором в будущем, пытающимся избежать синдрома "Я действительно это написал?") ).
Под «частично» я подразумеваю, что если я открою какой-то модуль или функцию в коде, я смогу понять, что они делают, без необходимости читать весь остальной код. Он должен быть максимально интуитивно понятным и самодокументируемым.
Код, который постоянно ссылается на мельчайшие детали, влияющие на поведение из других (на первый взгляд, не относящихся к делу) частей кодовой базы, подобен чтению книги, в которой вы должны ссылаться на сноски или приложения в конце каждого предложения. Вы никогда не прочтете первую страницу!
Еще несколько мыслей о «локальной» читабельности:
Хорошо инкапсулированный код, как правило, более удобочитаем, разделяя проблемы на каждом уровне.
Имена имеют значение. Активируйте способ системы 2 «Быстрое и медленное мышление», с помощью которого мозг формирует мысли и вкладывает в имена переменных и методов реальные, тщательные мысли. Несколько дополнительных секунд могут принести значительные дивиденды. Хорошо названная переменная может сделать код более интуитивным, тогда как неудачно названная переменная может привести к обману и путанице.
Ум – враг.При использовании причудливых приемов, парадигм или операций (например, списков или тернарных операторов) старайтесь использовать их таким образом, чтобы сделать ваш код более читабельным, а не просто короче.
Постоянство — это хорошо. Согласованность стиля, как с точки зрения размещения фигурных скобок, так и с точки зрения операций, значительно улучшает читабельность.
Разделение проблем. Данный проект управляет бесчисленным количеством локально важных допущений в различных точках кодовой базы. Предоставьте каждой части кодовой базы как можно меньше таких проблем. Скажем, у вас есть система управления людьми, в которой объект-человек иногда может иметь нулевую фамилию. Для кого-то, кто пишет код на странице, отображающей объекты-человеки, это может быть очень неудобно! И если вы не ведете справочник «неудобных и неочевидных предположений, которые есть в нашей кодовой базе» (я знаю, что нет), ваш программист отображаемой страницы не будет знать, что фамилии могут быть нулевыми, и, вероятно, будет писать код с нулевым указателем. исключение в нем, когда появляется нулевой регистр последнего имени. Вместо этого обрабатывайте эти случаи с помощью хорошо продуманных API и контрактов, которые различные части вашей кодовой базы используют для взаимодействия друг с другом.
Государство — враг. Почему? Потому что это самая сложная часть любого приложения, и с ней нужно работать очень обдуманно и вдумчиво. Общие проблемы включают в себя несогласованность базы данных, частичные обновления пользовательского интерфейса, когда новые данные не отражаются везде, неупорядоченные операции или просто умопомрачительно сложный код с операторами if и ветвлениями повсюду, что приводит к трудному для чтения и еще более сложному в обслуживании коду. Ставя состояние на пьедестал, чтобы к нему относились с большой осторожностью, и будучи чрезвычайно последовательным и преднамеренным в отношении доступа к состоянию и его изменения, вы значительно упрощаете свою кодовую базу. Некоторые языки (например, Haskell) применяют это на программном и синтаксическом уровне. Вы будете удивлены, насколько можно улучшить ясность вашей кодовой базы, если у вас есть библиотеки чистых функций, которые не обращаются к внешнему состоянию, а затем небольшая поверхность кода с отслеживанием состояния, который ссылается на внешнюю чистую функциональность.
Прежде чем изобретать велосипед, подумайте, насколько распространена проблема, которую вы пытаетесь решить, или функция, которую вы пытаетесь выполнить. Возможно, кто-то уже реализовал решение, которое вы можете использовать. Потратьте время на обдумывание и исследование любых таких вариантов, если они уместны и доступны.
Тем не менее, вполне разумным контраргументом является то, что зависимости не приходят «бесплатно» без каких-либо недостатков. Используя стороннюю библиотеку или библиотеку с открытым исходным кодом, которая добавляет некоторые интересные функции, вы берете на себя обязательство и становитесь зависимым от этой библиотеки. Это большое обязательство; если это гигантская библиотека, и вам нужна только небольшая часть функциональности, вы действительно хотите бремя обновления всей библиотеки, если вы обновляете, например, до Python 3.x? Более того, если вы столкнулись с ошибкой или хотите улучшить функциональность, вы либо зависите от автора (или поставщика) в предоставлении исправления или улучшения, либо, если это открытый исходный код, вы оказываетесь в положении изучения ( потенциально существенной) кодовой базе, с которой вы совершенно не знакомы, пытаясь исправить или изменить малоизвестную часть функциональности.
Конечно, чем лучше используется код, от которого вы зависите, тем меньше вероятность того, что вам придется тратить время на обслуживание. Суть в том, что вам стоит провести собственное исследование и сделать собственную оценку того, следует ли включать сторонние технологии и сколько обслуживания эта конкретная технология добавит к вашему стеку.
Ниже приведены некоторые из наиболее распространенных примеров того, что вам, вероятно, не следует заново изобретать в современном мире в вашем проекте (если только это НЕ ваши проекты).
Базы данных
Выясните, какая из CAP вам нужна для вашего проекта, а затем выберите базу данных с нужными свойствами. База данных больше не означает MySQL, вы можете выбирать из:
«Традиционная» схема SQL: Postgres/MySQL/MariaDB/MemSQL/Amazon RDS и т. д.
Основные хранилища: Redis, Memcache, Riak
NoSQL: MongoDB/Cassandra
Размещенные базы данных: AWS RDS/DynamoDB/хранилище данных AppEngine
Большие объемы работ: Amazon MR, Hadoop (Hive/Pig), Cloudera, Google Big Query.
Сумасшедшие вещи: Mnesia от Erlang, Core Data от iOS
Уровни абстракции данных
В большинстве случаев вам не следует писать необработанные запросы к любой базе данных, которую вы решили использовать. Скорее всего, между БД и кодом вашего приложения существует библиотека, отделяющая задачи управления одновременными сеансами базы данных и детали схемы от вашего основного кода. По крайней мере, у вас никогда не должно быть необработанных запросов или встроенного SQL в середине кода вашего приложения.Вместо этого оберните его функцией и сосредоточьте все функции в файле с каким-нибудь очевидным именем (например, «queries.py»). Например, такую строку, как users = load_users(), гораздо легче читать, чем users = db.query("SELECT username, foo, bar from users LIMIT 10 ORDER BY ID"). Этот тип централизации также значительно упрощает использование единообразного стиля в запросах и ограничивает количество мест, куда можно перейти для изменения запросов при изменении схемы.
Другие популярные библиотеки и инструменты, которые стоит рассмотреть
Службы очередей или Pub/Sub. Выберите поставщика AMQP, ZeroMQ, RabbitMQ, Amazon SQS.
Хранение. Amazon S3, облачное хранилище Google
Мониторинг: Graphite/размещенный Graphite, AWS Cloud Watch, New Relic.
Сбор журналов/агрегация.Loggly, Splunk
Автоматическое масштабирование
Автоматическое масштабирование. Heroku, AWS Beanstalk, AppEngine, AWS Opsworks, Digital Ocean
Есть много хороших моделей для программирования дизайна, pub/sub, актеров, MVC и т. д. Выберите то, что вам больше нравится, и придерживайтесь его. Различные виды логики, работающие с разными видами данных, должны быть физически изолированы в кодовой базе (опять же, это разделение концепций и снижение когнитивной нагрузки на будущего читателя). Например, код, который обновляет ваш пользовательский интерфейс, должен физически отличаться от кода, который вычисляет, что входит в пользовательский интерфейс.
Если компилятор может обнаруживать логические ошибки в вашем коде и предотвращать плохое поведение, ошибки или прямые сбои, мы обязательно должны воспользоваться этим. Конечно, для некоторых языков есть компиляторы, которые делают это проще, чем для других. Haskell, например, имеет знаменитый строгий компилятор, из-за которого программисты тратят большую часть своих усилий только на то, чтобы компилировать код. Однако после компиляции «он просто работает». Для тех из вас, кто никогда не писал на строго типизированном функциональном языке, это может показаться нелепым или невозможным, но не верьте мне на слово. Серьезно, нажмите на некоторые из этих ссылок, абсолютно возможно жить в мире без ошибок времени выполнения. И это действительно так волшебно.
Следует признать, что не у каждого языка есть компилятор или синтаксис, который позволяет проводить большую (а в некоторых случаях и любую!) проверку во время компиляции. Для тех, кто этого не делает, потратьте несколько минут на изучение дополнительных проверок строгости, которые вы можете включить в свой проект, и оцените, имеют ли они смысл для вас. Краткий, неполный список некоторых распространенных, которые я использовал в последнее время для языков с мягкой средой выполнения, включает:
Как разработчики программного обеспечения, так и инженеры-программисты являются высококвалифицированными специалистами, которые могут создавать программное обеспечение с нуля.
Однако иногда сложно провести различие между ними, потому что работодатели не всегда точно определяют две роли. Между тем, сами должностные инструкции немного пересекаются. Добавление к путанице? Разработчики программного обеспечения иногда участвуют в разработке программного обеспечения, но большинство разработчиков программного обеспечения не являются разработчиками программного обеспечения.
Не беспокойтесь. Мы немного покопались в различиях между двумя полями, чтобы прояснить их:
Роль разработчиков программного обеспечения обычно более ограничена по масштабу, чем роль инженера, что позволяет разработчикам более творчески подходить к своим решениям.
Инженеры-программисты работают в больших масштабах, поэтому их мышление обычно более систематично.
Пути образования также несколько расходятся. Разработчики программного обеспечения обычно специализируются в области компьютерных наук или изучают создание программного обеспечения в таких областях, как компьютерные игры и развлекательные технологии. Разработчики программного обеспечения несут ответственность за создание программ. Программисты могут быть теми, кто на самом деле пишет код, но разработчики работают с ними над проектированием, тестированием и настройкой программ.
Средняя зарплата разработчика программного обеспечения составляет около 105 000 долларов США в год, а для должностей начального уровня – немного меньше. И хотя в последние несколько лет рост числа рабочих мест несколько застопорился, по данным Бюро статистики труда США, спрос остается большим. Согласно одному из прогнозов, до 2028 года ежегодно будет открываться в среднем 134 600 вакансий.
В то же время инженеры-программисты еще менее уязвимы для аутсорсинга. Область выросла примерно на 32% за последнее десятилетие из-за спроса на профессионалов со специализированными, всесторонними знаниями. Они, как правило, зарабатывают больше (средняя базовая зарплата составляет 107 000 долларов США в год), но их образование обычно занимает больше времени, поскольку многие инженеры-программисты имеют более высокие степени, такие как степень магистра компьютерных информационных технологий.
Ключевые отличия: разработчик ПО и разработчикИнженер-программист
Разработчики программного обеспечения .
Инженеры-программисты .
Обычно проводят меньше времени в школе.
Обычно получают более высокую заработную плату.
Проявите больше творчества.
Проведите дополнительный анализ.
Работайте над проектами, которые могут быть более ограниченными по масштабу.
Работать над проектами, которые могут быть масштабнее.
Часто сотрудничать с отдельными клиентами.
Часто решать проблемы для всех пользователей.
таблица>
Чем занимаются разработчики программного обеспечения?
Возможно, это очевидно из названия, но разработчики программного обеспечения несут ответственность за процесс разработки, проектирование компонентов приложения. Разработчики программного обеспечения контролируют свои проекты от начала до конца и часто манипулируют одновременными проектами, которые находятся на разных стадиях разработки.
Они сотрудничают с клиентами, чтобы определить их потребности и принять решение, поэтому навыки работы с людьми необходимы в дополнение к компьютерным знаниям. Они тесно сотрудничают с программистами, которые создают код, чтобы предвидеть, диагностировать и устранять проблемы; следить за обновлениями проекта; и устранить неполадки. Качество и согласованность достигаются за счет экспериментальных запусков программного обеспечения, прямого ремонта и доработок.
Разработчики программного обеспечения обычно обладают сильными аналитическими способностями, поэтому они могут сопоставлять потребности клиентов с возможностями программного обеспечения. Они также должны быть знакомы с языком программирования.
Чем занимаются инженеры-программисты?
Инженеры-программисты используют комплексный подход, часто рассматривая компромиссы, которые необходимо сделать для других частей системы и ее архитектуры, например, при создании конвейеров данных или масштабируемых предметно-ориентированных языков. Их основное внимание уделяется структурному проектированию.
Этим специалистам необходимы технические знания и опыт работы с инструментами с открытым исходным кодом. Им также необходимы навыки проектирования шаблонов, автоматизированного тестирования и отказоустойчивых систем. Они часто сотрудничают с персоналом, занимающимся информационными технологиями, эксплуатацией и разработкой, для создания и поддержки программ, архитектуры, крупномасштабных хранилищ данных и облачных систем.
Карьера программиста начинается здесь
Степень в области компьютерных наук или информационных систем Университета Элмхерста подготовит вас к карьере разработчика программного обеспечения или инженера-программиста.
Наши программы бакалавриата и магистратуры сочетают в себе солидный опыт в области технологий и теории с реальным подходом к карьерному росту. Наша учебная программа основана на рекомендациях Ассоциации вычислительной техники и ориентирована на получение технических знаний, которые помогут вам добиться успеха.
Программисты пишут, тестируют и разрабатывают программы для работы компьютеров. Программисты также проектируют и разрабатывают программы, решающие проблемы. Работая с другими компьютерными специалистами, они разрабатывают инструкции, которые заставляют компьютеры выполнять определенные задачи. Новые технологии и компьютерные языки изменили роль программиста.
Инженеры программного обеспечения и системные аналитики определяют программы, которые разрабатывают программисты. Инженеры и системные аналитики разрабатывают программное обеспечение, а программисты преобразуют инженерные разработки в программы, управляющие компьютерами. Программисты кодируют программы на языке программирования, таком как COBOL, Prolong, языке искусственного интеллекта или расширенном объектно-ориентированном языке, таком как Java, C++ или ACTOR.
Языки программирования определяются назначением программы. Программисты обычно понимают более одного языка, а поскольку языки очень похожи, многие программисты могут быстро выучить новые языки. Программистов часто классифицируют по их языку или программной специальности, например, программисты JAVA или мэйнфреймы.
Программисты модифицируют, ремонтируют и обновляют текущие программы. Программисты, работающие над крупными проектами, часто используют инструменты компьютерной разработки программного обеспечения (CASE) для автоматизации процесса кодирования. Инструменты CASE позволяют программистам сосредоточиться на написании уникальных частей программы. Программисты, работающие над небольшими проектами, обычно используют среды программирования, программы, повышающие производительность за счет объединения функций отладки, генерации тестовых данных, генерации кода, обхода кода и компиляции. Они также используют базовые библиотеки кода, которые можно модифицировать для определенных целей. Программисты могут повысить свою производительность, используя базовые библиотеки кода, поскольку они могут исключить рутинные действия.
Типы программ зависят от информации, которая будет создана или к которой будет осуществляться доступ. Программы, которые обновляют финансовые отчеты, отличаются от инструкций, имитирующих программы обучения пилотов. Программисты могут написать простые программы за несколько часов, но некоторые программы требуют сложной математики, на написание которой может уйти год. При написании программ такого типа старшие программисты обычно руководят командой программистов.
Новые программы тестируются на компьютере, чтобы определить, правильно ли выполняются инструкции. Программисты должны следить за ошибками, и если ошибки обнаружены, они должны предпринять корректирующие действия, следуя процессу, известному как тестирование и отладка. Программисты могут продолжать отлаживать программу, пока она используется.
Программисты, специализирующиеся на мэйнфреймах, больших централизованных компьютерах, готовят инструкции для операторов компьютеров, контролирующих программу. Многие программисты также вносят свой вклад в руководство по эксплуатации программы.
Программисты, работающие в компаниях-разработчиках программного обеспечения, могут сотрудничать с экспертами для разработки специализированного программного обеспечения, разработанного для конкретных клиентов или для использования кем-либо, известного как упакованное программное обеспечение, например игры и программное обеспечение для настольных издательских систем. Упакованные программы — один из самых популярных продуктов в индустрии компьютерных услуг.
Усовершенствованные программные платформы создают меньше различий между программистами и пользователями. Приложения для работы с электронными таблицами, бухгалтерского учета и планирования ресурсов предприятия увеличили потребность в специалистах с пользовательским опытом. Эти специалисты разрабатывают программы, которые служат потребностям этой базы. Программисты разрабатывают программную платформу, а затем устраняют неполадки в программе, пока она не будет завершена.
Компьютерные программисты делятся на две группы: программисты приложений и системные программисты. Разработчики приложений пишут программы, выполняющие определенные задачи, например отслеживание запасов компании, и перепрограммируют обычное программное обеспечение. Системные программисты пишут компьютерные программы, которые работают с сетевыми системами, базами данных и операционными системами, а также переписывают инструкции, которые управляют сетью системы или центральным процессором или передают информацию на терминалы или принтеры. Поскольку программисты обладают обширными знаниями о компьютерных системах, они часто работают с разработчиками приложений, чтобы диагностировать источник проблемы программы.
Некоторые фирмы нанимают программистов-аналитиков, которые контролируют системный анализ и программирование.
Программисты проводят большую часть своего времени в офисах с компьютерными терминалами. Они также тратят больше времени на удаленную работу, поскольку новые технологии позволяют им работать удаленно.
Компьютерные программисты обычно работают по 40 часов в неделю и часто работают по выходным и по вечерам, чтобы решить технические проблемы. 4 % программистов работают неполный рабочий день по сравнению с 15 % работников других отраслей.
Поскольку программисты проводят весь день перед компьютерами, они могут испытывать боль в спине, усталость глаз и синдром запястного канала.
По состоянию на 2018 год в США работало около 248 000 программистов.
Чтобы стать программистом, вам как минимум нужна степень младшего специалиста или бакалавра в области компьютерных наук или тесно связанной дисциплины. Тем не менее, есть несколько программистов-самоучек, которые достаточно опытны в своем деле. Большинство программистов выучат хотя бы несколько языков программирования.
Образование. Получение степени младшего специалиста или бакалавра в области компьютерных наук или тесно связанной дисциплины обычно является первым шагом, который человек делает в подготовке к тому, чтобы стать программистом. Формальное образование дает учащимся возможность стать специалистом в определенной области, например в области бухгалтерского учета или здравоохранения.
Как бы ни было важно образование, в конечном итоге важно, насколько хорошим программистом вы станете. Степень в области компьютерных наук дает студентам основы для понимания компьютера и изучения языков программирования. Однако самые успешные студенты приобретут жизненно важные навыки благодаря стажировкам и опыту работы.
Поскольку технологии постоянно меняются, программисты должны проходить курсы повышения квалификации, постоянно учиться и быть в курсе последних тенденций, методов и технологий.
Существует множество учебных курсов для программистов, которые хотят получить дополнительные знания, навыки и сертификаты. Сертификация по языку программирования поставщика или продукту поможет программистам стать специалистами и выделиться на фоне конкурентов.
По состоянию на 2018 год средняя годовая заработная плата программистов составляла примерно 82 000 долларов США. Самые низкие 10% программистов зарабатывают менее 48 000 долларов, а самые высокие 10 % зарабатывают более 132 000 долларов в год. Заработок программиста во многом зависит от его опыта, навыков и отрасли, в которой он работает.
Ожидается, что в период с 2018 по 2028 год количество рабочих мест вырастет примерно на 16 %. Поскольку программисты могут работать из любой точки мира, где есть компьютер с доступом в Интернет, многие компании передают свои компьютерные программы на аутсорсинг в Индию и другие страны, где стоимость квалифицированной рабочей силы ниже, чем в Соединенных Штатах.Растущая тенденция аутсорсинга программистов ограничит рост программистов внутри страны. Тем не менее, исключительные программисты всегда будут пользоваться большим спросом.
По прогнозам, в течение следующих десяти лет будут расти такие сектора, как проектирование компьютерных систем, технология мобильных приложений и технологии, и рабочих мест для программистов и разработчиков программного обеспечения в этих секторах будет много.
Наилучшие перспективы трудоустройства будут у программистов с формальным образованием, умеющих программировать на нескольких разных языках.
Поиск компьютерного и технологического образования Поищите в нашей базе данных компьютерные и технологические программы в Интернете и в университетских городках.
Компьютерное программирование – это процесс, который профессионалы используют для написания кода, определяющего, как работает компьютер, приложение или программа. По своей сути компьютерное программирование представляет собой набор инструкций для облегчения определенных действий. Если вам интересно, кто такой программист, то это профессионал, создающий инструкции для выполнения компьютером путем написания и тестирования кода, обеспечивающего успешную работу приложений и программ.
Компьютеры способны на удивительные вещи: от простых ноутбуков, способных выполнять простую обработку текстов и работу с электронными таблицами, до невероятно сложных суперкомпьютеров, ежедневно выполняющих миллионы финансовых транзакций и управляющих инфраструктурой, которая делает возможной современную жизнь. Но ни один компьютер не может ничего сделать, пока программист не скажет ему вести себя определенным образом. Вот что такое компьютерное программирование.
В своей основе компьютерное программирование — это не более чем набор инструкций для выполнения определенных действий. Основываясь на требованиях или целях этих инструкций, компьютерное программирование может быть таким же простым, как сложение двух чисел. Это также может быть сложно, например, считывание данных с датчиков температуры для настройки термостата, сортировка данных для завершения сложного планирования или критических отчетов или проведение игроков через многослойные миры и испытания в играх.
Доктор. Шерил Фредерик, исполнительный директор программ STEM в Университете Южного Нью-Гэмпшира (SNHU), сказала, что компьютерное программирование — это совместный процесс, в котором участвуют самые разные программисты. Некоторые из этих разработок могут длиться десятилетиями. Например, такое программное обеспечение, как Microsoft Word, выпущенное в 1983 году, программисты годами дорабатывали и улучшали.
"Мы надеемся, что компьютерная программа станет настолько широко распространенной системой, что ей потребуется долгосрочная поддержка, особенно для расширения ее текущей функциональности", — сказал Фредерик. «Термины компьютерное программное обеспечение и компьютерное программирование взаимозаменяемы, за исключением того, что программное обеспечение может быть довольно большим».
Что делают программисты весь день?
Существует много языков программирования, но некоторые из них стали самыми популярными. CareerKarma составила список самых распространенных языков программирования в 2021 году на основе вакансий.
Некоторые из общих задач, которые должен выполнить программист, были собраны O*Net в Интернете и включают:
Тестирование производительности программного обеспечения.
Решение проблем с компьютерным программным обеспечением.
Изменение программного обеспечения для повышения производительности.
Написание программного кода.
Сотрудничество с другими для решения проблем с информационными технологиями.
Как стать программистом?
Многие программисты начинали как энтузиасты-самоучки, и постоянный интерес к программированию может помочь вам в карьере, поскольку постоянное обучение жизненно важно для программиста.
"Получение степени – это хороший способ начать карьеру, а также дает вам основу для систематизации своего опыта", – – сказал Кертис Джордж, координатор технических программ в области компьютерных наук в SNHU. "В конечном счете именно опыт делает вас отличным программистом. Помимо опыта, успешный программист всегда следит за последними компьютерными языками, алгоритмическими процессами и тенденциями в индустрии программного обеспечения."
Фредерик согласился. Она работала в Министерстве обороны, а также в финансовом и телекоммуникационном секторах, прежде чем заняться образованием. «Требуется много упорства, и этого недостаточно, чтобы получить степень; вам нужен опыт работы», — сказала она. «Мы даем студентам основу, основанную на структурах данных, алгоритмах, математике и логической инженерии, но вы должны уметь планировать, писать, проектировать, тестировать и управлять программным обеспечением. Вы должны знать как минимум два-три языка программирования, включая JAVA и C++».
Однако помимо обучения в классе и экспериментального обучения программисты должны понимать, что при написании программы она никогда не срабатывает с первого раза. «Эта область требует терпения и способности устранять неполадки и выявлять ошибки.Вы должны быть обучающимся работником, быть самодисциплинированным, иметь мотивацию учиться самостоятельно, иметь возможность проводить мозговые штурмы с другими и иметь много практической практики», — сказал Фредерик. «Вы должны быть практиком и адаптироваться к модным тенденциям».
Во время работы над получением степени в области компьютерных наук учащимся предлагается создать портфолио своих программных разработок. «Хотя это портфолио не оценивается, студенты могут поделиться им с потенциальными работодателями в качестве доказательства способностей кодирования», — сказал Фредерик. «Вся программа на получение степени дает студентам широкий опыт и навыки в традиционных и трендовых технологиях, включая такие специальности, как вычислительная графика, тестирование программного обеспечения и написание кода для часто используемых программ, а также более глубокие и специфические навыки».
Стоит ли получать сертификат программирования?
По данным Бюро статистики труда США (BLS), для большинства вакансий в области компьютерного программирования требуется как минимум степень бакалавра. Кроме того, доступно множество программ повышения квалификации. В дополнение к этим академическим направлениям доступны десятки профессиональных и некоммерческих профессиональных сертификатов. BLS отмечает, что сертификаты существуют для конкретных языков программирования и что некоторые работодатели могут потребовать, чтобы программисты прошли сертификацию по продуктам, которые использует компания.
Некоторые из доступных профессиональных сертификатов включают:
CISCO – сертифицированный сетевой специалист, сертифицированный сетевой специалист по маршрутизации и коммутации, сертифицированный сетевой партнер по безопасности.
Microsoft — сертифицированный разработчик решений для веб-приложений, сертифицированный партнер по решениям Windows Server
Профессиональные ассоциации — сертификация Software Development Associate, Comptia’s Security+, Comptia’s A+ Certification, Comptia’s Linux+
Некоммерческая организация – сертифицированный специалист по безопасности информационных систем, сертифицированный менеджер по информационной безопасности, сертификат сертифицированного специалиста по обеспечению безопасности жизненного цикла программного обеспечения
Изучите разработку программного обеспечения
Джордж ранее работал в НАСА, Национальном управлении океанических и атмосферных исследований (NOAA) и других лидерах высоких технологий и принимал активное участие в разработке университетской учебной программы по информатике.
"Во время своей работы я обучал многих младших инженеров-программистов, и я поддерживал их, показывал им части кода, и, давая им практический опыт, они со временем становились лучше", – сказал Джордж. «Наличие базовых знаний в области программирования, включая работу с другими (в) командах, является хорошей отправной точкой для любой работы».
При получении степени в области компьютерных наук с упором на разработку программного обеспечения важно учиться в среде для совместной работы, будь то лично или виртуально, поскольку этот опыт будет отражать то, что ожидается на рабочем месте. Джордж отметил, что студенты изучают компьютерное программирование и создают программное обеспечение в онлайн-лабораториях, которые предоставляют возможности для самостоятельной работы наряду с совместной работой.
Если вы готовы сделать первый шаг к тому, чтобы стать программистом, найдите свою степень здесь.
Джо Коте — штатный писатель Университета Южного Нью-Гэмпшира. Подпишитесь на него в Твиттере @JoeCo2323.