Мой друг однажды мне сказал: «Я хочу научиться программировать. С чего мне начать?»
Я хочу научиться программировать. Должен ли я пойти в Ikea или вырастить собственное дерево?
Это как работа плотника. Вы можете посадить собственное дереве, вырастить его, затем срубить, обработать, распилить на заготовки, отшкурить, полачить и в итоге получить шкаф. А можете пойти в Ikea. В большинстве случаев вы попытаетесь сделать что-то среднее.
Изменить тему для WordPress — это как сходить в Ikea. Написать свой собственный фреймворк — сродни выращиванию собственного дерева, в первую очередь по той причине, что вам не нравятся все существующие деревья. Вы должны решить, где именно ваше место в жизни. Либо вы станете обычным плотником из Woodright's Shop, либо мастером краснодеревщиком, способным создать произведение искусства.
Хорошо, так с чего же мне начать?
Отлично. Я всегда счастлив, когда люди хотят научиться программировать. Обсуждение в Facebook выдало следующие популярные предположения:
- Codecademy.com
- KhanAcademy.org/cs
- Code.org
- learncodethehardway.org
- Udacity
- CodeSchool
- Harvard's CS50x at edX
- CoderByte
После чего появляются более интересные вопросы, ведущие к корню проблемы.
В чем разница между кодером, хакером, программистом, разработчиком и ученым?
Все эти слова могут значить для вас одно и то же. Вы также могли слышать слова гик, ботан, компьютерщик, но мы все знаем огромную разницу между этими понятиями. Понимание разницы также может подсказать вам, как далеко вы хотите зайти в изучении программирования.
- Кодеры — вполне могут решить задачу. Оно будет работать, хоть и будет выглядеть весьма неопрятно.
- Хакер — как правило люди, копающие очень глубоко. Они знают о какой-либо области многое, иногда — пугающе многое.
- Программисты — пишут код и понимают алгоритмы. Часто работают в одиночку и весьма неплохо.
- Разработчики — лучшие работники широкого профиля. Могут использовать множество различных систем и языков программирования и заставляют их взаимодействовать друг с другом. Настоящие профессионалы, умеют работать и общаться с людьми.
- Ученые — умеют понять и доказать как работают компьютеры, на теоретическом уровне. Как правило также являются математиками.
Если вы уже близки к одному из данных критериев, вы можете подумать, в какую сторону двигаться дальше.
Говорим ли мы о веб программировании?
Каждый в обсуждении подразумевал какой-либо вид веб программирования, что, в принципе, для 2013 года почти неудивительно, поскольку уже почти все сейчас завязаны на веб. Однако, всего несколько лет назад мы могли сесть с моим другом и вместе сделать консольный Hello World, либо накидать несколько формочек и контролов в Visual Basic и отвизуализировать Hello World.
Является ли разметка кодом? Многие говорят «учи HTML и CSS», но я не считаю, что это программирование в классическом понимании. Это неплохой старт на пути к JavaScript и веб сервисам. В действительности, хотя и не каждое приложение показывает HTML и работает в браузере, но большинство программ соединены с вебом так или иначе. Приложения потребляют данные от сервисов, посылают уведомления, твиты, почту. Почти каждое приложение является в той или иной степени распределенным, даже если это простая программа, которая обращается к серверу за данными.
Если вы хотите стать программистом в наше время, или, если пойти дальше и перефразировать, если вы хотите стать эффективным программистом, вы должны понимать, что на самом деле происходит когда вы набираете twitter.com в адресной строке браузера, так же, как вы должны понимать, как растет дерево, если хотите стать плотником, как работает двигатель, если мечтаете быть гонщиком или откуда течет вода, если решили стать водопроводчиком. Черт, да вы на самом деле должны понимать все эти вещи, если хотите стать эффективным человеком. ;)
Что мы на самом деле подразумеваем под «Я хочу стать программистом»?
В чем скрытый смысл этого вопроса? Вы хотите делать веб сайты? Или рисовать для них дизайн? Хотите ли вы создавать мобильные приложения для повседневного использования? Может вы хотите создать устройство, которое будет отсылать вам сообщение, если гаражные ворота остаются открытыми дольше обычного? Все это очень разные сферы и есть много отличных путей начать изучать программирование, если мы немножко копнем.
- Интересно веб программирование?
- Вам подойдет любой из сайтов «учимся программировать», упомянутых выше
- Интересно «железо»?
- Подумайте о Raspberry Pi или Arduino
- Заинтересованы в истории создания кода, который вы используете каждый день?
- Почитайте http://learncodethehardway.org/
- Хотите стать хорошим разработчиком?
- Прочитайте «Coder to Developer» Майка Гундерлой (Mike Gundelroy)
Вы можете запросто ворваться в веб, изучить JavaScript, начать делать веб приложения, и вы должны. Но как и во всем, если у вас есть более глубокий интерес, то перед вами существует несколько путей, которыми пойти дальше. Подумайте немного над доступными возможностями и, возможно, вы попробуете несколько иной путь.
P.S. От переводчика. В статье я слова «программист», «программировать» вместо оригинального «code», «coder» для обозначения общего понятия нашей профессии, поскольку именно это слово чаще всего употребляется в широких кругах.
Ну и напоследок хочется спросить у аудитории — кем вы считаете себя?
Автор: glamcoder