После колледжа у вас есть кирпичи и раствор, но с приобретением практического опыта вы начинаете получать доступ к планам.

Фундаментальный фундамент

Многие компьютерные ученые изучают информатику в университете или колледже, некоторые проходят курс конверсии после получения первой нетехнической степени¹, а другие подбирают вещи по ходу дела.

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

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

Применяя изначально полученные знания, наряду с новыми советами и приемами, вы, конечно же, постепенно восполняете необходимый запас опыта, который можно использовать для предоставления инновационных и практических решений в реальном мире.

Отличный пример

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

Как я уже сказал, для начала вам нужно знать основы.

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

В этом случае возможно инициализация переменной (укажите значение по умолчанию!) И индексация в массиве путем повторного увеличения этой переменной (естественно, проверьте условия и границы начала / конца) с вариациями синтаксиса в зависимости от выбранного вами языка.

Обладая определенными навыками или опытом, вы можете начать немного сокращать составные выражения, такие как array [i ++] или тернарные операции (? :) в C, или перейти к использованию специализированных библиотек, таких как STL в C ++ ³ или некоторых других. медленно интерпретируемые заранее написанные модули на Python⁴.

Имея небольшие функциональные знания или сталкиваясь с более продвинутыми языковыми функциями, такими как Map (map (_ :) или / @) в Swift или Wolfram Language, ваше мышление становится немного более эзотерическим и немного более эзотерическим. меньше коренится в битах и ​​байтах и ​​деталях базовой реализации языка, который вы используете.

При рассмотрении этой статьи я думал, что просмотрите Твиттер 5 минут, выпейте кофе с печеньем и… эй! Я могу сопоставить массив (не беспокоясь о начале, конце и границах), затем использовать составной оператор If внутри Map и использовать Reap и Sow для возврата результатов⁶!

Дразнящая мысль

Именно тогда меня осенила мысль, которая подтолкнула меня к этой статье:

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

Вокруг, конечно, ходят фрагменты алгоритмов, но также и решения, которые я ранее кодировал для других проектов, что-то, что я читал на Stack Overflow на прошлой неделе, спор с коллегой о том, что Swift явно превосходит Javascript во всех возможно, все любят отборные кусочки хлеба (или шоколада) в фондю из смыслового сыра! В прямом смысле.

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

Часто, когда мы рассматриваем сложную проблему, мы смотрим в космос, ища лучший способ либо подойти к проблеме на начальном этапе, либо найти лучший первый способ реализации.

Это не только объединение суммы ваших знаний и опыта, но и интеграция нового опыта в ваши модели мышления.

Учтите, что в следующий раз, когда вы будете смотреть в космос, пытаясь решить проблему, позволив всем частям вашего прошлого опыта объединиться в смесь мыслей. Надеюсь, это пролит новый свет на то, что вы на самом деле делаете, и поможет вам понять, что именно в этом и состоит творческий процесс, особенно в отношении разработки программного обеспечения!

[1]: Инженерное дело, а? Нет, серьезно, они конвертируют, потому что понимают, насколько очаровательна информатика, амирит?
[2]: Я не поощряю тесты по программированию - я думаю, что они совершенно неуместны и устарели, и для этого написали a очень популярная статья по поводу моих мыслей некоторое время назад. Если вы столкнулись с такой проблемой, ее стоит прочитать.
[3]: Хорошо, не лучшая идея, поскольку она ужасно продумана, но она действительно работает и надежна. Вы уловили идею.
[4]: ​​Javascript - не единственный язык, который мне не нравится. Я полагаю, по крайней мере, на Python приятно смотреть, даже несмотря на то, что он интерпретируемый.
[5]: Да, я немного страдаю от прокрастинации. Что ж, не страдайте как таковое, мне нравится думать об этом как о творческой помощи. Конечно, мой работодатель может не согласиться.
[6]: В данном случае из Wolfram Language.
[7]: Пустая сторона - это перспектива реализации решения на Javascript или, возможно, C # , то, что делать категорически нельзя.