Начать свой путь к карьере программиста стоит с ответа на вопрос, нужно ли вам программирование вообще? Этот вопрос не относится к тем, кто учится или учился по специальности, близкой к программированию. Если вам в школе математика давалась лучше, чем гуманитарные науки, если вам нравится проводить много времени за компьютером, если вам хочется изучать что-то новое, тогда программирование вам подойдёт.
С чего начать
Есть несколько вариантов развития событий, в результате которых человек становится программистом. Первый — родители-программисты, которые всему научили своих детей. Таким детям даже не нужно идти в университет. Второй вариант — модная профессия программиста. После школы нужно было выбрать, куда пойти учиться, и выбрали модное направление IT, вроде бы понравилось. И последний вариант — хобби, которое переросло в работу.
Если с вами ничего из вышеперечисленного не произошло, значит, у вас есть выбор из четырёх вариантов:
- Самообразование. Этот вариант можно использовать как самостоятельно, так и в паре с другими методами. В интернете полно сайтов, книг и приложений, которые помогают изучать различные языки программирования и технологии. Но это самый тяжёлый путь для начинающих.
- Университет. Если вы оканчиваете школу и хотите быть программистом, тогда идите в университет. Если не за знаниями, тогда за корочкой. Она может послужить бонусом при устройстве на работу. Хотя и какие-то знания вы тоже получите. Но не забывайте заниматься и самообучением. К выбору вуза стоит подойти очень ответственно. Внимательно изучите программы обучения и выбирайте лучшие технические вузы.
- Ментор. Будет очень неплохо, если вы найдёте человека, который согласится помочь вам и направит вас в правильную сторону. Он подскажет подходящие книги и ресурсы, проверит ваш код, даст полезные советы. Кстати, мы уже писали о полезном ресурсе, где вы сможете найти ментора. Наставника можно искать среди знакомых программистов, на IT-тусовках и конференциях, на онлайн-форумах и так далее.
- Специализированные практические курсы. Попробуйте поискать в своём городе курсы, где вас обучат какому-нибудь языку программирования или технологии. Я был приятно удивлён количеством таких курсов в Киеве, в том числе бесплатных и с последующим трудоустройством.
Какой язык, технологию и направление выбрать
Когда вы станете программистом, через годик-другой будете вольны выбирать любой язык, который вам нравится. Но при выборе первого языка программирования новичок должен учитывать следующие критерии:
- Наличие на рынке вакансий. Конечная цель этого пути — найти работу программистом. А это будет трудно сделать, если на рынке вакансий никто не будет искать разработчиков на вашем языке программирования. Проверьте сайты с вакансиями, посмотрите, кого больше ищут, выпишите десяток языков. И переходите к следующему критерию.
- Низкий уровень вхождения. Если вам придётся потратить длительное время на изучение языка, это может отбить у вас охоту к программированию вообще. Почитайте о тех языках, которые вы выбрали выше. Просмотрите литературу, которую нужно будет прочитать, чтобы изучить эти языки. И выберите те, о которых пишут, что они лёгкие, или которые вам показались лёгкими. Такими языками могут оказаться PHP, Ruby, Python.
- Кайф от процесса. Если вам не нравится писать код на выбранном языке, вы не будете получать удовольствия от этого процесса, от работы и от жизни. А оно вам надо? Делайте правильный выбор.
Также вам придётся определиться с направлением программирования. Мобильное, десктопное, игры, веб, низкоуровневое программирование и так далее. Самые популярные и относительно лёгкие отрасли — разработка под веб, мобильные и десктопные клиенты. Под каждое направление может подходить один язык и совсем не подходить другой. То есть при выборе языка программирования также стоит отталкиваться и от этого фактора.
В любом случае изучите веб-технологии. Это язык разметки HTML, стили CSS и JavaScript, который позволит сделать вашу страницу динамической. На следующем этапе изучите серверный язык (Python, PHP, Ruby и другие) и подходящие для него веб-фреймворки. Изучите базы данных: практически в каждой вакансии программиста это упоминается.
Как получить начальный опыт
Без опыта вы не получите работу. Без работы вы не получите опыт. Замкнутый круг реальной жизни. Но ничего страшного, мы из него выберемся.
Во-первых, не стоит ждать, пока вы прочитаете все книги по выбранному языку программирования. Начинайте писать свои первые строки кода уже после второй главы книги. Выполняйте все задания из книг, перепечатывайте примеры, разбирайтесь в них. Усложняйте примеры и задания из книг своими идеями. Создавайте свои задачи к пройденному материалу. Решайте эти задачи.
Если вы знаете английский язык, регистрируйтесь лучше на англоязычных биржах. Рынок там больше. Если не знаете английского, учите его. А пока что вам доступны русскоязычные биржи фриланса. Ищите небольшие проекты, которые соответствуют вашему уровню знаний или чуть выше него. Подайте заявку на пару десятков таких заданий. И приготовьтесь получить море отказов. Но если одна-две заявки выстрелят, у вас будет шанс получить реальный опыт.
Ещё одним неплохим вариантом для получения реального опыта является open source. Таким проектам всегда нужны новые люди, пусть даже и новички. Вы можете поискать в проекте баги или посмотреть в баг-трекере и предложить методы их решения. Найти такие проекты легко на GitHub или других сервисах для хостинга кода. Не стесняйтесь задавать там вопросы.
Четвёртый вариант получения опыта — помощь знакомым программистам. Попросите их передать вам маленькие и несложные задания. Если что-то не будет получаться, у вас всегда будет к кому обратиться. И при этом вы будете участвовать в реальном проекте.
Последний способ — собственные проекты, различные хакатоны или работа в коворкинге. Свои проекты сложно начинать самому, лучше поискать знакомых или друзей.
Почему стоит выбрать Python
Давайте немного подробнее поговорим о выборе первого языка программирования. Первый язык должен быть простым и популярным на рынке. Таким языком является Python. Я очень советую выбрать именно его в качестве первого языка программирования.
Код программы на Python читабелен. Вам даже не нужно быть программистом, чтобы в общих чертах понять, что происходит в программе. Из-за несложного синтаксиса Python вам понадобится меньше времени для написания программы, чем, например, на Java. Огромная база библиотек, которая сэкономит вам кучу сил, нервов и времени. Python является высокоуровневым языком. А значит, вам не нужно особо думать о ячейках памяти и о том, что там разместить. Python — язык широкого назначения. И он такой простой, что даже дети могут его выучить.
Справедливости ради стоит упомянуть и о других языках программирования. Java может стать неплохим выбором для новичка. Этот язык популярнее, чем Python, но и немного сложнее. Зато инструменты для разработки гораздо лучше проработаны. Стоит только сравнить Eclipse и IDLE. После Java вам будет проще перейти к работе с низкоуровневыми языками программирования.
PHP — ещё один очень популярный язык. И, мне кажется, он даже проще, чем Python. Очень легко найти себе ментора или решение какой-нибудь проблемы на форуме. Всё потому, что в мире существует огромное количество PHP-программистов разного уровня. В PHP нет нормального импорта, есть множество вариантов решения одной и той же задачи. А это усложняет обучение. И PHP заточен исключительно под веб.
Языки C и C# очень сложны для новичка. Ruby — хороший выбор в качестве второго языка, но не первого. JavaScript — очень простой язык, но ничему хорошему он вас не научит. А задача первого языка программирования всё-таки научить вас чему-то правильному, задать какую-то логику.
Важен ли английский язык
Важен! Не знаете? Учите. Знаете? Совершенствуйте. Учитесь читать, писать, слушать и говорить на английском. Делайте упор на техническую литературу. Слушайте англоязычные подкасты. Читайте англоязычные учебники по программированию.
Что нужно знать, кроме языка программирования
Конечно же, кроме языка программирования и английского, нужно знать что-то ещё. А вот что — зависит от направления, которое вы выберете. Веб-программист обязан знать HTML, CSS, JavaScript. Десктоп-программист учит API операционной системы и различные фреймворки. Разработчик мобильных приложений учит фреймворки Android, iOS или Windows Phone.
Всем нужно выучить алгоритмы. Попробуйте пройти курс на Coursera или найти подходящую для себя книгу по алгоритмам. Кроме этого, нужно знать одну из баз данных, паттерны программирования, структуры данных. Стоит также познакомиться с репозиториями кода. Хотя бы с одним. Обязательно знание систем версионного контроля. Выбирайте Git, он самый популярный. Вам нужно знать инструменты, с которыми вы работаете, операционную систему и среду разработки. И главный навык программиста — уметь гуглить. Без этого вы не проживёте.
Последние шаги
Вам нужно подготовить резюме. Не просто резюме, а хорошее резюме. Не стоит писать там лишней информации, но и умалчивать о своих умениях тоже не нужно. После того как вас пригласят на интервью, вы должны к нему подготовиться. Пройдитесь по материалу, который указан в вашем резюме. Вы должны быть уверены в своих знаниях. Просмотрите проекты, над которыми вы работали, вспомните технологии, которые вы применяли. И вперёд — к светлому будущему с новой профессией программиста.
Каждый раз, с трудом преодолевая жизненные преграды, хочется взять и перекроить этот мир под себя. К сожалению, мы не рождены творцами этой вселенной. Тем, кто хочет удовлетворить свои амбиции создателя, остается лишь виртуальный мир.
Хотя для творения здесь понадобится не столько волшебство и знание рун, сколько знание основ программирования. Поэтому для всех начинающих творцов виртуальной реальности мы поведаем о том, как научиться программировать.
Как бы ни хотелось этого признавать, но в реальности программирование является не таким уж волшебным делом. Создание кода порой можно сравнить с хождением босыми ногами по морскому дну, устланному острыми каменными обломками.
Чтобы стать программистом, нужно быть не только умным, но еще терпеливым и настырным. Обучение программированию всегда сопровождается головой болью, красными от недосыпания глазами и отрешенным взглядом. Именно по нему можно легко узнать программиста.
Многие начинающие обучение считают написание кода чуть ли не самой романтической профессией. Особенно увеличилось количество желающих познать программирование после просмотра фильма «Матрица». Именно главный герой этой картины Нео подтолкнул многих к становлению на путь постижения программных наук:
Но большая часть начавших изучение бросают его уже через несколько недель. И основной причиной этого является неправильно выбранное направление обучения, методика или даже учебник по программированию.
После развала СССР все отечественные ВУЗы долгое время даже и не пытались перекроить свою систему обучения под потребности современного рынка. Не являлись исключением из этого правила и технические ВУЗы.
Программирования как отдельной отрасли и специализации не существовало как таковой. Его основы преподавались лишь как привязка к другим инженерным дисциплинам. И даже те крохи знаний, которые давались студентам в этой области, не соответствовали современным стандартам и утратили свою актуальность еще 20-30 лет назад.
В странах бывшего СССР основным языком программирования, преподаваемым в технических ВУЗах, был Бейсик.
Ситуация кардинально не изменилась и через 10 лет. Лишь некоторые учебные заведения, учуяв веяния нового времени, в начале двухтысячных года начали перекраивать свое обучение под мировые стандарты. И только с этого момента программирование стало восприниматься как отдельная профессия и специализация обучения:
В это же время стали появляться различные специализированные коммерческие курсы и учебные заведения. Но качество преподавания и даваемых в них знаний находились на крайне низком уровне. Не хватало грамотных профессионалов, способных обучить новичков не только теоретическим знаниям, но и практическим навыкам программирования.
А это в профессии программиста является наиболее важным аспектом. Поэтому большинство из сегодняшних гуру российской IT-индустрии начинали свое обучение программированию с нуля самостоятельно.
В некоторой мере такая тенденция сохраняется и по сей день. Хотя в наше время количество профессионалов, занимающихся преподаванием, заметно возросло.
Постижение программных наук характеризуется не только тяжелым обучением, но и его началом. Новичку порой трудно не только начать самостоятельное обучение, но и определиться с координатами отправной точки процесса. Поэтому мы постараемся помочь вам обойти все эти трудности:
Прежде чем ломать зубы об гранит науки, следует определиться, с чего начать изучение программирования. На первых этапах очень трудно определиться со специализацией. Поэтому начнем с подбора первого языка.
Чаще всего выбор падает на язык программирования C (си). Именно с него большинство новичков во всем мире начинают свое обучение. На основе C было создана основная часть программных языков, и во многом они наследуют его структуру и синтаксис.
Изучая C, вы постигаете основы не одного языка программирования, а сразу нескольких.
Рассмотрим особенности этого языка, делающего его оптимальным для изучения:
- Простая для понимания основа – часть встроенных возможностей языка для простоты вынесена в отдельно подключаемые библиотеки. К таким элементам относится большая часть математических функций и методов для работы с файловой системой;
- Оптимально подогнанная система типов – благодаря простому набору типов данных и строгой типизации уменьшается риск допущения ошибок в процессе написания программного кода;
- Направленность C на процедурный тип программирования, при котором соблюдается четкая иерархия всех элементов кода;
- Доступ к памяти машины с помощью указателей;
- Минимальное количество поддерживаемых ключевых слов;
- Поддержка области действия имен;
- Поддержка пользовательских типов данных (объединения и структуры).
Проще говоря, C – это то, с чего следует начинать новичку перед тем, как научиться программированию на других языках.
Для обучения программированию недостаточно одного лишь желания и наличия компьютера с выходом в интернет. Для написания программ на C вам потребуется специализированное программное обеспечение – компилятор.
Компилятор – специальная программа, переводящая программный код в форму, понятную для компьютера.
Вот несколько специализированных компиляторов с поддержкой языка C:
- Microsoft Visual Studio – профессиональный инструмент, поддерживающий множество языков, в том числе и несколько серверных. Подойдет для новичков, если брать его «на вырост»:
- Borland C++ — бесплатный компилятор, идеально подходящий для начинающего обучение. В отличие от предыдущего инструмента, отличается ясным и понятным интерфейсом. Поэтому его освоение не вызовет особых трудностей даже при самостоятельном освоении азов программирования:
- Code::Blocks – бесплатная среда разработки, поддерживающая написание кода на нескольких языках. Средний по сложности освоения вариант:
Что касается специализированной литературы, то советовать книги определенных авторов мы не будем. Тут, как говорится, выбирайте, что душе угодно. Потому что в большинстве случаев подбор самоучителя по программированию – это индивидуальный процесс. Используйте тот источник, который больше подходит именно для вас.
Да и в интернете можно найти очень много информации.
После освоения основ программирования у многих сразу появится вопрос, куда двигаться дальше. Уже на этом этапе обучения следует задумываться о выборе основной специализации в области программирования. Вот те, которые больше всего востребованы на современном рынке:
- Веб-программирование – здесь понадобятся знания PHP, CSS и HTML;
- Разработка приложений под мобильную операционную систему Android – данная платформа построена на основе Java. Поэтому потребуется знание основ этого языка;
- C# (си sharp) – дальний потомок C. На основе C# построена веб-технология ASP.net от Microsoft.
И последний совет всем начинающим. Перед тем, как приступить к обучению программированию с нуля, следует запастить терпением. А также: таблетками от головной боли, кофе, чаем и побрить череп наголо. Потому что во время постижения программных наук, обучающиеся часто вырывают волосы со своей головы вместе с корнем. Удачного старта!
как стартовать и куда двигаться? / Хабр
Бывает, что человек, совсем не связанный с IT, проникается интригующей красотой этой сферы и ставит себе задачу постепенно освоить программирование с нуля. И тут он зачастую просто теряется, не понимая, с чего начать, и нуждаясь в хорошем фундаменте и системном подходе.Я, будучи недавно в такой же ситуации, гуглила, искала мануалов на Хабре (кое-что нашла: Десять советов начинающим программистам, Начинающему программисту про стартапы и не только…), но в итоге всё же была вынуждена обратиться за советом к одному хорошему человеку, который составил для меня вот такой план. С разрешения этого человека размещаю данный план на Хабре – вдруг он пригодится и кому-то ещё. (Тем более, что перечисленные книги относятся к «золотому фонду» литературы в данной сфере и проверены временем.)
UPD: Новичкам советую обратить внимание на комментарии — там активно и аргументированно корректируется этот план.
Этап I. Основы
Нортон «Программно-аппаратная организация IBM PC»
Эта книга, несмотря на свою давность, относятся к тем, что пока отнюдь не устарели. Как новичок подтверждаю – повествование вполне понятно и для почти полного чайника в IT.
Гук «Аппаратные средства IBM PC»
А эту книгу стоит прочитать «поверх» – она расскажет о том, как дела в данной сфере обстоят сейчас.
Этап II. Hardware
Шаг 1
Морс, Алберт «Архитектура микропроцессора 80286»
Почему тут берётся за основу именно микропроцессор 80286 – станет понятно по изучении трудов первого этапа.
Шаг 2
Гук «Аппаратные интерфейсы ПК»
Гук «Интерфейсы устройств хранения»
Этап III. Операционные системы
Шаг 1
Таненбаум «Архитектура компьютера»
Шаг 2
Колисниченко, Аллен «Linux: полное руководство»
От общей теории переходим к изучению конкретной операционной системы – на примере Linux.
Немет, Снайдер, Хейн «Руководство администратора Linux»
Этап IV. Собственно программирование
Шаг 1
Керниган, Ричи «Язык программирования С»
Почему первым для освоения выбран именно язык Си? Как мне рассказали знающие товарищи, он поможет достичь правильного «программистского мышления», чего было бы сложно достичь, начиная изучение, скажем, с Паскаля. Кроме того, язык Си по-прежнему используется в наши дни и подходит как для прикладного, так и для системного программирования.
Шаг 2
Кнут «Искусство программирования»:
Том 1. Основные алгоритмы
Том 2. Получисленные алгоритмы
Том 3. Сортировка и поиск
Бентли «Жемчужины программирования»
Зачем осваивать эти труды? Как уже отмечали на Хабре – «наверное, нигде больше, чем в айти, не изобретается такое огромное количество велосипедов». Данные книги помогут этого избежать – и попутно будут прививать умение писать не просто код, а хороший код.
Ну а для затравки можно прочесть небольшой цикл лекций «Культура программирования» (автор – А. Бабий). Он помогает начинающим программистам понять, что их деятельность не будет проходить в вакууме, а неизбежно включит взаимодействие с другими программистами, с заказчиками и пользователями (а также включит необходимость копаться потом в своих собственных или в чужих программах).
Закономерный вопрос новичка: сколько времени займёт изучение всего этого? По прогнозам моего советчика, у человека, который может тратить на изучение программирования только вечера и выходные, на прочтение и осмысление литературы первых трёх этапов уйдёт полгода-год. На четвёртый этап тоже даётся год – чтение должно сопровождаться практикой по самостоятельному составлению программ. Как получится на самом деле – время покажет.
Буду крайне благодарна за ваши советы и уточнения.
(Иллюстрации к статье А.П. Ершова «Программирование — вторая грамотность»)
Стив Джобс не написал ни строчки кода, Билл Гейтс — написал. Пол Грэм — первоклассный программист, Питер Тиль — юрист по образованию, сооснователь PayPal и владелец Palantir (написал ли он что-нибудь?), а Илон Маск в детстве написал свою игру и успешно её продал.
Никита truesnow из #tceh сказал мне, что на курсе «Врубаемся в Ruby» они научат программировать любого человека, даже с нуля. Я спросил его: «А с гуманитарием справитесь?» И мы задумались, были ли случаи, когда «гуманитарий» выучил язык программирования?
На ум сразу пришел бомж-программист, но после успеха с его приложением он предпочёл остаться «дзен-монахом». Есть ли еще примеры? Вдохновляющий пример, что научиться кодить может каждый — слепой программист. Когда я прочитал статью на Хабре «Смотря на код с закрытыми глазами», то понял, что нет преград, кроме собственных отмазок.
А у меня для вас есть три истории из моей жизни. Просто три истории.
История первая — ламер
Слово «ламер» я прочитал в «Компьютерре». Там давалось такое определение: «Ламер — отнюдь не безграмотный человек, не умеющий (как бы это помягче выразиться?) программировать». Окрылённый истиной я побежал и рассказал об этом друзьям-одноклассникам, но они предпочли поиграть в футбол, вместо того чтобы освоить суперспособности. Забавно, что потом все они зарабатывали программированием деньги, а я нет. Через неделю я записался в краевую станцию юных техников (КСЮТ), где был кружок по программированию. Там для новичков давали qbasic. А боги прогали на C.
Так вот как-то один из «богов» подозвал меня к монитору и спросил: «Так сможешь?». И показал прогу, которая ждала, когда пользователь введёт в командной строке любой символ, а потом поворачивала его на 90 градусов. Я был ошеломлен.
Наверное, меня это так зацепило, что я решил — во что бы то не стало, выучить все что можно, и стать самым крутым программистом. Заряда хватило на годы. Этот случай я позабыл, прошло несколько лет, и, вспомнив о нем, я написал не больше десятка строк на basic`e минут за 20. Программа работала идеально.
Вывод. Личные отношения с падаванами очень важны. Возможно, ваша простенькая программа определит судьбу человека и повлияет на выбор жизненного пути.
История вторая — первый шифр
Идея пришла внезапно. Пришла так, что не смог заснуть и сел кодить. Из шифров тогда я знал только про пляшущих человечков из Шерлока Холмса (а это класс 8 или 9, занимался программированием полгода-год). Мне захотелось написать шифр, чтобы нельзя было так просто его вскрыть простым анализом.
Задумка была следующая: каждой букве русского алфавита мы приписываем массив из 5 символов в виде букв русского и английского языка, спецсимволы. При шифровании мы рандомно выбираем один из них. Получалась «расширенная» простая замена. Это сейчас мне понятно как его ломать, но тогда для меня была запредельная высота. Через 3-4 года я поступлю на компьютерную безопасность.
Вывод. Решать интересные задачи — это круто. Но гораздо круче придумывать и находить задачи самому.
История третья — триумф BASIC`а
Я уже 2 года «занимался» программированием. И тут в школе появилась… информатика. Меня почему-то отправили в слабую группу. Как узнал позже, моё лицо не понравилось преподавательнице и она посчитала, что я тупой. Мои друзья ворвались в кабинет к директору и сказали, что я занял призовое место на краевой олимпиаде по программированию. Начались, разборки, но мне было так пофиг, что я остался в слабой группе, где учили вводить цифры в Exсel. За первую неделю я сдал всю программу и спокойно ходил играть в Diablo 2 в компьютерный клуб.
А на олимпиаде был забавный случай. Разрешённые языки — C, Pascal, а я то был прожжённым бейсичником. Выкрутился. Задачу принимали в виде exe’шника, а я подсуетился и нашёл бейсик, который кует exe’шники. Программы проходили тесты, а сами тесты принимались на серваке. Одна задача была сугубо вычислительная. Давались координаты центров и радиусы двух окружностей. Требовалось выдать взаимное расположение окружностей в текстовом виде: пересекаются, касаются, одна в другой, совпадают, и прочие.
С формулами было возиться лень, и недавно я как раз разбирался с графикой. Задачу решил графически, рисовал окружность одним цветом, а потом «сканировал» попиксельно по второй окружности, втыкаюсь ли я в уже окрашенный пиксель. Был большой страх, что прога не сможет работать на серваке без монитора, но все обошлось — 10 тестов из 10. На разборе задач был звездный час. Полсотни человек решили задачу один в один как автор, какого же было их удивление, когда я рассказал свой способ.
Вывод. Школа — зло. Результат — круто. Нестандартное мышление — прикольно. Обходной путь есть всегда.
Зачем взрослым учиться программировать
У меня есть три ответа на этот вопрос. Они зависят от горизонта планирования:
— Цель на 1 неделю или месяц — это вызов. Это как пробежать марафон или забраться на Эльбрус, проверить не засохли ли мозги, выйти из зоны комфорта.
— Цель на год-два — это бабло. За это время можно научиться создавать ценность и работать удаленно. Или учить других. Очень многие хотят научиться программировать.
сам поискал 8 сентября:
на русском в 1000 раз меньше:
— Цель на 5-10 лет — развитие в целом. Во-первых, вы улучшите своё мышление. Во-вторых, вы сделаете неоценимый подарок детям. Они получат несколько лет форы в изучении программирования и у вас появится много чудных моментов совместного написания программ. Для полного счастья останется научиться играть в компьютерные игры, но это вы скорее всего уже умеете.
Как научиться программировать
Есть заезженная картинка на этот счёт:
Почему-то все сразу начинают советовать Кнута, Кормена и прочее, но неподготовленный человек сможет осилить только предисловие. Если совсем проблемы с самооценкой возьмите детскую книгу и напишите игру.
Если готовы приступить по-взрослому, то есть множество ресурсов для самообучения. От Coursera (раз, два) до всяких %имя%academy (codeacademy, htmlacademy и пр)
Если намерения совсем серьёзные, могу посоветовать курс «Врубиться в Ruby».
Во-первых, есть живой преподаватель с хорошим бэкграундом в разработке. Виталий Куреннов, 6 лет пишет на Ruby и больше года обучает всех желающих этому навыку, работал над Ruby проектами для Nokia и Avaya.
Во-вторых, есть группа единомышленников, работая бок о бок с которыми, у вас многократно повысятся шансы дойти до победного конца и освоить программирование до того уровня, когда оно начнет приносить прибыль.
— Никита, почему именно Ruby?
— Все просто, мы нашли очень хорошего преподавателя.
Про Ruby
Попробовать сделать первые шаги можно прямо сейчас, займет всего 5-10 минут.
Нашел шикарный ресурс с геймификацией и сразу из браузера tryruby.org
За 5 минут выполняем несколько заданий, получаем ачивку и переходим на следующий уровень.
А зомбяк не хотите ли? railsforZOMBIES.org
Про Lisp
«Однако я не думаю, что смогу убедить кого-нибудь (старше 25) выучить Lisp.» Пол Грэм, «Побеждая посредственность»
Начитавшись Грэма, осваиваю Lisp.
;; Welcome to L(λ)THW!
(let ((llthw '(learn lisp the hard way)))
(format t "~{~@(~A~)~^ ~}, because ~{~A~^ ~} is easier!" llthw (cddr llthw)))
;; Common Lisp: Powerful, Expressive, Programmable, General Purpose, Multi-Paradigm.
Нашёл для себя удобную браузерную обучалку Learn Lisp The Hard Way
«За те годы, что я проработал в Viaweb, я прочитал множество объявлений о найме на работу. Примерно каждый месяц появлялся новый конкурент. Первое, что я делал после того, как проверял, доступна ли онлайновая демонстрация работы их программы, — смотрел список их вакансий. Через пару лет я научился отличать опасных конкурентов от неопасных. Чем больше отдавало IT-мэйнстримом от описания требуемых кандидатур, тем менее опасна была компания. Самыми безопасными были те, кому требовались специалисты по Oracle. О таких не стоило беспокоиться. Также мы были спокойны, если требовались разработчики на C++ или Java.Если требовались программисты на Perl или Python, это уже было слегка пугающе — это значило, что компанией или, по крайней мере, ее технической частью заправляли настоящие хакеры. Если бы я когда-нибудь увидел объявление о найме на работу Lisp-хакеров, я бы обеспокоился не на шутку.» Пол Грэм, «Побеждая посредственность»
Ещё пара советов
- Читайте Хабр. Например, вот это статья может очень помочь тем кто уже начал свой путь — «Почему научиться программировать так чертовски тяжело?» Или история успеха — «Как я сам научился программировать за 8 недель»
- Читайте Пола Грэма. Он вдохновит заняться программированием кого угодно. Даже меня. Даже на Lisp.
- Найдите единомышленников
- Найдите вдохновляющую задачу
напримерОбщие упражнения:
Project Euler содержит более 500 математических задач (на теорию чисел, числовых систем и пр.), которые нужно решить, используя программирование на любом языке.
Code Abbey хранит более 200 задач по программированию. За решения 125 из них выдают сертификат, чем мотивируют многих студентов.
Rosalind — это ещё один сайт наподобие Project Euler, который предоставляет на выбор более 200 задач по биоинформатике.
Codingbat.com дарит упражнения по Java и Python, как для новичков, так и для продвинутых программистов.
codegolf.stackexchange.com – сайт, на котором публикуют и обсуждают программистские головоломки.
Ruby Quiz — серия головоломок, в которых вас просят написать короткие программы различной сложности. Исходные решения описаны на Ruby, но их можно реализовать на любом языке.Задачи из олимпиад по программированию:
UVa Online Judge — коллекция из сотен задач с олимпиад по программированию, с онлайн-системой проверки решений.
TopCoder содержит сложные задачи на алгоритмы, собранные годами с разных соревнований. Также несколько раз в месяц проводит олимпиады по программированию.
CodeForces похож на TopCoder, но содержит больше задач на соревнованиях и несколько особых фишек, включая «виртуальные соревнования».
Timus — то же, что и UVA. Содержит задачи с последних соревнований (мирового и регионального уровня).
SPOJ — похож на UVA, с огромным числом языков программирования на выбор.
USACO содержит несколько задач на алгоритмы с руководством по их решению.Под определённые языки:
Для Prolog, Lisp и подобных языков посетите P-99 и L-99, наборы из 99 задач для повышения вашей эффективности в данных языках.
Python Challenge — объединяет загадки и головоломки, которые помогут вам серьёзно прокачаться в Python.
4Clojure — набор упражнений по программированию, специально разработанных под Clojure, Lisp-подобный язык.
- Соревнуйтесь
- Играйте в Игры для программистов
- Пишите код каждый день
- Пишите о своих успехах и находках на Хабр
P.S.
Ещё интересные статьи с Хабра на тему быть/не быть программистом и как делать шаги на пути мастерства
P.P.S.
Алан Кэй делится яркой идеей об идеях. Архитектура, математика, обучение, программирование и много ещё интересного.
Как выучить программирование с нуля
Как учить программирование с нуля
1. Самостоятельно
Если вы обладаете железной силой воли и горите желанием стать программистом, то можете добиться своей цели с помощью самообразования. Это не самый простой и короткий путь: вам придётся самому разбираться в информационном хаосе и бороться с прокрастинацией. Зато вы можете учиться в удобное время за относительно небольшие деньги или же совсем бесплатно.
Начинать проще всего с интерактивных онлайн-курсов. В Сети есть множество площадок, материалы которых доступно объясняют основы программирования и задают направление для дальнейшего развития. Особое внимание уделяйте тем курсам, которые обучают на примерах реальных проектов, то есть поэтапно рассказывают, как создавать конкретную программу или сайт.
Платформа с бесплатными курсами по веб-разработке freeCodeCampЗапомните, что у вас ничего не получится без практики. Учитесь по проектно-ориентированным курсам и пытайтесь сами писать разобранные в них программы и сайты. Ищите лекции на YouTube с разбором проектов, которые вы бы хотели разрабатывать. Сначала копируйте работу других людей и анализируйте её. Затем пробуйте отходить от оригинала, экспериментируйте, изменяйте отдельные элементы, пока не сможете создавать что-то уникальное.
Помимо курсов и видеолекций, к вашим услугам официальная документация, доступная на сайтах языков, и книги. Когда разберётесь в основах, поищите свежие издания с подзаголовком Best Practices по выбранному языку программирования. Такие книги содержат лучшие приёмы разработки.
Обязательно поставьте перед собой цель создать свой проект и постоянно работайте над ним.
Это поможет закрепить полученные знания и понять, какой информации вам ещё не хватает. Ваши навыки будут развиваться вместе с проектом. Когда закончите его, работайте над новым — более сложным.
Если у вас возникнут трудности в процессе обучения или разработки, вы всегда сможете обратиться по любому вопросу к сообществам программистов вроде «Тостер» и Stack Overflow. Вам, например, помогут решить какую-нибудь задачу, выбрать хороший курс или укажут на ошибки в коде.
Сервис вопросов и ответов на технологические темы «Тостер»Оттачивать навыки удобно на специальных площадках, где можно посоревноваться с другими программистами, решая с помощью кода различные практические задачи. В числе таких сервисов — Codewars, TopCoder и HackerRank.
Если почувствуете, что ваше развитие зашло в тупик, или захотите ускорить обучение, попробуйте следующие варианты.
13 советов тем, кто изучает программирование самостоятельно →
2. С помощью ментора
Ментор — персональный наставник, который указывает на ошибки, предупреждает о подводных камнях, помогает прокладывать курс обучения. Полезная рекомендация, полученная в нужный момент, может избавить вас от многих проблем и сэкономить массу времени. Поэтому ментор никому не помешает.
Узнайте, есть ли среди ваших знакомых разработчики. Возможно, кто-нибудь из них захочет вам помогать. Если таких людей вы не знаете, можете поискать их в сообществах программистов. К примеру, на том же «Тостере». Только услуги менторства стоят недёшево, а за просто так тратить много времени на незнакомых людей никто не желает.
3. У преподавателей «живых» курсов
Дистанционные и очные курсы с преподавателями, которые обучают программистов с нуля, стали невероятно популярными за последние годы. В рамках этого формата вам также предстоит очень много работать самостоятельно. Зато вы будете заниматься по профессионально подготовленной программе, а решения задач будет проверять живой человек. К недостаткам курсов можно отнести высокую стоимость обучения.
Популярные русскоязычные онлайн-площадки, которые занимаются системной подготовкой программистов: «Нетология», GeekBrains и Loftschool.
Если предпочитаете заниматься очно, можете поискать образовательные центры, которые обучают программированию в вашем населённом пункте. К сожалению, такие заведения чаще всего присутствуют только в больших городах. В качестве примера можно привести компьютерную академию «ШАГ», у которой есть филиалы в нескольких странах.
4. В университете
Если у вас много времени в запасе и вы уверены, что хотите связать жизнь с программированием, можете изучать компьютерные науки в университете. Но имейте в виду, что традиционные учебные заведения отстают от прогресса, так что современные языки программирования и прочие технологии вам придётся осваивать самостоятельно.
С другой стороны, университет даст фундаментальные знания математики, алгоритмов и других областей, которые помогут вам стать высококлассным программистом. За годы усердной учёбы вы сформируете правильный тип мышления, благодаря которому будете схватывать всё на лету в профессиональной сфере.
Как выбрать направление и язык
В ИТ-индустрии можно выделить несколько направлений, в каждом из которых используют свой набор языков. Перечислим основные направления в порядке возрастания сложности:
- Веб-разработка. Популярные языки: JavaScript, PHP, Python, Ruby.
- Мобильная разработка. Популярные языки: Java, Swift.
- Разработка игр и программ для настольных компьютеров. Популярные языки: C++, C#, C.
- Big Data, машинное обучение. Популярные языки: Python, R, Scala.
На что обратить внимание при выборе
Чтобы сделать правильный выбор направления и, в частности, языка, учитывайте следующие факторы: сложность освоения и количество обучающих материалов в Сети, ваши личные предпочтения (что именно хотите разрабатывать) и востребованность языка на рынке труда.
График востребованности языков на международном рынке труда / research.hackerrank.comВостребованность языка в вашем регионе легко проверить на сайтах для поиска работы. Просто откройте раздел для разработчиков ПО и посмотрите количество доступных вакансий.
ИНФОГРАФИКА: Какой язык программирования учить первым →
Если не можете определиться
Если вы в замешательстве, присмотритесь к JavaScript — языку, на котором написан почти весь веб. Многие организации и программисты советуют новичкам выбирать именно этот язык в качестве первого.
Например, основатель образовательного ресурса freeCodeCamp Квинси Ларсон рекомендует JavaScript всем начинающим. Ларсон приводит очень простые аргументы:
- JavaScript относительно легко освоить. А чтобы написать что-то и запустить на этом языке, достаточно иметь редактор кода и браузер.
- JavaScript — самый востребованный язык на международном рынке труда и у него большие перспективы. В экосистему JavaScript инвестируют крупные компании вроде Google, Microsoft и Facebook.
- У JavaScript очень широкая сфера применения: от сайтов и браузерных игр до мобильных приложений.
Кроме того, вокруг этого языка сформировалось крупное сообщество разработчиков. Высокий интерес к JavaScript обеспечивает огромное количество курсов, книг и другого образовательного контента.
Что ещё должен знать программист: математика и английский?
Любому программисту не помешает глубокое понимание математики. Для таких направлений, как разработка игровой графики или большие данные, математический ум — это необходимость. Но что касается веб-разработки и создания несложных программ, то в большинстве случаев без математики можно обойтись. Хотя среди профессионалов на этот счёт нет единого мнения.
А вот понимание английского, хотя бы на уровне беглого чтения документации, обязательно для всех программистов. Официальные документы и большая часть образовательных материалов появляются в первую очередь на английском языке. Книги часто устаревают ещё до того, как выходит перевод. Кроме того, знание английского открывает перспективы для работы со всем миром.
Как выучить английский язык: всё самое интересное и полезное →
Как получить первый опыт и первую работу
Чтобы найти первую работу в качестве программиста, вы должны иметь портфолио. Это созданный вами проект, а лучше несколько, которые демонстрируют все ваши умения разработчика. В программу большинства курсов входит разработка проектов, которые могут войти в ваше портфолио.
Очень ценным пунктом в резюме будет наличие опыта работы, особенно командной разработки. Но где его взять, если вы ищете первую работу?
- Выполните несколько заказов на биржах фриланса. Это могут быть «Фрилансим» или Upwork. Предлагайте свои услуги бесплатно, тогда к вам придут первые заказчики.
- Найдите единомышленников и создайте с ними общий проект. Люди объединяются для таких целей почти на каждой образовательной площадке, где есть курсы по программированию.
- Выберите курсы, организатор которых помогает с трудоустройством. Например, в GeekBrains после обучения открывается доступ к стажировкам от разных компаний, в том числе — оплачиваемым. GeekUniversity и «ШАГ» гарантируют трудоустройство своим выпускникам.
Перед собеседованием не забудьте поискать в Сети списки задач и вопросов, которые часто задают соискателям.
Программирование — один из ценнейших навыков для карьерного роста, саморазвития и создания чего-нибудь удивительного. Десять советов для тех, кто только начинает своё путешествие в мир программирования, от Lifehacker.
10. Выясните, почему вы хотите программировать
Выбранное направление в учёбе будет зависеть в большей степени от того, почему именно вы хотите научиться программировать и сколько времени вы готовы уделять этому процессу. Если вы хотите стать программистом, первое что следует сделать — это записаться на профессиональные курсы (Google скомпилировал список навыков и курсов для тех, кто хочет стать инженерами-программистами). Если вы хотите создавать игры и веб-сайты для развлечения в свободное время, лучшим выбором являются интерактивные курсы. Bloc создал сравнительную таблицу курсов в зависимости от загрузки, стоимости и причины изучения программирования.
9. Выберите правильный язык программирования
Не существует лучшего языка программирования, и как только вы выучите один, вам будет нетрудно освоить и второй. Так что не стоит зацикливаться на выборе первого языка. Тем не менее, считается, что некоторые языки даются новичкам легче, чем другие.
Язык, с которого стоит начать, зависит от причины изучения. (К примеру, если вы хотите создать приложение под iOS, вам лучше начать с изучения Swift). Если вы со всей серьёзностью отнеслись к намерению программировать, можно начать с языка C. Хотя выбрав Python, вам будет проще влиться в струю программирования. Приводим инфографику для сравнения нескольких популярных языков программирования.
8. Начните с малого… и будьте терпеливы
Независимо от выбора языка или метода обучения, вам следует начать с самого начала. Когда Дэвид Сински (David Sinsky) научился программировать за восемь недель, он, к примеру, потратил одни выходные на изучение основ Python, а другие — на Django. Взяв учебник, он удалял написанный код и снова проходил обучающий материал с нуля. Начните с основ и будьте терпеливы к себе. Взяв первый проект в программировании, разделите его на несколько этапов. И если один из способов обучения вам не подходит, не опускайте руки — попробуйте другой.
7. Попробуйте приложения для детей
Сейчас даже малыши учатся программированию. Несмотря на то, что многие программы для детского обучения весьма просты, некоторые из них (например, Scratch) подходят для любого возраста. Не имеет значения, сколько вам лет, даже детские анимационные приложения могут научить основам программирования (у edX есть новый курс обучения по Scratch).
6. Воспользуйтесь бесплатными онлайн-тренингами
Бесплатные онлайн тренинги и проекты (Codecademy, Hour of Code и др.) могут помочь вам в написании первой программы. Учебные пособия от Khan Academy, Codecademy, Code.org и других познакомят с основами программирования и всем необходимым для создания игры, сайта или другого проекта. Найдите нужный источник в зависимости от языка программирования, воспользовавшись Bento. Это хорошая отправная точка, однако дальнейшее обучение вам нужно взять на себя.
5. Пройдите онлайн-курс
Онлайн-курсы по программированию предполагают более обширную образовательную подготовку по сравнению с сайтами, предлагающами онлайн-тренинги по одному языку. Такие курсы предназначены для обучения основным навыкам в течение нескольких месяцев на занятиях университетского уровня. Я большой поклонник гарвардского онлайн-курса CS50 (его можно пройти бесплатно). Существуют также другие возможности. Вы даже можете получить образование университетского уровня, выбрав один из 15 онлайн-курсов.
Курсы по Data Science
4. Бесплатные книги по программированию
Если вы застряли на какой-то проблеме или вам нужно найти ответ на свой вопрос, не стоит забывать о справочниках. На GitHub можно найти огромную коллекцию из более чем 500 бесплатных книг по программированию. Также доступна коллекция электронных книг, охватывающая 24 языка программирования.
3. Изучайте, играя
Иногда лучшим способом обучения являются игры. В то время, как многие учебники по программированию обучают вас программировать простые либо сложные игры, некоторые обучающие сайты сами являются играми: Code Combat и CodinGame — инструменты, используя которые вы можете весело провести время.
2. Найдите наставника или станьте им
Сообщество программистов полно людей, готовых помочь следующему поколению программистов. Hack.pledge () — сайт, который поможет вам найти наставника. Либо вы сами можете стать наставником для кого-то другого. Преподавание изученного поможет вам лучше запомнить информацию.
1. Разберите чужой код
Переписывая чужой код, исследуя каждую строчку на предмет ошибок, вы сможете лучше понять общую картину. Благодаря открытым исходникам кода, вы имеете возможность узнать всё, что угодно — продолжайте учиться, используя инкрементально-хакерский подход. Только не забудьте поделиться своим кодом, если вам удастся улучшить часть ПО.
Я хочу делать сайты. Какие языки программирования выбрать?
Евгений Кучерявый, автор блога онлайн-университета SkillBox, рассказал, чем занимаются веб-разработчики и какие языки им непременно нужно знать.
Frontend-программист
Такой разработчик по определению стоит на «переднем крае» и отвечает за визуальную составляющую сайта: то, каким его видит посетитель. Frontend-разработчики следят за тем, чтобы все графические элементы исправно работали, контент отображался на всех устройствах, шрифты не «ползли», а картинки не загружались слишком долго.
1. Обучение HTML
В первую очередь начинающий frontend-разработчик должен освоить HTML — язык гипертекстовой разметки. Это базовый инструмент, который позволяет вынести на страницу все основные элементы, будь то фотографии, таблицы или текст.
2. Обучение CSS
Внешне написанная на HTML интернет-страница будет напоминать простейший текстовый документ. Чтобы «оживить» его, используется каскадная таблица стилей или CSS. Она меняет не структуру страницы, а ее внешний вид: шрифты, расположение элементов, тени и цвета. Другими словами, если HTML используется для описания логической структуры страницы, язык CSS отвечает за графические элементы и прописывается в отдельном файле.
3. Обучение JavaScript
Наконец, чтобы элементы веб-сайта могли перемещаться и реагировать на действия пользователя, разработчик прописывает код на языке JavaScript. Он заметно сложнее первых двух, но результат стоит того: от скриптов зависит появление всплывающих окон или же перетаскивание элементов на странице (например, сортировка фото в соцсети). В отличие от CSS, код JavaScript встраивается в структуру HTML, поскольку влияет не на внешний вид элементов, а на их поведение на странице.
Вчерашняя техника уже завтра: могут ли устареть языки программирования
Backend-программист
Красивая оболочка сайта не имеет смысла без начинки: видеоролики, гиперссылки и картинки должны быть связаны с сервером, базой данных, с другими интернет-сайтами. Программно-аппаратную работу сервиса берут на себя backend-разработчики. Они же отвечают за информационную безопасность (защиту от хакеров) и следят за нагрузкой на сервер (чтобы страница не «висла» из-за наплыва посетителей).
1. Обучение PHP
Базовый инструмент backend-разработчика — язык программирования PHP. Он нужен, чтобы связать видимую пользователю страницу с сервером, где хранятся какие-либо данные. Например, чтобы не выкладывать на веб-сайт по одной фотографии при помощи HTML, можно запустить скрипт, автоматически подгружающий туда условную галерею, лежащую на сервере. Язык PHP настолько сильно упрощает работу по созданию сайта, что изучать его SkillBox рекомендует и frontend-разработчикам.
2. Обучение SQL
Аббревиатура SQL расшифровывается как «структурированный язык запросов». В отличие с PHP, который нужен для связи сайта с сервером, языки SQL позволяют управлять уже самими базами данных. Сейчас существует множество подобных языков, самые распространенные из которых — это MySQL, MSSQL, PostgreSQL и прочие.
Разработчики «полного цикла» в совершенстве владеют языками, необходимыми как для frontend-, так и для backend-программирования. Они являются универсальными специалистами, хотя, очевидно, глубина их погруженности в какую-то конкретно область веб-разработки уступает осведомленности узких специалистов.
Цель этой статьи — сделать обучение программированию доступным для всех.
Как наставник, меня постоянно спрашивают:
«Какой язык программирования мне следует изучать, если я новичок?»
«Какой язык программирования наиболее востребован для работы?»
«Какой самый популярный язык программирования?»
Если вы ищете официальный рейтинг лучших языков программирования, вы можете найти его здесь: IEEE Spectrum топ-языки программирования
Этот список отлично подходит для проверки того, используется ли конкретный язык программирования сегодня.Однако, если вы новичок в программировании, я не рекомендую выбирать язык исключительно на основе списка.
Информатика является полностью кумулятивной областью изучения. Это означает, что каждая последующая тема основана на предыдущих темах.
Если вы ранее пытались научиться программированию (или любой области STEM) в школе, старались изо всех сил, но не смогли — у вас не было проблемы. Хороший профессор любого кумулятивного предмета тщательно следит за учебной программой. При условии, что каждый студент достаточно подготовлен и удовлетворяет предварительным условиям, ожидания в отношении предыдущих знаний студентов должны быть ясными.Хороший профессор понимает ожидания и не предполагает никаких знаний за пределами этой области. Все, что выходит за рамки ожиданий, нужно учить. Каждая тема в учебной программе упорядочена последовательно, в соответствии с другими темами.
Когда предмет кумулятивный, необходимо уделять пристальное внимание при разработке учебной программы курса или пути обучения. С учетом сказанного не выбирайте язык для своего рейтинга; выберите язык, для которого у вас есть полный путь обучения, который не делает никаких предположений о предыдущих знаниях.
Прежде чем вы начнете изучать кодирование, важно подумать над тем, что я высказал выше: все в информатике накапливается.
Я хотел бы повторить это, потому что самая большая ошибка, которую вы можете сделать как начинающий программист, — это сдаться, потому что вы не думаете, что вы достаточно умны, чтобы изучать программирование. Обучение кодированию не имеет ничего общего с вашим интеллектом. Да, изучать программирование сложно, не из-за того, кто вы есть, а из-за того, что есть много тем для изучения.
Первое правило: примите, что произойдет следующий сценарий: вы познакомились с новой темой, которая для вас абсолютно бессмысленна.
Этот сценарий будет происходить снова и снова. То, как вы справляетесь с этой ситуацией, каждый раз, когда это происходит, является единственным фактором, который будет определять ваш успех.
Если текущая тема, которую вы изучаете, не имеет для вас смысла, оставайтесь на месте. Не переходите к следующей теме. Чтобы повторить, темы являются кумулятивными. Пропуск вперед — это все равно что пытаться прикрепить крышу к дому, в котором нет каркаса, стен и фундамента.
Я нахожусь в этой ситуации все время . Мне часто приходится пересматривать одну и ту же лекцию видео-урока несколько раз, чтобы понять, что я изучаю. Не расстраивайтесь, если окажетесь в моих туфлях.
Если используемый вами учебник (или книга) недостаточно объяснил тему, вам придется искать другие подходящие вам ресурсы. Нет оправдания тому, чтобы сдаться только потому, что освещение вашего учебника по теме не сработало для вас. На YouTube вы можете найти практически все, что вы хотели бы узнать бесплатно.Выясните, что искать (например, [тема] на [ваш язык программирования] + любые другие полезные ключевые слова).
Если вы ищете на YouTube учебные пособия, сначала проверьте статистику. Посмотрите на рейтинг и / или количество просмотров. Если вы все еще не уверены, стоит ли видео вашего времени, прочитайте некоторые комментарии, чтобы оценить мнение других.
Многие темы не будут иметь смысла с первого раза. Поэтому воздерживайтесь от негативных мыслей о себе.
Цель состоит в том, чтобы осознавать свое понимание в процессе обучения.По мере продвижения по пути обучения вам необходимо саморефлексировать. По каждой теме, которую вы освещаете, задайте себе такие вопросы, как:
- «Имеет ли эта тема смысл для меня?»
- «Была ли новая терминология? Если да, было ли дано формальное определение для каждого нового термина? »
- «Были ли новые навыки? Я понимаю, как каждый новый навык используется в приложении? Могу ли я продемонстрировать свое понимание этого навыка, решая практические задачи? »
- «Я буду помнить то, что я только что изучил завтра? И послезавтра? Если нет, то как я запишу это в память?
Последний совет: никогда не стоит недооценивать силу запоминания.Запоминание — это совершенно недостаточно используемый подход к обучению. Да, понимание темы является конечной целью. Однако понимание может занять время. Если вы действительно пытаетесь понять тему, разбейте тему и запомните важные термины. Если вы не можете понять, как что-то работает, вашей непосредственной целью должно быть запоминание. Если вам нужны советы о том, как справиться с запоминанием, подумайте об использовании метода учебной карточки. Подробнее о том, как я использую эту технику, вы можете прочитать в моем документе «Подготовка к собеседованию».
Первым шагом является изучение основ информатики, о которых я расскажу в своей статье: Введение в терминологию информатики. Эта статья написана специально для моей аудитории — для всех. Я специально создал это так, чтобы его было легко понять любому, кто не имеет опыта работы с компьютерами.
Понятия, описанные в статье, являются преимущественно дефиниционными. Вы можете случайно прочитать статью, и этого вполне достаточно. Я рекомендую зафиксировать эти условия в памяти.Подходите к каждому термину так, как если бы вы были в школе, и вы должны иметь возможность вспомнить определение каждого термина для экзамена. Вам не нужно брать на себя такую тщательность, если вы этого не хотите. Однако чем больше этих концепций вы можете зафиксировать в памяти, тем легче будет понять более поздние темы.
Нет, вам не нужно быть сильным в математике, чтобы быть программистом. Математические навыки могут быть полезны, но они не нужны.
Если вы не уверены в своих математических способностях, я рекомендую изучить логику высказываний.Принципы, охватываемые пропозициональной логикой, являются строительными блоками программирования.
Вы можете изучить логику высказываний из этого учебника YouTube: Основные понятия в логике высказываний.
После того, как вы изучите основы информатики, вы будете готовы выучить язык программирования.
Я приложил много усилий и усилий для разработки пути, который подходит всем, независимо от их происхождения. Я выбрал Java для этого пути обучения, потому что Java — это язык, на котором я больше всего разбираюсь.
Java — один из самых востребованных языков программирования. Он классифицируется как объектно-ориентированный язык программирования (вы узнаете, что это значит позже) и используется для создания настольных, веб-и мобильных приложений.
Если вы предпочитаете учиться по книге, я рекомендую следующее: Head First Java.
Если вы ищете видеоурок, я рекомендую посмотреть видео № 1–19, 31–33, 88 и 93 в руководстве Java YouTube от Дерека Банаса: Руководство по видео Java.
Первое видео в руководстве YouTube направит вас на скачивание компьютерной программы под названием Eclipse .Eclipse является интегрированной средой разработки (IDE ). Вы можете думать о IDE как о необычном термине для текстового редактора, созданного для программистов. Это просто компьютерное приложение, которое предоставляет текстовый редактор для программирования, а также другие инструменты для запуска ваших программ. Вот ссылка на видео Дерека Банаса на YouTube о том, как загрузить Eclipse: Установите Eclipse для Java.
Алгоритм — это набор инструкций (или шагов) для выполнения конкретной задачи, где каждый шаг должен быть четко определен, может быть выполнен и конечен (то есть он не продолжается бесконечно).
Структура данных — это способ организации данных в памяти.
Алгоритмы и структуры данных являются двумя наиболее сложными темами программирования. Вам не нужно , чтобы учить алгоритмы для базовых навыков программирования. Тем не менее, если вы стремитесь работать инженером-программистом в авторитетной технологической компании, вы должны будете продемонстрировать понимание алгоритмов и структур данных во время интервью.
Что касается личной информации, то из приведенного ниже учебного руководства мои навыки работы с алгоритмом перешли от новичка к эксперту: учебник по удемскому алгоритму по алгоритмам и структурам данных.Я купил много учебников по алгоритмам. Это был, безусловно, самый полный из всех, с которыми я сталкивался. Если вы хотите изучить алгоритмы и структуры данных или подготовиться к техническим собеседованиям, этот учебник — ваш лучший выбор для успеха.
Примечание: курс дорогой, но необходимый. Мне удалось связаться с инструктором, и она щедро предложила код купона, который снижает стоимость с 50 до 10 долларов. Код купона будет применен автоматически при нажатии на ссылку.
Я рекомендую использовать следующий учебник вместе с учебником Udemy: VisuAlgo. VisuAlgo — это бесплатный ресурс, который демонстрирует, как значения, вводимые в алгоритм, меняются в процессе его выполнения.
Разработка Android, на мой взгляд, одно из самых забавных приложений Java-программирования. Приложения Android в основном запрограммированы на Java, поэтому, как только вы изучите Java, вы будете готовы изучать Android.
Вот лучшее бесплатное видеоурок для начала изучения Android: Udacity-Android Development для начинающих.
После того, как вы пройдете курс Udacity, описанный выше, у вас есть несколько вариантов, куда идти дальше. Там должно быть расширение вышеупомянутого курса, который преподается той же группой сотрудников Google. Дополнительные лекции должны стать видимыми после прохождения курса (если вы не можете его найти, найдите его в Udacity). Это хороший вариант, тем более что он бесплатный.
Тем не менее, если вы готовы потратить деньги на выдающуюся книгу, я настоятельно рекомендую следующее: Head First Android Development: руководство для мозга.Эта книга дает подробные объяснения и полезные наглядные пособия, которые действительно помогут вам изучить основные понятия Android. Каждая глава проведет вас через пример приложения. Все подробно объясняется с использованием слов и диаграмм, понятных каждому.
Stack Overflow — это веб-сайт, на котором программисты могут получить бесплатную помощь по своему коду. Если вы застряли и хотите задать вопрос, сначала найдите его. Если вы не можете найти свой вопрос, создайте аккаунт и опубликуйте вопрос самостоятельно!
Есть множество образовательных сайтов, где вы можете найти учебники по программированию.Некоторые из моих любимых — Codecademy, Udemy, Udacity, Team Treehouse и Khan Academy.
В ответ на наше обсуждение в прошлый вторник один из наших членов, Ревойберг, опубликовал дополнительный вопрос.
Вот его электронное письмо к нам:
Привет Кеннет,
Всегда приятно читать каждый пост в блоге. У каждого из них отличный контент, богатый ценностями. Мне действительно нравится читать это.
В последнем сообщении от 14 апреля 2009 года, в ответ на г-жуДжейн, ты написал:
«Судя по виду вашего веб-сайта, кажется, что вы не слишком компетентны в веб-программировании. Это нормально, но вы должны иметь в виду, что если вы хотите развиваться, вы должны выбрать один из двух путей:
— освоить веб-программирование самостоятельно
— привлечь сторонних разработчиков и научиться управлять программистами
Это то, что вам нужно сохранить иметь в виду и работать последовательно ».
Хотя это хорошо сказано, дебютант не может сделать это хорошо…
Не могли бы вы подробнее рассказать о предоставлении бесплатных или платных авторитетных ресурсов, которые вы могли бы порекомендовать читателю, чтобы узнать его в Интернете? Мы можем иметь тонны их в сети, но чтобы знать, что хорошо или нет, требуется не только ваш ум, но и ваш опыт.
Кроме того, когда речь идет об аутсорсинге этой работы по веб-программированию, не могли бы вы порекомендовать несколько авторитетных бесплатных или платных сайтов в Интернете, которые полезны для достижения роста или успеха в веб-программировании?
Я отвечу на его вопрос в 2 частях:
1) Как начать изучать веб-программирование с нуля
Для начинающих может быть довольно скучно изучать веб-программирование. Я считаю, что никто не любит читать книги по программированию или учебные пособия.
Мой способ изучения веб-программирования, такой как html, — это «целенаправленное обучение». Идея «целенаправленного обучения» состоит в том, чтобы поставить цель создать определенный веб-сайт, а затем просто «учиться достаточно» для достижения этой цели.
Будет веселее, если вы так сделаете.
Например, если вы ранее не создавали ни одного веб-сайта, вы поставили перед собой цель создать свой первый контент-сайт с целью заработать на Google Adsense.
С этой целью ваша следующая задача — начать задавать вопросы.
После всех этих лет я постепенно верю, что у Google есть все ответы, если вы знаете, как задать правильный вопрос.
Некоторые вопросы, которые вы можете задать, могут включать:
— пошаговое руководство по созданию веб-сайта
— как создать контент-сайт
— HTML-руководство для начинающих
Когда вы начнете изучать и создавать свой первый веб-сайт постепенно, ваш вопрос станет более конкретным и техническим. Вскоре вы будете задавать более технические вопросы, такие как:
— как добавить подписку
— как создать динамическую навигацию
— как добавить гиперссылку
«Целенаправленное обучение» может быть веселым, сложным и захватывающим! Чем больше вы знаете, тем больше понимаете, что не знаете.Чем больше вы учитесь, тем больше вам нужно учиться.
Помимо поиска ответа, если ваш вопрос слишком конкретен, вы также можете получить помощь от других программистов. Один сайт, где я часто задаю вопрос, это stackoverflow.com.
2) Где аутсорсинг веб-программирования
Есть несколько сайтов фрилансеров, где вы можете привлекать программистов для работы на вас. Некоторые из них — guru.com, elance.com, scriptlance.com и getafreelancer.com (мой любимый сайт, без особых причин, просто привыкните к нему).
Привлекать веб-программистов легко, если у вас есть деньги. Трудная часть в управлении ими.
Вот почему я сказал, что вам нужно научиться управлять программистами.
Большинство внештатных программистов являются программистами GIGA. GIGA расшифровывается как Garbage In Garbage Out.
Я имею в виду, что если вы не конкретизируете результат, который ожидаете увидеть, вы в итоге получите от них мусор.
Многие маркетологи разочарованы внештатными программистами, потому что у этих маркетологов есть смутное представление о конечном продукте, который они хотят, и они ожидают, что программисты будут думать за них и волшебным образом создавать то, что они хотят.
Вот несколько советов, которые вы можете использовать, чтобы лучше управлять внештатными программистами:
— Учитесь программировать самостоятельно!
Это то, как вы можете говорить на их языке и эффективно сообщать о своих потребностях. Вы можете спросить «зачем отдавать на аутсорсинг, если вы уже знаете, как это сделать?» Мой ответ «потому что вы можете использовать свое время для выполнения других более прибыльных задач или задач, которые не могут быть легко переданы на аутсорсинг».
— использовать существующий веб-сайт в качестве примера и для сравнения
Вы можете сказать: «Я хотел бы создать тот же эффект, что и на сайте blar blar blar, за исключением того, что….”
— Будьте конкретны и избегайте творческой работы
Помните, не ожидайте магии. Ваши инструкции для программистов должны быть максимально конкретными. Вы должны оставить как можно меньше места для их творчества. Большинство программистов — плохие маркетологи. Если вы дадите им слишком много возможностей для творчества, ваш конечный продукт может не быть товарным.
— часто спрашивают о ходе работы
Программисты любят показывать вам продукт ТОЛЬКО после его завершения.Это опасно, потому что они могут неправильно понять ваше требование. Чтобы сэкономить время каждого, приложите все усилия, чтобы приставить к своему программисту, чтобы показать вам все, что он до сих пор выполнил. Это особенно важно для больших проектов.
,Установка и начало работы с нуля
Убедитесь, что в вашем браузере включен JavaScript. Если вы оставите JavaScript отключенным, вы получите доступ только к части контента, который мы предоставляем. Вот как.Руководство по царапинам Примечание
Это руководство пользователя было написано для Scratch версии 1.4, которая доступна на странице загрузки Scratch 1.4. Дополнительные учебники доступны на странице загрузки.Информация о самой последней версии Scratch доступна на веб-сайте MIT Scratch.
Установка нуля
Scratch — это бесплатный, простой в использовании язык программирования от MIT, который вы можете использовать для создания всевозможных анимационных историй, произведений искусства, музыки и даже интерактивных игр. Установить Scratch просто. Все, что вам нужно сделать, это пойти в Страница загрузки Scratch 1.4, и следуйте простым инструкциям, чтобы скачать и установить Scratch бесплатно. Убедитесь, что у вас есть разрешение на установку программы на компьютер, который вы используете.
Начало работы с нуля
- В дополнение к нашему собственному руководству пользователя, руководство по началу работы с нуля и Справочное руководство по нулям содержат много полезной информации. Однако вам не нужно садиться и читать весь этот материал заранее. Может быть, будет веселее открыть Scratch и просто начать играть! Затем вы можете обратиться к справочным материалам, когда вам понадобится помощь или вы застряли.
- Scratch имеет очень простую среду программирования, состоящую из пяти основных областей.На рисунке 1 показано расположение каждой из этих областей, а в таблице 1 приведено более подробное описание каждой области.
Снимок экрана: программа Scratch с отображением категорий блоков, списка блоков, области сценариев, стадии и списка спрайтов. Категории блоков отображаются в верхнем левом углу окна программы, в то время как список боковых панелей блоков отображается непосредственно под ним. В центре страницы находится область сценариев, где можно разместить блоки. Правая сторона страницы содержит большую область отображения, чтобы увидеть, как работают программы, и область списка спрайтов под ней.
Рисунок 1. Оранжевым цветом обозначены пять областей среды программирования Scratch. Также обратите внимание на зеленый флаг и красные значки восьмиугольника, обведенные синим цветом. При нажатии на зеленый флаг созданная вами программа запускается в окне рабочей области. Нажатие на красный восьмиугольник останавливает программу.
Площадь | Функция |
---|---|
Область сценариев | В области сценариев есть три вкладки:
|
Категории блоков | Есть восемь категорий блоков. Обратите внимание, что блоки имеют разные формы. Это дает вам подсказку о том, какие блоки можно соединить вместе, а какие нельзя соединить вместе. Если фигуры совпадают, то будут работать вместе с .
|
Список блоков | Как только вы нажмете на одну из перечисленных категорий, будут перечислены различные блоки, включенные в эту категорию. |
Стадия | Это область, где спрайты выполняют или запускают сценарий, который вы создали в области сценариев. Нажатие на зеленый флажок позволяет начать выполнение сценария (если вы настроили для этого сценарий), а красная кнопка остановит выполнение сценария. |
Список спрайтов | Здесь есть три кнопки, которые вы можете использовать для создания различных спрайтов и фонов.
|
Таблица 1. В этой таблице перечислены все функции, доступные в каждой из пяти областей среды Scratch-программирования.
- Скретч-программы, также называемые проектами, создаются путем перетаскивания, сбрасывания и привязки различных блоков. Все блоки, которые объединены, называются сценарием . Простые программы могут иметь только один или два сценария, тогда как более сложные программы имеют много сценариев.
- Теперь у вас достаточно информации, чтобы начать писать сценарии и экспериментировать с Scratch. Откройте среду программирования Scratch и начните играть.
- Например, нажмите на одно из меню в левом верхнем углу экрана, например, меню Motion . На экране под ним вы увидите все команды, доступные в этом меню.Попробуйте нажать на одну из команд, например «Переместить» или «Повернуть», чтобы увидеть, что происходит со спрайтом кошки. Затем измените числа внутри команд (например, измените «Переместить 10 шагов» на «Переместить 30 шагов») и снова щелкните команду, чтобы увидеть, что происходит со спрайтом.
- Если вы хотите более полное описание того, что делает каждый блок, прочитайте Справочное руководство по царапинам MIT. Это руководство очень подробное и полезное, если у вас есть возможность поиграть с Scratch.
- Если у вас есть конкретный вопрос о том, как сделать что-то в Scratch (например, изменить цвета, сделать скачок спрайта или сохранить счет в видеоигре), попробуйте поискать в Google «как __________ в Scratch» (и заполните пустой с тем, что вы хотите сделать).Много раз вы сможете найти примеры кода в Интернете или на форумах, обсуждающих ту же тему.
Пошаговые учебные ресурсы для обучения программированию с нуля
Одна из приятных сторон использования Scratch заключается в том, что есть много людей и мест, к которым можно обратиться за помощью. Если вы застряли в программировании или не знаете, как начать конкретный проект, обратитесь к справке Science Buddies Help, I’m Stuck! Устранение неполадок в программе с нуля. В таблице 2 также перечислены некоторые дополнительные параметры для получения дополнительной информации о Scratch или задавать вопросы.
Таблица 2. Ресурсы с пошаговой помощью для обучения программированию с нуля.
Познакомьтесь с нашими научными видео
сделай слякоть! Вкусный STEM Project | Хлопковая пусковая установка — Fun STEM Activity | Как создать ArtBot |
Intro
«Как лучше всего научиться кодировать?»
«Как стать программистом»
«Как создать приложение»
Это обычные вопросы, которые каждый день задают новички, которые хотят научиться кодировать. Без сомнения, вы уже что-то гуглили в том же духе и прочитали достаточно статей / ответов до такой степени, что вам надоели «стандартные» советы.
Если нет, или если вы почему-то думаете, что у меня есть что-то новое, и я все равно хочу это услышать (я не знаю), вот короткий и в значительной степени бессмысленный ответ (я дам ему SEO-дружественный клик- название приманки: «3 шага к тому, чтобы стать программистом»):
Шаг 1. Выберите язык
Шаг 2: Изучение языка
Шаг 3: Сборка и обучение
Эй, не бросай в меня туфли. Как бы я ни хотел сказать, есть универсальный метод для обучения кодированию, на самом деле это не так.(Позвольте мне добавить Шаг 0: принять, что все учатся по-разному).
Бесчисленные более подробные ответы, описывающие шаги 1 и 2, уже существуют в Интернете, но общий ответ на шаг первый — выучить Python или Ruby в качестве первого языка (не зацикливайтесь на этом языке, вы никогда не получите началось). Если вам нужны учебные ресурсы, мы подготовили несколько руководств, которые вы можете проверить:
Некоторые из вас дойдут до этого:
Если у вас есть тот момент, когда вы стали потерянной овцой, не волнуйтесь, потому что вы не одиноки.
Практически каждый раз, когда вы спрашиваете «как мне стать программистом», разработчики скажут вам создавать вещи, поскольку создание вещей — это то, как вы можете стать программистом и это лучший способ обучения, и так далее, и так далее.
Но , как вы создаете свое собственное приложение?
Вы всегда можете следовать существующим учебным пособиям о том, как создать клон Twitter / Pinterest / Instagram / и т. Д. С любым языком и технологией, которые вы используете, но имейте в виду, что авторы этих учебных пособий фактически выполнили большую часть работы за вас, и все, что вы делаете, это понимание кода и его логики.
В этой статье мы попытаемся дать вам схему, которой вы можете следовать при создании своего собственного приложения с нуля.
Пререквизиты
Большинству приложений потребуется база данных, поэтому, если вы собираетесь создавать свое собственное приложение самостоятельно (например, для внешнего и внутреннего интерфейса), вам, вероятно, придется знать язык запросов к базе данных (обычно SQL). Если вы не создаете что-то, что не требует взаимодействия с базой данных, например, Flappy Bird.
Более того, если вы хотите создать веб-приложение, вам нужно знать некоторые базовые DevOps, чтобы иметь возможность настроить среду разработки / сервер и реально запустить приложение.
Если вы стремитесь быть только веб-разработчиком, вы можете отточить свои навыки работы с HTML, CSS и JavaScript в Codepen или JSfiddle. Если вы знаете только JavaScript и не хотите изучать другой язык, то вы можете попробовать Node.js, так как это платформа JavaScript для внутренней разработки (вы также можете использовать MongoDB в качестве базы данных, поскольку она также основана на JavaScript.)
В противном случае вы также должны знать один из следующих языков (и, как правило, веб-фреймворк), если вы собираетесь создать полноценное веб-приложение:
- рубин
- Python
- PHP
- Ява
- Go
- C #
Если вы хотите создавать игры, то вы можете изучить Lua, хотя C # также является очень хорошим выбором благодаря движку Unity 3D и его огромному сообществу.Что касается разработки собственных мобильных приложений, вам необходимо знать Swift / Objective-C для разработки под iOS и Java для разработки под Android.
Без лишних слов давайте перейдем к созданию приложения с нуля.
Шаг 0: понять себя
Прежде всего, постройте то, чем вы увлечены. Интерес — это лучший способ сохранить мотивацию, поэтому спросите себя, что вас волнует или что вы любите делать.
Например:
- Какие приложения вам нравятся больше всего?
- Без каких приложений вы не можете жить?
- Вам нравится играть в игры?
- Вам нравится создавать вещи?
- и т. Д.
Определите свои интересы, чтобы вы работали над тем, с чем вам будет весело. Таким образом, у вас меньше шансов потерять сознание и сдаться на полпути.
Шаг 1: выберите идею
Теперь, когда вы, надеюсь, поняли себя, пришло время выбрать идею для создания. Начните с простого .
Да … даже если вы думаете о создании игры, сейчас вы не должны думать о создании следующего CounterStrike, но вместо этого вы должны думать о том, как создавать игры так же просто, как печально известная Flappy Bird.Эй, не смотри свысока на Flappy Bird — это было ощущение, которое заставило людей во всем мире обнаружить своего внутреннего мазохиста. Но я отвлекся.
Итак, исходя из ваших интересов, придумайте идею простого приложения, которое будет делать что-то аккуратное. Неважно, если приложение уже существует (на самом деле оно может помочь вам, если подобные проекты уже существуют).
Вот несколько советов, которые помогут вам получить вдохновение:
- Если вы любите готовить, возможно, вы можете подумать о создании приложения для людей, чтобы продемонстрировать свои домашние рецепты.
- Если вы всегда хотели знать, как работает Twitter, попробуйте создать супер простой клон Twitter.
- Если вы забывчивый человек, который полагается на менеджеров задач, попробуйте построить его самостоятельно.
- Если вы зависимы от League of Legends, вы можете попробовать просмотреть API Riot и создать сайт, который может получать и отображать информацию об игре.
- Если вы любите играть в карточные игры, попробуйте создать простую (например, Блэк Джек)
- Если вы находитесь на диете, попробуйте создать приложение, которое будет регистрировать потребление калорий.
И так далее, и тому подобное. Вот список идей проекта, если вам нужно больше вдохновения.
Получив направление, запишите в одно предложение цель и, если применимо, наиболее важных целевых пользователей для этого приложения.
Например: приложение по усыновлению домашних животных для людей, которые собирают бездомных животных.
Шаг 2. Определение основных функций
Подумайте, что должно делать ваше приложение, и перечислите их.Если вы закончите перечислять кучу вещей, посмотрите лучше и спросите себя, ДЕЙСТВИТЕЛЬНО ли это приложение, например, для входа в Facebook, чтобы работать? Нужно ли загружать данные в какое-то облако для работы?
Замечательно иметь проект мечты с удивительными характеристиками, но сейчас дело не в том, чтобы создать что-то, что будет дополнено множеством интересных функций. Имейте в виду, что ни одно приложение никогда не завершается, и все начинается просто.
Никогда не пытайтесь создать универсальное приложение .Не ходи туда. Я видел, как это происходит даже в профессиональной среде, и в результате много боли и небольшой прогресс.
Если у вас нет железной воли или вы действительно не любите испытаний , вы просто разочаруетесь и будете разочарованы, если ваш первый проект будет слишком сложным. Вы новичок … смысл сейчас в том, чтобы повеселиться. Веселье — самый эффективный способ учиться.
Итак, взгляните на список функций, которые вы сделали, и, если он слишком длинный, начните вычеркивать те функции, без которых ваше приложение может работать.
Помните, это ваша версия 1, и вы должны просто все упростить. Сосредоточьтесь на вещах, которые позволят приложению выполнять то, что оно должно делать — все остальное можно оставить для другого проекта.
Для примера списка функций ядра для клона Reddit:
- пользователи могут создать аккаунт
- пользователи могут восстановить утерянные пароли
- пользователи могут менять свои пароли
- пользователи могут публиковать новые ссылки
- пользователи могут комментировать ссылки
- пользователи могут повышать / понижать ссылки
- пользователи имеют профиль, показывающий их историю / деятельность
Функции, перечисленные выше, являются основными функциями, на которых вы должны сосредоточиться в первую очередь.Другие функции, такие как:
- пользователи могут поделиться в социальных сетях
- пользователи могут удалять комментарии
- пользователи могут редактировать комментарии
- пользователи могут удалить свой аккаунт
являются вторичными и могут быть сохранены для версии 1.x — работайте с ними только после того, как вы действительно сможете запустить версию 1.0
Шаг 3. Создайте эскиз приложения
CC License
Нет ничего быстрее ручки и бумаги. К настоящему времени у вас должно быть достаточно четкое представление о том, что должно делать ваше приложение, поэтому набросайте каркас пользовательского интерфейса вашего приложения.Где должны находиться кнопки, какова цель этой кнопки и так далее.
Записывайте заметки и уточняйте, как должно работать приложение. Вы все еще находитесь в стадии мозгового штурма, поэтому меняйте вещи, пока не будете удовлетворены этим.
Помните, все упрощает . Если вы сократили свой список с шага 2, придерживайтесь только перечисленных там функций зарисовки — не увлекайтесь. Если вы не можете себе помочь, то набросайте 2 версии: базовую версию и финальную версию своей мечты.
В общем, это не окончательный взгляд, а всего лишь шаг, который поможет вам лучше понять свое приложение.
Шаг 4. Планирование потока пользовательского интерфейса вашего приложения
Хорошо. У вас есть хорошее представление о том, как будет выглядеть ваше приложение, что должен делать каждый элемент и как пользователи могут взаимодействовать с вашим приложением. Теперь пришло время выяснить, как работает пользовательский интерфейс вашего приложения. То есть, как пользователь должен использовать ваше приложение от начала до конца. Составьте график каждого шага, который они должны сделать, и каждого сценария, с которым они могут столкнуться.Попробуйте рассмотреть каждый вариант использования.
(лицензия CC)
Включите все действия, которые ваш пользователь может выполнить в потоковую диаграмму. Например, если ваше приложение требует от пользователей входа в систему, как они создают учетную запись? Что если пользователи забыли свой пароль? Что если они введут неправильный пароль? Что пользователь должен делать в каждом интерфейсе (добавить новый элемент списка> сохранить; изменить> сохранить / удалить)? Так далее и так далее. Это делается быстрее всего с ручкой и бумагой.
Опять же, поскольку ваше приложение должно быть довольно простым, ваша диаграмма не должна быть слишком большой, .
Шаг 5: Проектирование базы данных
Хорошо! После того, как вы спланировали каждый возможный сценарий, посмотрите на него, чтобы определить, какой тип данных вам нужно сохранить. Например, если ваше приложение требует, чтобы пользователи создавали учетную запись, вам необходимо отслеживать такие вещи, как имя пользователя, идентификатор пользователя, адрес электронной почты пользователя, пароль, подтверждение того, подтверждена ли электронная почта пользователя, при создании учетной записи. как каждый раз, когда пользователь вошел в ваше приложение.
Если вы создаете клон Twitter, вам нужно знать идентификатор твита, его содержание, когда твит был опубликован / ретвитнут, сколько ретвитов у него есть и сколько у него звездочек.Вам также необходимо вести учет ретвитов и звезд пользователя.
Вы можете нарисовать диаграмму ERM (Entity-Relationship Model), чтобы отобразить взаимосвязь данных.
Пример схемы выбора объекта для схемы взаимоотношений объектов и отношений Лицензия CC
Кроме того, если у вас запланированы какие-либо будущие функции, самое время запланировать их в своей базе данных. Вот хорошая статья, которую вы можете проверить при разработке базы данных.
Продвинутый
Если приложение, которое вы планируете, будет взаимодействовать с сервером (например,грамм. если вы создаете полнофункциональное веб-приложение) или если ваше приложение будет взаимодействовать с API (например, вы пытаетесь получить информацию от Yahoo! Weather), то, вероятно, будет хорошей идеей нарисовать диаграмму последовательности для вас, чтобы получить лучшее представление о том, как должны работать процессы.
Из Википедии
Шаг 6: Каркас UX
Хорошо, у вас запланирован бэкэнд. Теперь пришло время спланировать ваш интерфейс.
Надеюсь, вы все еще так же взволнованы, как и миньоны выше.Вы знаете, что вам нужно — теперь у вас есть намного лучшее представление о том, как должно выглядеть ваше приложение.
CC License
Поскольку люди в основном визуальные существа, вам лучше понять, что вам следует делать, если у вас есть визуальное представление каждого вида, который вы будете кодировать. Однако, если вы мне нравитесь, а ваш рисунок настолько грязный, что вы едва ли сможете понять неясную часть… кашля шедевр… которую вы создали, естественно, неразумно продолжать этот шаг, оскорбляя свои бедные художественные умственные способности.
К счастью, в сети существует множество инструментов для создания каркасов и макетов, которые помогут вам спланировать ваш поток UX / UI (например, Gliffy, Mockflow, Framebox, Wireframe.cc, Invisionapp).
Шаг 6.5 (необязательно): разработка пользовательского интерфейса
Это необязательный шаг, но если вы намереваетесь специализироваться на фронт-энде или если вы очень заботитесь о том, как ваше приложение будет выглядеть до того момента, когда более симпатичное приложение будет мотивировать вас на кодирование, определенно продолжайте и спроектируйте приложение так, чтобы все эти элементы каркасного пользовательского интерфейса могли быть заменены на более приятные на вид.
Если вы любите проектировать, вы, вероятно, собираетесь разрабатывать приложение до того, как запустите его — возможно, вы уже разработали его на шаге 2.
Если вы не занимаетесь дизайном, но все еще заботитесь о том, как будет выглядеть ваше приложение, подумайте об использовании элементов из комплектов пользовательского интерфейса. Вот несколько ресурсов для элементов пользовательского интерфейса:
(Примечание: требуется Photoshop)
UI Cloud
Графический интерфейс
UI Dock
Для игр:
Spriters Resource
Однако не стоит слишком зацикливаться на внешнем виде приложения.Прямо сейчас вы должны сосредоточиться на создании функций приложения.
Шаг 7: Изучение решений
Отлично! Вы закончили со стадией планирования … но как вы должны кодировать все эти вещи?
Важный навык, который вам необходимо выучить как программисту, — это оценить, когда вам следует использовать то, что уже написано другим разработчиком, и когда создавать функцию самостоятельно.
Поскольку все создают уникальное приложение, не все варианты использования одинаковы.Таким образом, , вы, , должны судить, когда использовать существующее решение, а когда создавать собственное, и вы станете лучше делать это с опытом.
Если вы чувствуете себя потерянным на бескрайнем океане бесцельным катером, сделайте глубокий вдох и не паникуйте. Ты можешь сделать это.
По мере того, как вы приобретете больше опыта в исследованиях, оттачивании своего «гугл-фу» и создании вещей, вы в конечном итоге освоите этот процесс.
Взгляд на решения
Посмотрите на все графики, которые вы нарисовали, а также список функций, которые вы создали на шаге 2.
Какие вещи вы абсолютно не представляете, как построить?
Например, нужно ли пользователям создавать учетную запись? Ваше приложение полагается на обновления в реальном времени? Какие функции вам нужны?
В большинстве случаев хорошей идеей будет просто использовать существующее решение для больших функций, таких как обработка синхронизации в реальном времени (например, Firebase), работа в сети / маршрутизация (например, AFNetworking для приложений iOS), аутентификация и компоненты, связанные с пользовательским интерфейсом ( например, флипборд или приложение, представляющее интерес.
Существует много онлайн-баз данных для поиска компонентов / пакетов / гемов / и т. Д., Связанных с бэкэндом, но вы должны быть осторожны в оценке того, что написали другие люди — не используйте их вслепую.Надеюсь, вы не собираетесь сейчас создавать что-то слишком сложное, поэтому сейчас вам, вероятно, не понадобятся компоненты, написанные другими людьми.
Во всяком случае, лучший способ начать — это изучить то, что другие разработчики сделали до вас, , и изучить логику их решений. GitHub — ваш лучший друг.
Чтобы увидеть реальный пример исследовательского процесса опытного разработчика для конкретной функции, вы можете прочитать в этом посте о том, как создатель Angular-Plunker создал директивы Drag-and-drop для Plunker.
Выбор инструментов для начала работы с
Если вы создаете веб-приложение, возможно, вы можете проверить Yeoman, поскольку он призван помочь вам быстро запустить новые проекты, помогая вам настроить структуру вашего проекта.
Если вы создаете приложение React, вы также можете проверить стартовые наборы и существующие реализации Flux. HTML5Boilerplate и Bootstrap являются популярными интерфейсными шаблонами для вашего приложения. Чаще всего шаблоны используют Gulp или Grunt для управления задачами.
Поскольку вы, вероятно, собираетесь использовать некоторые существующие компоненты или решения, вам также следует установить bower для управления зависимостями (npm для тех, кто использует Node.js и CocoaPods для разработчиков iOS). Не беспокойтесь — в большинстве случаев эти инструменты поставляются с учебными пособиями, которые научат вас, как их устанавливать.
Шаг 8: Сборка приложения
Да! Вы готовы создать приложение сейчас! Вот несколько советов, которые вы должны учитывать при создании приложения.
Контрольный список
Вы должны сосредоточиться на построении функции приложения по функциям.Таким образом, если вы не выполнили одну задачу, такую как система комментирования, не начинайте внезапно создавать представление профиля пользователя. Другими словами, если вы, например, создаете форму, вы должны работать как с внешним, так и с внутренним кодом, пока функция не будет завершена.
В общем, чтобы отслеживать ваши успехи, вы можете записать список дел и использовать его в качестве контрольного списка.
Сначала пишите тесты
Если вы не создаете игровое приложение, рекомендуется сначала написать тест для своей функции, прежде чем вы начнете кодировать эту функцию.Ошибки неизбежны, но тестирование значительно уменьшит ваши ошибки и ваши шансы выпустить ошибочный код в производство.
Конечно, написание модульных тестов требует времени, и вы можете иногда задаться вопросом, стоит ли оно того. Однако, если вы хотите в будущем создавать более крупные проекты, в которые вы продолжите добавлять новые функции, это может произойти с вашим приложением:
Тогда может произойти это (преувеличение):
Или не дай бог:
И это вы, пытаясь исправить приложение:
… Более или менее.
Итак, неплохо бы начать с малого и привыкнуть к разработке через тестирование (TDD), тем более что вы начинаете с нуля и строите что-то простое.
Вы не находитесь в какой-то крайний срок с вилами менеджера проекта за вашей спиной, не так ли?
Для получения советов по шаблонам модульного тестирования, вы можете проверить эту статью. Еще один совет, который нужно иметь в виду, — избегать слишком много мелочей.
Для вас доступно множество инструментов тестирования, таких как Jasmine или Karma для JavaScript, Rspec для Ruby, PyTest для Python, PHPUnit для PHP, Quick в качестве альтернативы xCTest для разработки под iOS или любой другой инструмент, который, по вашему мнению, будет работать ты.
Кроме того, если вы создаете приложение для iOS или Android, рекомендуем проверить Crashlytics.
7 шагов для эффективной и эффективной отладки
Использовать Git
Git — это система контроля версий и полноценный репозиторий с полной историей и возможностями полного отслеживания версий. Хорошая идея начать изучать, как использовать Git при создании вашего первого приложения. Таким образом, вы можете легко исправить свои ошибки, восстановить потерянные данные и многое другое. Кроме того, если вы планируете работать с командой разработчиков в будущем, вам все равно придется использовать git.GitHub — самый популярный хостинг Git-репозитория для проектов с открытым исходным кодом, в то время как Bitbucket — для частных репозиториев.
Если вы столкнетесь с проблемами при использовании git, этот пост о 10 самых распространенных проблем с Git и о том, как их исправить, может помочь .
Если вы застряли …
Будучи новичком, вы будете чувствовать себя таким хомяком чаще, чем нет.
Вы не одиноки. Иногда все, что вам нужно сделать, это сделать перерыв и позволить проблеме кипеть, чтобы вы могли очистить свой разум.
Если это все еще не работает, вот несколько способов отцепить себя:
Я упомянул Google-фу на шаге 7, но позвольте мне еще раз подчеркнуть, что изучение Google — важный навык, который должны приобрести все программисты. Если вы застряли на ошибке или не знаете, почему ваш код не работает, это хорошая идея для Google.
Спросите на StackOverflow
Вы, вероятно, заметите, что ваши результаты Google будут в основном указывать на вопросы и ответы в StackOverflow.Если вы все еще не можете найти решение своей проблемы после того, как погуглите свою задницу, тогда вы можете попробовать опубликовать вопрос в StackOverflow.
Не забудьте показать, что вы провели исследование по своему вопросу — у вас больше шансов получить ответ таким образом.
Альтернатива: найти наставника
Некоторые люди скажут, что StackOverflow не подходит для новичков, потому что новички не знают, как сформулировать свои вопросы. Но что, если вы даже не знаете, в чем ваша проблема?
Если вы достигнете грани головного убора (или если вы уже занимаетесь головным убором…), вам не нужно злоупотреблять своим лбом (если вы ударите головой достаточно сильно, вы просто потеряете мозговые штанги).
Отличной альтернативой для облегчения вашего развития и процесса обучения является помощь опытного программиста. Вам не нужно чувствовать, что вы как-то глупы, потому что Person X — известный эксперт и программист-самоучка. Люди просто учатся по-разному, и все новички извлекут выгоду из личного руководства, так как вы можете делать ошибки, которые не имеют большого значения сейчас, но на самом деле это плохая практика.
Помните, в то время у многих разработчиков-самоучек не было услуг, которые теперь доступны вам.
Таким образом, вы можете получить помощь от опытных программистов через сеансы 1: 1 в режиме реального времени на Codementor, где ставки наставников начинаются с 15 долларов в минуту. Во время этих сеансов вы можете пообщаться в видеочате с опытными разработчиками и поделиться им с вами своим экраном / кодом, и наставник научит вас, как исправить код, а также расскажет, что вы сделали неправильно, чтобы избежать ошибки в будущем. Вы также можете просмотреть код из сеанса или записать сеанс на свой локальный диск с помощью инструмента видеочата.Зарегистрируйтесь сейчас и попробуйте первые 15 минут бесплатно с наставниками, предлагающими сделку.
Final Tip
Программисты постоянно делают ошибки, поэтому не расстраивайтесь, когда вы даже не можете пройти тест, который вы написали, или если вы постоянно спотыкаетесь о себе. Я имею в виду, подумайте о iOS9, Android Lollipop или о каком-либо приложении, которое вы любите использовать. Конечно, даже в самых зрелых приложениях все еще есть ошибки, поэтому не думайте, что вы можете создать самое совершенное приложение без ошибок (конечно, это не значит, что вы должны устанавливать для себя низкие стандарты — вы должны всегда стремиться создавать качественные приложения).
Кроме того, очень часто вы тратите часы или даже дни на одну вещь, и вам все еще трудно заставить ее работать так, как вы хотите. Если бы быстро программировать новые функции было легко, миру не понадобились бы новые программисты. Черт, мы, вероятно, теперь будем на безупречной iOS100, и мы построим оцифрованный мир, подобный тому, что есть в Matrix.
Таким образом, много раз вы слышали термин «совершать ошибки», когда люди поощряли вас начинать строить вещи. Они имеют в виду это.Одна вещь, которую вы должны принять как программиста, это то, что вы не станете задиристой машиной для кодирования, способной мгновенно создавать функции. Вы будете часто терпеть неудачу, и это нормально.
Опять же, помните, что вы новичок, поэтому сначала многое будет неизбежно трудным. Вы будете тратить много времени на то, что, по вашему мнению, должно быть простым, и это будет выглядеть как тяжелая тяжелая борьба, но по мере того, как вы приобретете больше опыта, все станет легче. Надеемся на это чувство выполненного долга, когда вам, наконец, удастся создать свое первое приложение, и вы даже можете рассмотреть возможность продажи своего приложения, если считаете нужным.
Счастливого Кодирования!
Автор Био
И-Джирр Чен || Содержание Maketing & Operations
Ваш типичный массивный выродок, который играет и любит науку / технику. Также публикует беллетристику под псевдонимом, который является псевдонимом по причине