Почему 1С отличный выбор для начинающих специалистов
«Все деньги сейчас в IT». Более того, даже самим подсчётом денег уже давно занимаются айтишники, ведь объёмы современных бизнесов никак не поместятся на бумаге, тетрадках и счётах. К тому же, всё больше и больше требуется автоматизации процессов внутри компаний. Именно поэтому, симбиоз «бизнеса» и «софта» приобрёл такую важность, и на рынке появилось понятие «бизнес-софт» или «корпоративный софт». Безусловным лидером в этом сегменте давно стали программы на базе решений 1С.
Сегодня в России и странах СНГ почти не существует бизнеса, который бы не использовал хотя бы одной программы 1С. Да, на этом языке вы не напишете 3D-игру класса ААА или новую социальную сеть, но 1С-программистам всего этого и не нужно, потому что их главная цель — помогать предприятиям зарабатывать деньги с помощью автоматизации процессов. А благодаря своему расположению «возле бизнеса» из специалистов по 1С получаются не только прекрасные программисты, но и высококлассные аналитики, и руководители команд разработки.
О том, почему 1С — перспективный язык программирования и отличный выбор для начинающих подробно рассказывает Андрей Овсянкин, системный архитектор «Сберлогистики» и преподаватель курса «1С-программист» в Нетологии.
Андрей Овсянкин
Cистемный архитектор «Сберлогистики» и преподаватель курса «1С-программист» в Нетологии
Кому, а главное зачем нужны 1С-программисты?
Специалисты по 1С нужны всем у кого есть бизнес, то есть буквально всем на рынке. Разработчики графики нужны производителям игр, создатели алгоритмов сжатия видео — стриминговым платформам, низкоуровневые программисты — компаниям, создающим «железо». Но и тем, и другим, и третьим нужны 1С-ники, потому что все это — бизнесы, которым необходимо считать деньги, платить зарплаты, автоматизировать производство и так далее.
Если представить себе бизнес, который продает улучшение качества фотографий онлайн, то сама его платформа, наверняка, будет построена на одном из низкоуровневых языков программирования, но всё, что вокруг: обслуживание клиента, оплата, выставление счета, расчёт и выплата зарплат сотрудникам — могут быть полностью реализованы на базе 1С.
Язык программирования 1С — это так называемый «предметно-ориентированный язык», заточенный под конкретные задачи. С самого начала он был придуман для работы с определённой платформой, а именно «1С: Предприятие». На базе этой платформы создаются решения для автоматизации бизнес-процессов: учёта товаров, расчёта заработной платы, налогов и других операций. И все они пишутся на едином коде, который, за неимением оригинального названия от разработчиков, стали обозначать как «язык программирования 1С».
Сегодня системы вроде «1С: Предприятия» часто называют модным словом low-code, оно обозначает среду программирования с низкой потребностью писать код самостоятельно и в большом количестве. Главная функция таких платформ сводится к тому, чтобы быстро создавать работоспособные приложения для решения бизнес-целей с помощью множества готовых решений и инструментов из «коробки». Ключевое слово здесь — быстро. Чем быстрее бизнес выйдет со своей идеей на рынок, тем лучше. Чем дольше бизнес будет ждать, пока программисты все напишут, тем выше шанс, что его опередят.
Почему 1С — отличный старт для новичков?
Во-первых, у 1С низкий порог вхождения. Он очень простой. Во-вторых, он позволяет быстро получать конечный результат. За счет концепции low-code и огромного количества готовых компонентов даже новичок начинает приносить работодателю выгоду практически сразу после трудоустройства. Джуниор в 1С полезен бизнесу гораздо больше, чем джуниор, скажем, в Java, за которым старшие коллеги первое время вынуждены постоянно присматривать, чтобы не натворил бед.
В экосистеме «1С: Предприятие» есть все для разработки простых алгоритмов: готовые экранные формы, библиотеки данных, стандартные отчеты и понятный язык программирования. Специалисту не нужно писать масштабные модули стандартных операций. Все составные части, которые требуются, уже готовы — остается только собрать механизм.
Специалист по 1С очень быстро окупается и имеет широкое пространство карьерного маневра. Можно писать код, а можно анализировать бизнес и предлагать решения проблем, то есть расти в сторону бизнес-архитектора и бизнес-аналитика. Переключение между этими ипостасями для «1С-ника» происходит гладко, так как он по умолчанию владеет обеими предметными областями.
Еще одна особенность 1С заключается в том, что он поддерживает два языка программирования — английский и русский. И, как правило, если мы говорим о российском рынке, то «1С-ники» пишут именно на русском. Так вот, писать логику на языке, на котором ты думаешь, гораздо удобнее, особенно, если до этого ты не занимался программированием вообще. Потому что то, что думаешь, то и пишешь в код. Именно поэтому «порог вхождения» в программирование легче переступить, начиная с 1С. Тебе не придётся заниматься лишними задачами и корпеть над переводом.
Многие программисты, специализирующиеся на других языках, хихикают и говорят: «Ха, смотрите! Они пишут “если”, а мы пишем “if”». Ну так их иностранные коллеги пишут как раз «если», поскольку именно это слово и думают. А наши вынуждены мучиться с трудностями перевода. Я всегда смеюсь, когда вижу в коде на C# или Java переменные SchetOplachen и Sklad. Бедные авторы, бедные те, кто это сопровождает потом.
Всем нужны «решатели» проблем: задачи 1С-программиста
Главная задача любого программиста (не только «1С-ника») — приносить компании пользу, именно за это специалист получает деньги. Для бизнеса программист — хоть и ценный, но всё же, ненужный посредник между прибыльной идеей и её реализацией. Именно поэтому, бизнесу вообще не важно, на каком языке ты программируешь. А важно другое — как скоро и насколько качественно ты сможешь решить проблему автоматизации того или иного процесса. Вот почему системы low-code так востребованы, они решают проблемы с минимальным участием программистов и меньшими финансовыми и временными затратами.
Работа 1С-программиста построена просто: сначала он анализирует входящие требования клиента и определяет что нужно сделать и какой у задачи смысл. Например, ему нужно настроить для интернет-магазина систему выгрузки данных о том, какие товары остались на сайте и загрузки информации о заказах (цене, количестве, номенклатуре).
Сначала 1С-программист воплощает идею в виде модели данных (решает, какие объекты будут создаваться — заказы, пользователи, товары, счета и тому подобное), а затем пишет алгоритм, как именно эти объекты будут взаимодействовать между собой, создает экранные формы и отчетность под решение конкретной задачи. То есть, один человек решает проблему целиком. Вот и получается, что 1С-ник — это «решатель проблем» и «достигатель бизнес-цели», а не только «программист». И это гораздо ценнее.
В других технологических стеках обычно есть разделение: одна команда разработчиков занимается базой данных и объектами, вторая — рисует экранные формы и так далее. При такой схеме нужно уделять дополнительное внимание процессам внутри компании и тому, корректно ли построена работа между сотрудниками. В противном случае придется тратить не только деньги, но и время на коммуникацию и многоуровневые согласования.
Только представьте, задача «сделать кнопку «Заказать» недоступной, если не внесена предоплата» у 1С-ника занимает 2 минуты. На другом стеке двум командам разработки: фронтенда и бэкенда нужно будет договориться о том, как две части программы будут взаимодействовать и в каком формате одна команда передаст данные другой. Это занимает примерно неделю обсуждений, разработки и тестирования, и эту неделю бизнес будет ждать своего готового решения.
Какие навыки и знания нужны программисту 1С?
Как и любому другому разработчику, «1С-нику» важно обладать аналитическим складом ума, чтобы понимать, в чём заключается задача, из каких компонентов она состоит и как «шестерёнки» должны закрутиться, чтобы всё заработало. Не менее важны коммуникативные навыки и умение находить общий язык с клиентом. Часто бывает, что заказчик приходит с какой-то идеей, но сам не может чётко выразить, чего хочет на самом деле. Чтобы понять его цели и эффективно сделать свою работу, программисту просто необходимо уметь общаться.
На каком языке ни пиши, всегда приходится упираться в особенности работы «железа» и настройки операционной системы, поэтому потребуются и «общеайтишные» знания: как работают диски, процессор, память или, например, как функционируют базы данных и почему в одном случае они выполняют запрос медленно, а в другом — быстро.
Важно понимать, какие есть средства разработки, как писать код, знать, что такое алгоритмы и переменные, какие существуют типы данных, что такое циклы, процедуры, функции и прочая кухня, свойственная всем языкам программирования. Но в случае с 1С огромную долю работы на себя берёт платформа, поэтому в сложности работы компьютера «1С-нику» на начальных этапах карьеры погружаться не приходится.
Если говорить о «хардовых» навыках, то постепенно программисту придется изучить блоки и компоненты самой 1С, систему зарплатных регистров, периодические расчёты. Не менее важно уметь создавать разные виды справочников и документов, работать с запросами, а также применять языки разметки XML и JSON, сервисы HTTP и SOAP. Опытные 1С-программисты должны понимать не только, как адаптировать и дорабатывать готовые решения, но и как с нуля создавать конфигурации и веб-сервисы под нужды бизнеса, поскольку запросы каждого предприятия уникальны.
Из «непрограммистских» навыков полезными, но не обязательными являются знания учёта и основ бизнеса: как и чем компании вообще живут. Например, в Нетологии студентам преподают ещё и основы бухгалтерского учета.
Будет ли легче учить другие языки программирования со знанием 1С?
Сегодня отраслей и предметных областей, которые так или иначе затрагивает IT — очень много, поэтому знание нескольких языков для программиста это норма. Даже, если ты пишешь на JavaScript, тебе на компьютер ставится Python и C++, потому что node.js их себе требует. Знание нескольких технологий и широкий кругозор сегодня почти обязательны.
В этом тоже, кстати, преимущество 1С. Если ты не знаешь фронтенда, то твоему начальнику придется привлекать к команде разработки веб-программистов. Однако, если ты разбираешься в 1С, то можешь долгое время работать, обходясь только этим языком программирования и быть, при этом, успешным специалистом. В других же стеках, если ты знаешь только одну технологию, то ты со связанными руками, потому что ни одной серьезной задачи бизнеса ты не сможешь сделать целиком.
Если у человека есть желание кодить и осваивать новые языки, то, с одной стороны, после 1С ему будет легче — не придётся заново запоминать, что такое переменная, условие и цикл, потому что это общие концепции, которые есть и в других языках. С другой стороны, будут и сложности: придётся переключаться на кодинг на английском языке, а также привыкать, что под рукой нет решений из «коробки» и все низкоуровневые вещи, вроде миграции полей в базе данных и рисования интерфейса, нужно писать самому.
В целом, будет нетрудно переключиться на Java Script, потому что это стандартная разработка для веба, или освоить Python — язык, который в принципе создавался для того, чтобы быть простым. Поэтому, ответ — да. Если никогда не программировал, то после изучения 1С будет легче изучить что-то ещё.
Где учиться на 1С-программиста?
Знания, достаточные для погружения в профессию, дают очные и интернет-курсы. Многие из них рассчитаны именно на новичков, поскольку опытные специалисты нарабатывают навыки на реальных кейсах.
В Нетологии на первом этапе обучения реализован метод «программирования без кода». Сначала студенты учатся создавать решения нажатием кнопок мыши вообще без кода. И они, даже не написав ни строчки кода, видят результат своей работы — готовое работающее приложение. Можно ввести необходимые данные (клиент, заказ, склад) и посмотреть на результат. Это даёт первичное понимание процесса работы «1С-ника».
После освоения базовых навыков, наступает этап детального изучения самой программы. Здесь студенты не только оттачивают мастерство работы с блоками и компонентами 1С, но, главным образом, учатся понимать, как автоматизировать бизнес-процессы так, чтобы это помогало предприятиям развиваться и приносить прибыль. Если погружение в обучение было последовательным и тщательным, выпускники курсов без труда устраиваются на работу уже в новом качестве — 1С-программистов.
Из металлурга в 1C-программиста за 1 год — Жизнь на DTF
6910 просмотров
В сегодняшнем интервью мы пообщаемся с Ильей, что перешел из промышленного сектора в 1С-программирование. Контактные данные Ильи в конце интервью оставлю.
Знаю, есть огромный хейт в сторону проггерства на 1С, но есть люди, кому данное направление интересно, для них это интервью будет полезным.
1. Расскажите о себе , на кого учился , кем работал до того , как стал программистом 1с?
Учился я на металлурга. По специальности металлургия черных металлов в местном техникуме. Сам я с бедной семьи и вуз позволить не могли. После учебы пошел на завод там проработал 2 года горновым на печи, понял, что это вообще не мое. Я увлекался видеосъемкой и меня пригласили видеооператором на местное телевиденье. Там проработал 6 лет. После случилось выгорание + маленькая зарплата (приходилось постоянно подрабатывать видеографом чтобы быть на плаву) решил уйти. Устроился на местную нефтебазу. 2 года отработал там после чего она попала под консервацию, я добровольно пошел под сокращение. Там уже у меня была твердая цель стать 1сником. Сокращение сыграло на руку так как хорошие расчетные получил.
2. Что стало отправной точкой к тому , чтобы начать самостоятельно изучать программирование ?
Отправной точкой стало понимание того что в моем маленьком городе отсутствуют перспективы.
3. Почему именно 1С?
Можно много говорить про любовь к программированию, про какие то высшие цели. Для меня было все просто. Решающие параметры это – уровень зарплат, востребованность, перспективы. Всеми этими качествами обладает 1с.
В любом крупном городе нужны 1сники. Так же впечатлило когда я «по приколу» выложил резюме с опытом работы 1 год и мне начали звонить hr’ры разных компаний и приглашать работать у них. Так же работая даже с опытом 4 месяца мне поступали предложения что ищут программиста «переходи к нам». Шило на мыло конечно, но сам факт того что в данной сфере тебя пытаются переманить довольно приятен.4. Какие источники информации вы использовали для самостоятельного изучения ?
План простой – курс 21 день Гилева. Курс Милькина. Книга Радченко Запросы, и пособие разработчика. В Ютубе видео Ивана Гладунца от Ironskils, канал «Техподдержка» Конечно же Илья Леонтьев с его советами по плану. Он в своих видео все по полочкам расставил. Обязательно общение в тематических кругах. Не бояться выглядеть дураком когда учишься.
5. Как именно проходило ваше самообучение?
1 мая, я официально уволен с ПАО «Газпромнефть»,чтобы не терять время я себе четко цель поставил по 8 часов в день уделять обучению. Планировал учиться до сентября. Ну не прям вот сел и зубришь. Конечно же с перерывами. Я к тому времени уже посмотрел курс 21 день и понял что ни черта не понимаю. Приобрел курс Милькина, он каких то смешных денег стоит. Часами пытался понять как эти долбаные циклы работают, чем процедура от функции отличается. К слову на первых этапах я без подсказок не смог решить ни одной практической задачи. А как работают процедуры и функции в полной мере понял когда уже работать начал.
Самая главная сложность при самостоятельном обучении это отсутствие задач и наставника который мог помочь с ними. Если погуглите то вполне можно найти и их. Помочь, провести ревью можно в тематических сообществах.
Тут мне можно сказать повезло, что я получил такого вида «отпуск», если вы семейный человек с обязательствами то конечно все будет на порядок сложнее. Наверное, главный мотиватор это поддержка близких, понимание того что усилия окупятся. У меня ситуация немного иная, так что тут я не подскажу в этом.
6. Что давалось легче всего при изучение , но а что требовало постоянного повторения и пониманию давалось с трудом?
Легко не давалась ничего. Программирование это абсолютно новая область, которую я учил почти с нуля. В любом обучении сначала учишься по шаблонам, без понимания что ты делаешь. В какой-то момент на тебя приходит озарение. И уже начинаешь понимать, что в ЯП, как и в повседневной жизни инструменты. Как молоток и отвертка. И нужно знать где какой применить. Где-то и комбинировать чтобы добиться результата. Когда приходит это понимание как пользоваться этими инструментам то обучаться становится проще.
7. Были ли проблемы с самодисциплиной ? Если были , как удалось самоорганизоваться?
Конечно были. Прокрастинация вообще мой главный враг. На отвлекающие факторы наверное процентов 30 времени обучения уходило. Самодисциплинироваться помогало понимание того что время идет. Человек, что написал вышеуказанную статью на пикабу, с которой все началось ,проводит по воскресениям стримы где делится тем как он стал 1сником. Если кому интересно — Антон Крутов. Человек специфичный, но его советы во многом помогли устроиться на работу. Ну и давали определенную мотивацию.
8. Расскажите о своём нынешнем результате? Что получилось добиться и сколько времени это заняло ?
Сегодня я с переменным успехом 9 месяцев работаю в Екатеринбурге в местной фабрике по производству отделочных материалов. Главные достижения это финансовые. Устроился на зарплату 30 тыс. Через месяц подняли до 50. Сейчас получаю 65. Договорились о подъеме на 15 тыс. раз в квартал. Возможно кого-то не впечатлит. Но нужно понимать что я все таки новичок. Далеко не гений. Многое дается с трудом. Особенность работы в том что даже получив ее – это постоянное обучение новым технологиям, так как спектр задач очень разнообразный.
9. Какими вы видишь перспективы 1С программирования в РФ?
Сейчас скорее всего спад востребованности будет. Так как перспективность 1с зависит от бизнеса. Но дефицит кадров он вряд ли покроет. Даже у нас со штатом 5 программистов потребность есть до сих пор. В случае экономического роста рынок вакансий вырастет очень сильно. Все таки хочется быть оптимистом.
10. Какие советы , вы бы дали людям, что хотят изучать 1С программирование?
В первую очередь понять для себя, подходит ли вам эта профессия. Часто на каком ни будь skillbox можно увидеть рекламу — что любой может им стать. Это не правда. Работа довольно специфичная. Если вы хотите получить какой то объем знаний и потом просто устроится, так не прокатит скорее всего. Главные качества, наверное, это усидчивость, интерес к решению головоломок, изучению нового. Программирование можно сравнить с постоянным решением ребусов. Где-то возможно не так и постоянная рутина. В моей деятельности мне еще учиться и учиться. Я не ставлю себе цели стать каким-то суперсеньором, достойный мидл меня вполне устроит =). Первым делом посмотрите ролики от действующих программистов. Изучите сферу где выбранный вами язык программирования применяется.
Если кому интересно , пишите мне в тг, подскажу по 1С чем смогу @Butch0027
Мой канал в телеграмм
Если статья показалась вам интересной, то буду благодарен за подписку на мой канал IT-старт t.me/it_begin ,где я также публикую интервью с разработчиками и обзоры технической литературы
Computer Systems: A Programmer’s Perspective Review
Computer Systems: A Programmer’s Perspective (CSAPP) — это вторая книга, рекомендованная в моей любимой онлайн-программе по информатике — научитесь сами cs . Он предназначен для того, чтобы научить вас, как работают компьютеры, с точки зрения низкого уровня. Как следует из названия, он ориентирован на программистов. Он знакомит с концепциями компьютерной архитектуры только в той мере, в какой они помогают вам стать лучшим программистом. После введения концепций более низкого уровня он основывается на этих знаниях, чтобы понять, как аппаратное обеспечение взаимодействует с операционной системой через ядро. В самом конце он даже затрагивает концепции сетей и параллельного программирования.
Обзор
Книга состоит из трех частей. Он начинается с низкоуровневых концепций аппаратного обеспечения, в частности процессора, и того, как он выполняет программы. Затем он переходит к взаимодействию между операционной системой и оборудованием при выполнении программ. Наконец, он изучает программы, взаимодействующие между собой, например, в сетях и параллельном программировании.
Книга очень техническая и не жалеет подробностей более низкого уровня там, где они необходимы. Тем не менее, он пытается сфокусировать аппаратные и системные концепции на тех, которые помогают стать лучшим программистом.
Помимо качества текста, упражнения хорошо разработаны и очень полезны. Некоторые из наиболее сложных из них связаны с созданием базовых, но функциональных версий полезных программ, таких как оболочка и параллельный веб-сервер.
Хотя принципы, представленные в CSAPP, не ограничиваются ими, все концепции и упражнения вращаются вокруг C и Linux. Если вы еще не знакомы с C или подобным языком программирования, авторы предлагают прочитать классическую книгу Кернигана и Ритчи.
Часть I: Структура и выполнение программы
В этой части книги мы узнаем, как ЦП «читает» программы. Как все на самом низком уровне — это просто биты, без разницы между «данными» и «инструкциями» и контекстом, определяющим, как интерпретируются биты.
Поскольку программы — это всего лишь биты, мы сначала изучим, как в них представлены данные. В частности, проводится углубленное изучение числового представления данных. Начиная с целочисленных значений, вводятся такие схемы кодирования, как дополнение до двух и до единицы. Для действительных чисел изучается представление с плавающей запятой. Этот уровень детализации очень полезен для понимания некоторых ошибок программирования, таких как целочисленное переполнение, ограничения точности с плавающей запятой и т. д. Переносимость системы также можно лучше понять с помощью таких аспектов, как порядок байтов (порядок байтов).
Вслед за этим исследованием представления на уровне битов вводится самый низкий уровень абстракции кода, помимо чистых битов, — ассемблерный код. Это помогает понимать программы как последовательность очень простых инструкций, которые может выполнять процессор. Мы видим, как у процессора есть небольшой набор хранилищ данных, регистров, чтобы «запоминать» какие-то промежуточные результаты. Также представлена дисциплина стека , которая упрощает вызовы функций и рекурсию.
После основных элементов сборки CSAPP представляет саму структуру архитектуры набора инструкций (набор инструкций, которые может выполнять процессор): y86-64 — упрощенная версия набора инструкций x86-64 . Этот раздел полезен для понимания на более тонком уровне того, как биты представляют инструкции и как процессор делит инструкции на «части», чтобы конвейеризировать их для повышения производительности.
Эта часть книги завершается изучением оптимизации программ на основе соображений более низкого уровня, которые были представлены в предыдущих главах.
Часть II: Запуск программ в системе
Вторая часть книги поднимается на несколько уровней абстракции и в основном посвящена взаимодействию между программами и операционной системой.
Мы начнем с более подробного изучения компиляции программ, особенно фазы компоновки. Это даст представление о том, как C обрабатывает разные исходные файлы для создания одного исполняемого файла, как общие библиотеки используются совместно программами и как ассемблерный код преобразуется в исполняемый файл.
После этого раздела идет моя любимая часть книги, исключительный поток управления. Помимо различных типов исключений (прерываний, системных вызовов, сбоев и прерываний), которые в разной степени затрагивают как аппаратное, так и программное обеспечение, в этой главе представлены процессы и сигналы. Это первый шаг в параллельном программировании, который научит вас многому о том, как операционная система управляет процессами.
Наконец, добавлена виртуальная память. Иерархия памяти представлена в первой части книги и предлагает ее аппаратно-ориентированное понимание. В главе о виртуальной памяти мы обратимся к взаимодействию между аппаратным и программным обеспечением (через ядро ОС) для создания виртуальной памяти — абстракции памяти для процессов.
Часть III: Взаимодействие и обмен данными между программами
После изучения как аппаратного, так и программного обеспечения низкого уровня для одной программы, книга обращает внимание на взаимодействие между программами, будь то на разных машинах или нет.
В первой главе представлен интерфейс ввода-вывода Unix вместе с включенными в него системными вызовами более низкого уровня. На их основе предлагается полезный пакет «надежного ввода/вывода» ( rio
), который облегчит разработку программ в следующих главах. Особенно полезно преодолеть некоторые ограничения сетевого ввода-вывода, присутствующие в вводе-выводе Unix.
Далее представлена работа в сети. Он начинается с введения TCP/IP и того, как работает Интернет. Следует введение в сокеты (используются для ввода-вывода в сети) и модель клиент-сервер. Наконец, разработан простой, но вполне функциональный веб-сервер.
Наконец, в книге параллельное программирование представлено более подробно. В нем представлены три способа достижения параллелизма: процессы, мультиплексирование ввода-вывода и потоки. Все они используются для обновления простой серверной программы из главы о сети, которая обслуживала запросы последовательно, для одновременной обработки клиентских запросов.
Заключение
По моему опыту, эта книга была огромным багажом знаний. Каждая часть книги помогла мне лучше понять, как работают компьютеры. Начиная с того, как биты используются для представления данных и программ. Как процессоры выполняют инструкции на их основе. То, как операционная система взаимодействует с оборудованием и управляет запущенными программами. Наконец, как процессы в сети взаимодействуют друг с другом.
Мне очень понравилось изучать эту книгу. В частности, для лучшего понимания того, как взаимодействуют аппаратное обеспечение, системы и программы. Очень рекомендую всем, кто интересуется этими темами.
Дополнительные ресурсы
- Официальный сайт.
- Harvard’s CS 61.
- Репозиторий с решениями для упражнений.
Подробные решения упражнений:
- Преобразование
int
вfloat
. - Преобразование
float
вint
. - Установка симулятора y86-64.
- Базовая оболочка с управлением заданиями.
Как думать как программист
Распространенное заблуждение людей о программистах состоит в том, что они все знают. Но, на самом деле, это не совсем так. Что действительно есть у программистов, так это уникальный подход к решению проблем, и в этой статье мы рассмотрим, что такое менталитет программиста. Кроме того, мы поделимся советами, которые помогут вам достичь этого.
Что такое менталитет программиста?
Давайте на мгновение представим программирование как речь. Когда вы говорите, вы стремитесь эффективно общаться с окружающими вас людьми. Когда вы программируете, вы стремитесь общаться с машиной. В обоих случаях вам не нужно знать каждое слово или элемент языка, вам просто нужно знать достаточно, чтобы передать свои идеи так, чтобы их поняли.
Когда вы используете код для решения проблемы, вам не нужно запоминать фрагменты кода и использовать их. Это больше о знании основ и их применении. Когда вы понимаете, как разбить проблему на более мелкие части и применять принципы программирования, вам не нужно запоминать все. Вы просто учитесь как подходить к задаче или проблеме, и это навык, который вы можете применять каждый раз, когда пишете код.
Разбейте все на составные части
Давайте рассмотрим простой пример того, как вы разбиваете проблему на составные части, как программист подходит к задаче.
Если бы вам нужно было описать машине (или человеку, который плохо знаком с задачей), как открыть банку с маринованными огурцами, вы не могли бы просто сказать «открыть банку». Вам нужно будет объяснить на языке, который они понимают, шаги, необходимые для открытия этой банки. Например, вы можете предложить следующий набор инструкций:
- Сосуд для захвата левой рукой
- Положите правую руку на крышку
- Затяните обеими руками
- Поворачивайте, пока крышка не отделится от нижней банки
- Снять напряжение в обеих руках
Простые советы, которые помогут вам мыслить как программист
Взгляд программиста у всех разный; это означает, что каждый программист думает по-своему и учится подходить к проблемам и решать их по-своему. Практикуясь, вы разовьете свои взгляды на программирование, и вам станет легче общаться с машинами для решения все более сложных задач.
По мере того, как вы будете развивать свою собственную точку зрения, вот несколько советов и приемов, которые вы можете использовать, чтобы научиться думать как программист и развить этот склад ума.
1. Обсудите проблему вслух
Во-первых, вы можете обсудить проблему, позвонив другу или члену семьи и объяснив им, что вы пытаетесь решить. Поговорив с кем-то, вы сможете определить, как вы можете общаться с ними, чтобы четко объяснить проблему и свое решение.
Вам сейчас не с кем поговорить? Без проблем! Просто попробуйте проговорить проблему вслух. Объясните свой подход и понимание своим питомцам или даже плюшевой игрушке. Говорить вслух — это ключ.
2. Совместная работа (работа с другими программистами)
Программисты не всегда работают сами за своими компьютерами. Им нравится учиться друг у друга. Когда проблема сложная, работа с другими программистами помогает собрать воедино лучшие идеи многих людей, облегчая поиск инновационных решений.
Попробуйте парное программирование, когда два программиста используют один компьютер для совместного решения задачи. Один программист (водитель) пишет код, а другой (навигатор) просматривает код и указывает, как разбить и решить проблему. Каждые несколько минут они меняются ролями. Это дает вам возможность увидеть другую перспективу программирования в действии. То, как ваш партнер решает проблему, будет отличаться от вашего, и это помогает расширить ваше мышление и научиться подходить к проблемам с разных сторон.
3. Шаг за шагом
Независимо от того, занимаетесь ли вы программированием или начинаете работу над большим проектом, большие проблемы поначалу могут показаться пугающими, и в них легко запутаться. Лучший способ побороть это чувство — посмотреть на проблему с высокого уровня, а затем разбить ее на более мелкие части.
Как мы говорили ранее, когда вы разбиваете проблему на более мелкие части, вы можете применить основы программирования для решения каждой части. Подходите к каждому фрагменту работы отдельно, чтобы задача была управляемой, и вы могли начать добиваться реального прогресса, шаг за шагом.
4. Начните с простого: как бы вы решили аналогичную, более простую задачу?
Вы также можете подумать о том, как решить проблему, аналогичную той, которую вы пытаетесь решить, но намного проще. Затем напишите код для решения этой небольшой проблемы. Медленно, но верно усложняйте, чтобы решить большую проблему, с которой вы столкнулись в начале.
5. Практикуйтесь, а не запоминайте
Запоминать код сложно, и вам не нужно идти по этому пути, чтобы думать как программист. Вместо этого сосредоточьтесь на основах. Изучите принципы и идеи, лежащие в основе программирования, и вы добьетесь гораздо большего, чем попытки запомнить все.
Каждый раз, когда вы решаете простую задачу с помощью программирования, вы еще более углубляете свои основы, облегчая себе задачу по мере продвижения. Необязательные задачи и проекты Codecademy — отличное место для начала. Практика является ключом к тому, чтобы ваш взгляд на программирование стал второй натурой.
6. Не волнуйтесь, если вам нужно найти правильный синтаксис
Даже некоторым из лучших программистов приходится искать синтаксис, когда они ничего не помнят. Так что не переживайте, если вам нужно искать нужный синтаксис в Интернете или в документации для разработчиков.
На самом деле, соучредитель React Дэн Абрамов написал в блоге сообщение о том, что люди часто думают, что он знает больше, чем на самом деле. Мораль этой истории в том, что вам не нужно быть экспертом во всем, потому что вы можете программировать, если знаете основы, и мы все способны изучать новые вещи.
7. Ярлыки могут быть опасны
Использование ярлыков во время обучения программированию может принести больше вреда, чем пользы. Попробуйте думать о процессе обучения, как о выполнении теннисных упражнений. Вы можете принимать стероиды, чтобы стать сильнее и стать лучшим игроком, но это, скорее всего, навредит вам в долгосрочной перспективе.
Вместо того, чтобы сразу искать ответ при возникновении проблемы, попробуйте сначала решить ее самостоятельно. Когда вы полагаетесь на кодовые решения других людей, вы не можете развить эту программную мускулатуру самостоятельно.
Сосредоточьтесь на основах, практикуйтесь и выполняйте упражнения. Проверенные и настоящие методы обучения существуют не просто так; они работают! Мы знаем, что может быть неприятно, когда нужно время, чтобы научиться программировать, но все это часть процесса формирования вашего собственного взгляда на программирование.
8. Получите помощь после того, как исчерпали другие варианты
Если вы действительно старались изо всех сил и подходили к проблеме с разных точек зрения, но все еще боретесь, сейчас самое время обратиться за помощью. Обратитесь к коллеге или учителю или опубликуйте сообщение на форуме, чтобы получить рекомендации.
Более вероятно, что у вас не лишат возможности учиться, если вы будете ждать, чтобы обратиться за помощью, пока она вам действительно не понадобится.
9. Отладка проверяет ваши знания
Отладка собственного кода позволяет сделать шаг назад и увидеть возможности для улучшения собственной работы. Легко обвинять машину каждый раз, когда что-то идет не так. Но если вы уделите минутку и проанализируете, как вы подходите к проблеме, вы увидите, где вы могли пойти не так. Понимание этого поможет вам быстрее выявлять ошибки в будущем, и вы, естественно, станете лучше, избегая этих проблем в долгосрочной перспективе.
10. Ознакомьтесь с документацией и применяйте ее к своему коду
Документация по программированию — это то же самое, что рецепт приготовления пищи. В нем показано, как должен работать код, и это отличный ресурс, который поможет вам лучше понять программирование. Умение читать документацию также отвлечет вас от поиска кратчайшего пути или простого решения ваших проблем или ошибок.
Применение вашего программирования на практике
Если вам не терпится начать практиковаться, чтобы научиться думать как программист, у нас есть некоторые ресурсы, чтобы помочь.