Diggy101: Еще раз на здоровье :). Добавлю разве что вот что: если Вас интересуют математические дисциплины, то может иметь смысл параллельно с основной работой (приносящей доход), поизучать их, пусть даже на весьма простом и базовом уровне. В первые полгода реальной работы, Вам вероятно будет не до того, но после можете попробовать. Это может сэкономить время, так как для выработки интуиции в этих областях требуется уложить довольно много в голове, и нарешать достаточное число задач. Просто найдите хорошие несложные базовые курсы и задачники, и спокойно их прорабатывайте, и решайте задачи (лучше англоязычные, там хорошо умеют давать базовый уровень, плюс языковая практика). Это, кстати, неплохо работает и в качестве переключения от нудной работы и прочистки мозгов - если не увлекаться, чтобы основная работа не страдала.
Diggy101: присоединяюсь к совету. Обретите сначала твердые навыки в востребованных технологиях (Python / Django), и обеспечьте себе финансовую стабильность. На это уйдет год или два, но это плата за независимость. Потом уже двигайтесь куда захотите, ставьте себе задачи, делайте свои проекты, повышайте свой уровень. Если сразу погонитесь за сложными навыками, то даже если попадете в место где вы их получите - станете достаточно узким специалистом, сильно зависящим от инфраструктуры, и решающим чужие задачи, и поменять эту карму будет труднее. У независимого и достаточно упертого человека всегда выше потолок роста, важно только держать цель и не увязнуть в текучке. Если потом захотите получить серьезные навыки в более математически-ориентированных дисциплинах, у Вас будет масса возможностей.
Roman Kitaev: На SO этот вопрос бы сразу закрыли как неконструктивный. Там более жесткая (я бы сказал часто чересчур жесткая) модель. Но для них это правильно, в целом.
Alexander Kallaway: ну так советы все те же. Возьмите какую-нибудь идею, реализуемую чисто на клиенте (список дел, или скажем органайзер иерархических задач). Выучите базовый язык, и реализуйте, только вначале безо всяких библиотек (включая и jquery). Вот, например, хорошая задачка: реализуйте парсер простого калькулятора в чистом js, чтобы Вы могли что-то рассчитывать простое прямо в броузере. Добавьте в него какие-нибудь математические функции. Потом подключите скажем CodeMirror, чтобы у Вас была подсветка кода. Добавьте сообщения о синтаксических ошибках. Потом берете задачу потруднее - тот же органайзер дел, или скажем сильно упрощенный вариант evernote - органайзер записей, с блокнотами, записями, редактированием, и т.д., подключите туда TinyMCE или другой редактор, и проч. Сделаете несколько таких задач в чистом js, потом читаете книжки по паттернам и проч, рефакторите. Потом учите какой-нибудь не очень тяжелый framework, переписываете на нем. Ну и те же вещи - IDE, освоить консоль броузера и отладчик в броузере, и проч. Сильно помогает jsfiddle. Еще посмотрите Cloud9 IDE - не знаю как сейчас, но уже года полтора - два назад было очень удобно - IDE прямо в броузере. Как следует разберитесь с такими вещами, как scoping, closures, и объектной моделью (prototype inheritance). Почитайте Крокфорда. Если знаете функциональное программирование - сильно поможет. Если нет, то в контексте javascript вполне можете освоить, опять же сильно поможет. Ну дальше уже каждый сам решает, что кому нужно. Можете по single page applications что-нибудь почитать. У меня был один большой проект в чистом js - компилятор из языка торговых стратегий в html / js (UI генерировался из кода и обратно), там важна была скорость, так что библиотеки не годились, в итоге получилось около 8000 строк чистого js с кучей парсеров, рекурсий и прямой работы с древесными структурами в памяти - но в целом я сейчас не очень "в теме" по поводу конкретики по фреймворкам, тут Вам другие подскажут (разве что jQuery в любом случае советую освоить на каком-то уровне). Единственное что, в js я бы все же немного в чистом js посидел, пока основной язык не прочувствуете, а к frameworks уже несколько позже переходил.
Василий: Еще один момент вспомнился важный: практически сразу, Вам придется принять решение, какую версию Python использовать: 2.7 или 3.x. Лично я использую Python 3.x (3.3, 3.4), и считаю это правильным, так как это работа на перспективу. Проблема в том, что Вы скоро обнаружите, что лишь малый процент готовых сторонних модулей для Django официально поддерживает 3.x - в то время как практически все поддерживают 2.7. При этом может оказаться как угодно - от того, что модуль запустится на 3.х вообще без проблем, до того, что проблем будет куча и самостоятельное их решение может занять очень много времени. Так что проблема серьезная и непростая.
Конечно, можно и потом сделать "Downgrade" - Вы можете начать с 3.х, а если увидите что у Вас много функционала опирается на сторонние модули и начали возникать серьезные проблемы с несовместимостью, то перейти на 2.7. Но по крайней мере, об этой проблеме нужно знать, и отвести на ее решение какое-то доп. время (пару недель). Либо подойти консервативно, и использовать 2.7 с самого начала. Мнение сообщества разделяется, но если еще год-полтора назад Вам бы советовали в основном 2.7, то сейчас консенсус сместился к 3.х. В общем, я бы стартовал с 3.3 или 3.4, но держал в голове этот момент.
1. Не пожалейте денег на PyCharm Pro IDE. Это того стоит и себя окупит. У них фантастическая поддержка Python / Django
2. Все что касается настройки и установки Python и рабочей среды, кратко и по делу изложено тут: docs.python-guide.org/en/latest (разделы "Getting started" и "Development environment"). Это вообще отличный ресурс.
3. Я бы для экономии времени не поднимал свой сервер, по крайней мере вначале, а завел аккаунт на PythonAnywhere - облачный хостинг для проектов на Python, У меня там и реальное приложение крутится, но там есть и базовые бесплатные аккаунты, которых для начала может хватить. У них там своя web-IDE в броузере, web-консоли (которые можно расшаривать!), все очень удобно.
4. По освоению - лучше всего начать с официального tutorial. После этого, есть неплохие книжки и ресурсы на сети. Вот отличный ресурс: www.lightbird.net/dbe/index.html . Там 3 приложения, если все как следует проработаете, сразу подниметесь на следующий уровень. Далее, мне очень понравилась и помогла в свое время вот эта книжка: www.amazon.com/Learning-Website-Development-Django...
Ну и конечно, читайте документацию. Она у Django на высоте, прекрасно написана. Ее можно читать как книгу.
5. Настройте в IDE Python / Django консоль так, чтобы Вы могли интерактивно работать с Вашим кодом, включая запросы к базе из ОРМ, и все остальное. Это хорошо дополняет дебаггер.
Василий: Ну, это зависит конечно от функционала, требуемого для Вашего прототипа, но срок вполне приличный, и само слово "прототип" - это уже хорошо. На первичное ознакомление с технологией на практике - на паре tutorials и возможно книжки какой-нибудь, плюс настройке рабочего пространства (git, python, pip, virtualenv) и первичного освоения средств разработки (IDE, консоль, дебаггер) у Вас уйдет пара недель плотной работы. Дальше возьмите логически законченный кусок будущего приложения и начинайте реализовывать. На освоение основ Django уже в работе (url routing, модели, формы, ORM, шаблоны, views, миграция данных, админ), уйдет где-то еще месяц плотной работы, но при этом Вы уже что-то сделаете по проекту. Затем можно почитать еще книг плюс популярные вопросы на StackOverflow плюс прекрасную документацию Django, чтобы разные важные мелочи засели в памяти. После этого проанализируйте имеющийся код, проведите рефакторинг. Старайтесь по максимум использовать возможности Python в плане ООП и чистого дизайна кода. Это еще пару - тройку недель. Вот уже два месяца. После этого сможете начать выходить на "крейсерскую скорость", наращивать функционал. Еще где-то через месяц - снова итерация по рефакторингу и критическому анализу сделанного. После трех месяцев плотной работы, у Вас уже начнет появляться понимание, насколько трудно сделать то или иное, и сколько это займет времени. Да, и не стесняйтесь пользоваться готовыми модулями там, где они есть - их подключение в Django обычно - дело несложное, дизайн как правило достаточно чистый (хотя это зависит). Дальше у Вас еще останется пара месяцев для плотной работы на уже хорошей скорости. Чтобы удерживать высокий темп, нужно работать очень конкретно - часов по 6-8 чистой продуктивной работы в день как минимум, это не считая перерывов на чай, обед и пр. Нужен будет хороший project management. Лично я люблю Kanban, использую Blossom.io - классный сервис, очень удобный, но платный ($20 в месяц). Из бесплатного, Trello неплох - но вообще это каждый сам решает, у всех вкусы разные. Более подробно я свои предпочтения описал тут: Помощь в изучении Python. Что дальше?
Прекрасный совет. Сам недавно отвечал на похожий вопрос и практически то же самое посоветовал. Приятно видеть, что есть такие советы на русскоязычных ресурсах, которые могут помочь человеку стать хорошим специалистом, а не просто code monkey.
brainick: Ну вот Вы и показали кто Вы есть на самом деле - просто обычный хам с легким налетом интеллигентности. Что и требовалось доказать. Чтобы ко мне на ты обращаться, это заслужить надо, щенок.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.