Как выжить в круговороте современного IT, или Зачем изучать основы

Современная IT-отрасль меняется и развивается настолько быстро, что просто физически не успеваешь за ней. Ограниченные в своих возможностях статические web-страницы были вытеснены Rich UI c функционалом сродни операционным системам. JavaScript вместе с CSS стали вездесущими. Все меньше и меньше людей пользуются стационарными компьютерами и предпочитают мобильные решения — приложения и сайты эволюционируют за потребностями пользователей. Если раньше сайты можно было крутить хоть на локальной машине, то сейчас все мигрирует в облако. Базы данных — и те с табличного вида все чаще принимают вид, эффективнее представляющий доменную область. Про waterfall уже ходят легенды, и все ведут Agile-разработку. И так куда не глянь.

Поэтому каждый хоть раз чувствовал себя как белка в колесе.

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

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

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

Насколько новы подходы в этих технологиях?
Мне кажется или где-то я это уже видел?
Почему проблемы в этой технологии решаются введением нового уровня абстракции?
Почему эти абстракции загоняют нас в рамки, которые так сложно раздвинуть, чтобы что-то изменить?

Почему каждый раз, когда что-то идет не так или технология не позволяет решить проблему — вас бросает в холодный пот? Неужели нельзя найти ответ на Stack Overflow (не надо только говорить, что и вы там не ищете ответ в первую очередь), и придется тратить часы, а то и дни, чтобы понять, как это новое колесо, состоящее из десятков старых колес, все-таки едет вперед?

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

Так что там по поводу заземлиться или нащупать фундамент?

А фундамент — это и есть фундаментальные знания. Легко можно забыть API очередной технологии, но принципы и основы — нет. Так же, как научившись плавать одним стилем, вы сможете освоить любой стиль плавания при должной физической подготовке и желании.

И не то чтобы я был против изучения новинок, я против того, чтобы тратить на них 100 % времени. Малой части будет достаточно с головой. Главное, постигнуть основы.

Сразу хочу сказать, что основ очень много. Нельзя ограничивать себя только тем, что нужно кровь из носа: ваш серверный язык программирования, OOP, HTTP, SQL, JavaScript, HTML, CSS, ваша система версионирования, ваша IDE и т. д. Нужно учить то, чему учат только в университетах: высшую математику, алгоритмы, автоматы, теорию вероятности, матстатистику, мат. методы исследования операций и т. д.

Но пока это голые слова, и вы можете задать логичный вопрос. Нужно ли мне все это, чтобы заниматься той ежедневной рутиной? Пилить формочки, фиксить элементарные баги и писать простейшие запросы в базу данных? Как показывает практика — нет, оно не надо и подавно.

Дак почему же на собеседованиях спрашивают вещи с которыми, за редким исключением, вы никогда не встречаетесь? Зачем нужны логические задачи и вообще задачки, зачем нужны вопросы по математике, структурам данных или о вещах, скрытых от вашего повседневного взора? Почему такие мастодонты, как Google, Amazon и другие, делают на это упор?

Имею смелость предположить, что работодателя да и вас самих беспокоят не ваши умения запоминать ответы на вопросы, что с каждым собеседованием становится намного легче, и даже не знание всех новых API. А все же оценивается ваш ум: насколько он гибок; сможет ли он выучить новую приблуду и желательно быстро; сможет ли он отделять мух от котлет, что очень важно при таком количестве новых и старых технологий.

Что же нам дадут некоторые из основ?

Вот мое краткое видение:

Математика: алгебра и геометрия — это первые шаги в логическом мышлении. Еще Аристотель описал основы логики, что в дальнейшем повлияло на многих греческих философов/математиков. Это кажется дико, но не всегда легко понять, что было причиной того или иного бага или проблем с системой. А логика математики может помочь в развитии таких навыков.

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

Теория вероятности и матстатистика: тяжело представить современные системы без огромного количества ивентов. Big data тут, big data там. А там, где есть куча ивентов, всегда есть и необходимость их анализа. Вид нормального распределения не тот — пора бить тревогу. Но если для вас это просто график, то в следующий раз вам его даже не покажут.

Структуры данных: данные везде, и их надо где-то хранить. Но у нас уже есть стандартные структуры наподобие list и map! Как показывает практика, их возможностей начинает не хватать в самый неподходящий момент, и чтобы это быстро устранить, нужно знать альтернативы, знать, где они уже используются, — все это может помочь в самый неожиданный момент.

Алгоритмы: это следующий шаг в логике. И если математические теоремы не предполагали особых вариантов, то алгоритмы вводят понятие сложности, проблемы выбора, оптимального именно для вашей задачи. Это поможет вам научиться сравнивать альтернативы, взвешивая все за и против.

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

Компьютерные сети: нас уже не удивляет тот факт, что даже самая простая программа требует подключения к интернету, и вообще большая часть нашей жизни протекает там. Но в большинстве случаев мы не сможем объяснить, как наш браузер находит конкретный сайт, как компьютер подключается к другому и почему нам нужны другие протоколы помимо http/https.

Электротехника: мы привыкли принимать новую технику за само собой разумеющееся, но кто-то вообще задумывался, как она работает? Что такого интересного дают нам NPN- и PNP-переходы и что привносят в нашу цивилизацию транзисторы?

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

Проектирование систем: все хоть раз слышали про GRASP-паттерны, о том, что Coupling должен быть low, а Cohesion — high. Но слышать — это одно, а понимать и даже делать — совсем другое.

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

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

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

Похожие статьи:
If you on the lookout for a unique gift for someone special, but you are unsure what to buy, then we have a great idea for you. Have you considered creating your own Personalised Star Map? Maybe you don’t know what these are, so let’s start with...
«МегаФон» первым из мобильных операторов начал сотрудничество с российской платежной системой «Мир». Теперь каждый владелец...
Мнение одного разработчика. Пролог Что такое командная работа? Чем команда отличается от группы людей? Предположим, команда — это...
Ранее мы уже писали о том, что компания Samsung планирует выпуск большого планшета с диагональю экрана целых 18,4 дюйма. Устройство...
26-річний Микита Нагаткін співзасновник і СЕО одеської ІТ-компанії Digis потрапив до цьогорічного рейтингу Forbes...
Яндекс.Метрика