Выше было название проекта, над которым нам предстояло работать на этой неделе. Раньше у нас было несколько проектов на C, но все предыдущие проекты были в основном введением в язык. Этот новый проект был совсем другим. Видите ли, цель Холбертонской школы состоит в том, чтобы превратить нас в инженеров с полным стеком.

мммм… но этот термин немного расплывчатый и широко используется в этой отрасли. На самом деле, когда я думал о том, чтобы отправиться на запад, чтобы поступить в Холбертонскую школу, я устал от этого семестра. Перед отъездом в Сан-Франциско я планировал посетить Mobile Makers в Чикаго, учебный лагерь для iOS. Дон Бора, соучредитель и главный инструктор Mobile Makers, а также друг моего отца, был взволнован, когда узнал, что я собираюсь поступить в Холбертон, но устал от того, как школа готовит «полных» инженеров. Полный стек — это очень широкий термин, и он включает в себя множество разных вещей, которые углубляются в то, как люди хотят его использовать. Вы можете столкнуться с людьми, которые называют себя «инженерами с полным стеком», потому что они могут заниматься как фронтендом, так и бэкендом. Круто, здорово… рад, что ты можешь делать две вещи…. но «полный стек» по своей сути означает нечто совсем другое. Взгляните на это так — возьмем, к примеру, веб-страницу для покупки авиабилета в Калифорнию (это открытое приглашение для моих чикагских друзей посетить… подсказка… подсказка). У вас есть внешний интерфейс, часть веб-страницы, с которой вы взаимодействуете, где вы вводите свою личную информацию и выбираете пункт назначения в Калифорнии. Серверная часть имеет дело с серверами, приложением и базой данных, поэтому, когда вы снова войдете на эту веб-страницу, вы сможете проверить статус своего рейса и увидеть, что, к сожалению, он задержан из-за плохой погоды в Чикаго (еще одна причина посетить Калифорнию). . Итак, у вас есть интерфейс и серверная часть… но подождите… в разработке программного обеспечения есть гораздо больше, чем просто это. А как насчет всех остальных частей, таких как безопасность и построение тех самых языков, на которых все написано? Я даже не упомянул о мягких навыках, таких как маркетинг, или других закулисных вещах, таких как системное администрирование. Когда дело доходит до разработки программного обеспечения, существует так много слоев. Со скромным и реалистичным пониманием того, что никто не может быть экспертом во всех областях полного стека, цель Холбертона состоит в том, чтобы сделать всех нас достаточно опытными, чтобы отделить каждый слой и справиться с ошибками, независимо от того, насколько глубоко они находятся. Чтобы сделать это, вам не нужно владеть всеми аспектами разработки программного обеспечения, вам просто нужно иметь четкое представление о том, как каждая часть сочетается друг с другом, и иметь инструменты в своем наборе инструментов, чтобы понять это оттуда. И именно поэтому мы решаем алгоритмы на C.

Итак, вернемся к началу этого поста. Наша задача состояла в том, чтобы «написать функцию, которая принимает целое число в качестве параметра и печатает его». Звучит просто. Просто напишите функцию, которая принимает число «n» и выводит его на экран. ХА. НЕА. Совсем непросто. Это было ограничение среди многих других.

  • Вам не разрешено использовать стандартную библиотеку. Любое использование таких функций, как printf, puts и т. д., полностью запрещено.

ГАВ. Единственной функцией, которую мы могли использовать, была «print_char», которая печатает один символ. Не очень полезно, когда в параметр передается шестизначная цифра. Нам нужно было придумать алгоритм, который брал бы заданное число, вычислял, сколько цифр в этом числе, извлекал бы из этого каждое целое число, составляющее это число, и печатал бы их по порядку. Разобраться с алгоритмом было непросто. После того, как задача была опубликована, многие из нас все еще были в тупике… поэтому мы затолкали себя в единственную комнату для совещаний с белой доской, чтобы обсудить проблему. Через несколько часов у нас было подобие алгоритма без прикрепленного кода. Некоторые из нас думали: «О, отлично… мы ничего не добились». Но Жюльен, один из наших соучредителей, хотел подчеркнуть это. Он сказал, что самой сложной частью этой задачи было выяснить алгоритм, кодовая часть проста (ну, может быть, когда я лучше разберусь в C, это станет легкой частью). Он хотел, чтобы мы поняли, что когда мы сталкиваемся с такой проблемой, вы не можете начать с кода — вы должны сначала понять, как решить ее с помощью ручки и бумаги. Поясню: ручка и бумага никогда не устареют. Трудно усвоить этот урок, если вы проводите более двенадцати часов в день, печатая на компьютере.

Алгоритмы никуда не делись. Мы учимся использовать наш мозг и подручные средства для решения проблем. И это именно то, что «инженер с полным стеком» должен уметь делать уверенно и легко. Я еще не там, но алгоритмы завоевания и C — это лишь некоторые из инструментов в этом наборе инструментов.

Первоначально опубликовано на codechickblog.com 11 февраля 2016 г.