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

Когда я был школьником, урок информатики был одновременно и самым веселым, и самым кошмарным занятием.

Самое интересное заключалось в том, что вы могли играть в Mario, Dangerous Dave, Tekken, MotoRacer и другие 32-битные игры в Windows 95, когда учитель отсутствовал или если вы выполняли задание быстрее. cltr+f4 был нашим лучшим другом, чтобы не дать себя поймать за игрой в классе.

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

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

Время изменилось, люди изменились, технологии изменились, но бедный компьютер все еще понимает только 1 и 0.

Первое, что пришло мне в голову, когда я подумал об изучении программирования, это сначала погуглить. Я тратил несколько часов на чтение статей, новостей, поиск вакансий и подписку на различные новостные каналы и онлайн-курсы, связанные с программированием.

Самый распространенный поисковый запрос о программировании: какой язык программирования мне следует выучить в первую очередь?

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

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

Тогда я сразу подумал в уме — «ну ладно, тогда я буду программистом»

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

Затем наступила трудная часть. Я ожидал, что информатика всегда будет практичным занятием по программированию и решением головоломок. Но у меня была смесь, начиная от сложной компьютерной архитектуры и компиляторов на уровне инструкций, заканчивая встроенными системами и IoT, такими вещами, как байесовская статистика и сложная логика, и многими другими вещами, которые заставляют вас думать: «Святая корова !! такие вещи существуют». Отсутствие сильного фундамента в области информатики определенно мешало с самого начала работать на солидном уровне.

Как человеку, имеющему базовый опыт работы с MatLab и Python, мне приходилось использовать C++, C#, Java, Javascript и многие другие языки во время моего курса.

Я разочаровался и начал бегать по нескольким курсам МООК в надежде быстро изучить эти вещи. За это время у меня было более 20 зачисленных курсов на Coursera, edX, Udacity и т. д. (кстати, никогда не делайте этого!!)

Но, боже, я так ошибалась!! Даже с более простыми заданиями у меня было много проблем, и мне приходилось искать помощи на форумах и в Google. Если вы добавите библиотеки и фреймворки к этим языкам, количество вещей, которые мне нужно было выучить, превысило бы 2 цифры. Реальность заключалась в том, что я не знал самой элементарной фундаментальной ВЕЩИ (видите, что я там делал?), которая помогла бы мне легче понять эти вещи.

Неспособность идти в ритме с курсами заставила меня через некоторое время осознать ВЕЩЬ. Впоследствии я взял перерыв в колледже после 1-го семестра, просто чтобы убедиться, что эти два набора навыков — это то, что мне абсолютно необходимо освоить, прежде чем пытаться создавать свои собственные вещи.

Основы программирования + Навыки решения проблем — два столпа для каждого величайшего программиста.

Во время самостоятельных занятий я постепенно начал понимать многие вещи, которые ненавидел на уроках информатики. Раньше я совершенно ненавидел алгоритмы и логику в обычных классах, потому что они были очень многословными и длинными. Но когда эти вещи не были частью моего экзаменационного списка, я изучал их больше, и они мне нравились больше. Если вы все еще их ненавидите, эта головоломка может вас немного изменить. http://datagenetics.com/blog/july22012/index.html

Переходя к основной теме (Извините, если я собрал весь лес только ради банана), ответ прост — «как угодно, язык не имеет большого значения».

Язык не имеет значения, важна способность решать проблемы.

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

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

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

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

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

Суть в том, что абсолютно не имеет значения, популярен ли X-язык программирования, чем Y. Если у вас есть хорошие навыки решения проблем, то даже если вы английский специалист, ХОРОШАЯ компания скорее наймет вас и обучит чем кто-то, кто имеет высшее образование в области CS, но просто обезьяна-кодировщик. Это ниже очень хорошее чтение по вышеупомянутой теме. https://blog.codinghorror.com/please-dont-learn-to-code/

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

  1. Изучите основные основные концепции одного языка программирования по вашему выбору. Используйте МООК, видео на YouTube, читайте книги и т. д. (1 неделя для самых основ, 2–3 недели для перехода к среднему уровню (может варьироваться)).
  2. Найдите простые задачи в Интернете и попытайтесь решить их, используя то, что вы узнали из языка. Многие онлайн-курсы имеют эти мини-задания и курсы в конце каждой концепции. (2–3 недели).
  3. Если вы чувствуете себя смелым, примите участие в испытаниях Project Euler. https://projecteuler.net/ Вы также можете попробовать codewars для дальнейших задач. https://www.codewars.com/ (1 неделя)
  4. Как только вы почувствуете себя уверенно, когда пишете что-то на пустом экране, подумайте о какой-нибудь идее или вещи, которую вы хотите улучшить или создать. Попробуйте разбить его на части и выполнять части по одной (представьте, что это групповой проект, который распределяется среди участников). Если вы столкнулись с проблемами, зайдите на форумы на этом конкретном языке, попросите помощи у друзей или в Интернете (stackoverflow, quora) и т. д., когда вы застряли. (2–3 недели)

Со всеми этими шагами вы сможете реализовать свои собственные простые идеи в коде за 2–3 месяца. Продолжайте искать уникальные проблемы, которые вы можете найти (в Интернете, на природе, в вашей жизни, в вашей школе или на работе), и попытайтесь решить эти проблемы. Когда вы найдете способы решения проблемы, запишите решение. Единственная разница в том, что теперь вы пишете решения в формате кода, а не в блок-схемах (теперь ничего особенного, а?).

Однако на своем пути никогда не забывайте об этих двух важных аспектах:

  1. Поймите, что все начинали с простых строк кода, таких как var x = 1; Если вы упираетесь в стену, оставьте проблему на некоторое время, подышите свежим воздухом, прочитайте и посмотрите больше на эту тему, попробуйте еще раз. , попросите помощи в конкретных сомнениях и продолжайте.
  2. Практика, практика и практика. Хватит гуглить, какой язык лучше, за какой платят больше и т. д. Технологии меняются каждый день, как и язык, но ваши навыки решения проблем помогут вам понять, что находится внутри.

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