• Как развиваться начинающему web-разработчику?

    Коротко
    Карта развития Web Разработчика

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

    Живой пример: Есть толковый фронтендер(или бекендер по JS) пишет морду сайта на JS Фреймворке. Есть гуру бэкенда пишет API сайта. В случае с фулстаком(образно) он пишет обе задачи сам, но заведомо понятно, что он пишет это дольше и не факт что по последнему слову будет сделано.


    Что нужно для развития дальше:
    - Читайте блоги зарубежных программистов, они делают отличные архитектуры как в самом коде, так и решения в DB.
    - Фреймворки PHP и JS - чем больше их будет тем лучше. Все они ускоряют разработку. Все чаты, соц авторизации, регистрации,и прочие первоочередные задачи давно уже написаны. Вы можете концентрироваться на более важных задачах.
    - ООП тут очень спорный вопрос, на определенных этапах разработки оно решает, но когда этот уровень появляется, чаще всего прибегают к другому языку программирования и переписывают проект в угоду скорости (С++, Java, Python). Понимать нужно, поскольку фреймворки построены на этих парадигмах, но самостоятельно придумывать вам гибкие решения вряд ли придется(по крайней мере до Senior-а точно).
    - Не изобретайте велосипеды. Разбирайтесь в чужом коде(Этот навык очень ценен после "решить/найти решение любую задачу"). Любой магазин чаще всего будет написан в лучшем случае на фреймворке, в худшем на OpenCart, Woedpress - что просто идиотизм, это блоговая система БЛОГОВАЯ. из за тренда выкручивают яйца.
    - Учить английский и работать не на СНГ, Укр или места постсоветского пространства. Искать фирмы зарубежных филиалов и работать там. Поскольку так или иначе там уже работают профессионалы и знакомы с западным рынком, европейским. Там пишутся интересные проекты и появляются интересные решения.
    Ответ написан
    7 комментариев
  • Стоит ли продолжать изучать Android develop?

    vaux
    @vaux
    Курящий лыжник
    Освойте сначала что-то одно на приличном уровне, а уже потом будете гнаться за трендами, следить за выходом новых технологий и т.п. В первую очередь вам нужна база: алгоритмы, структуры данных, понимание ООП, знание паттернов, TDD и т.д. Потом вам нужен опыт программирования. Чем больше вы пишите, тем больше понимания того, что вы делаете. Устройтесь джуном в контору, где над вами будет стоять опытный сеньер или тимлид. В конторе обязательно должен практиковаться code review, где ваш код будут разбирать и указывать на ошибки и спорные моменты. C++ и андроид не исчезнут в одночасье, можете спокойно развиваться в том, что вам интересно. А технологии рождаются и умирают. Это нормально и вам с этим жить, если решили стать программистом. Вам постоянно придется изучать что-то новое, но для начала освойте что-то одно на хорошем уровне.

    Более того. Если вы программист, то вы в первую очередь software engineer. Вам не должно быть дела до языка или технологии. Это всё вторично, потому что вы должны знать всё. Вам дали задачу, вы выбрали наиболее подходящий инструмент и решили эту задачу. К этому нужно стремиться.
    Ответ написан
    1 комментарий
  • Стоит ли продолжать изучать Android develop?

    artemgapchenko
    @artemgapchenko
    Здравствуйте, как многие знают, Google готовит замену Android

    Откуда вы всё это берёте? Есть проект на Гитхабе с таким вот README:

    Pink + Purple == Fuchsia (a new Operating System)

    Всё. Ни про замену Android, ни про предназначение проекта ничего не сказано. К проекту подключено 3 (три) человека, развивается он без году неделя, никаких официальных анонсов не было.
    Прекращайте читать советские газеты перед обедом и вместо первоисточников и не занимайтесь домыслами того, чего нет. Изучайте Android и выбросите Фуксию из головы на ближайшие года два, пока не станет понятно, что это такое и кому это нужно.
    Ответ написан
    Комментировать
  • Зачем нужна связка python и go?

    VGrabko
    @VGrabko
    Golang, Php, Js
    А зачем нам другие ЯП если всё можно на C написать ?)

    А вообще для Питон разработчика проще освоить Go чем Cи и сравнительно быстро начать оптимизировать питон при помощи Golang -a. Я видел как люди большие проекты переписывают на Go путём вынесения тяжелых кусков в Go и со временем вообще уходят от питона.
    Ответ написан
  • Где скачать базу данных регионов и населенных пунктов России?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    fias.nalog.ru/Updates.aspx

    UPD
    Дополню: КЛАДР о котором пишут в соседних ответах - это не старый формат, это другой формат, хотя и являющийся предшественником ФИАС. Оба справочника являются пополняемыми и обновляемыми, оба содержат косяки и ошибки причем как общие, так и персонально свои.
    На уровне работы с регионами и городами - проблем особых нет (не считая идиотского устройства городов нашей страны, когда город может являться частью другого города находясь в десятке километров, а поселок находящийся в черте города может быть обособленным), а вот на уровне улиц/домов опечатки бывают достаточно часто.
    Ответ написан
    Комментировать
  • Какие есть интересные блоги современных JavaScript ниндзя?

    @garik_R
    On my way
    Мне кажется, вот этот сайт полностью отвечает на этот вопрос: https://uptodate.frontendrescue.org/
    Ответ написан
    Комментировать
  • Где взять макеты psd, сверстав которые можно показать в портфолио?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    Сборник лучших макетов по моему мнению, постоянно добавляются новые. https://psdrepo.com/tag/free-psd-website-templates/
    Лучшего я пока не нашел.
    Ответ написан
    4 комментария
  • Стоит ли сейчас изучать Kotlin?

    artemgapchenko
    @artemgapchenko
    Начните лучше с Java, мой вам совет. Kotlin очень хорош (я как раз сейчас на нём проект для себя разрабатываю), но смущает меня отсутствие официальной поддержки со стороны Google.
    Мотивация JetBrains в плане адаптации Kotlin к Android понятна - они хотят зайти на рынок языков под JVM через Android-разработчиков, которые давно уже стонут и плачут от Java 6/7. Непонятно, будет ли эта мотивация такой же сильной через пару лет, когда, например, Google определится с тем, что у них будет вместо Java, и определится не в пользу Котлина (если ещё определится, что, скажем так, вилами на воде написано). Или же Бреслав как главный идеолог проекта потеряет к нему интерес. Или же в JetBrains посчитают расходы/доходы, и решат зарезать поддержку Android. Много чего может произойти, а вам потом проект на нём поддерживать.
    Плюс, как правильно отметил в этом треде Денис Загаевский, вакансий мало, и неизвестно, будет ли их больше. А со знанием Java вы себе в обозримом будущем работу Android-разработчика точно найдёте, тут проектов как грязи - выбирай, не хочу.

    Update от 17.05.2017: Google объявил об официальной поддержке Kotlin для разработки под Android, так что теперь точно можно начинать вкладываться в него.
    Ответ написан
    1 комментарий
  • У JAVA есть будущее?

    SanchelliosProg
    @SanchelliosProg
    Java, Android, Software Testing
    Много тут было ответов уже. Некоторые про Java на Desktop просто смешны, конечно. Java уйдёт не скоро, основная причина - море кода, который нужно поддерживать. Если уж очень хочется в ближайшие 10-20 лет работать на саппорте - Java является лучшим выбором, я считаю. С Android немного иначе. Но Java приходится учить, потому что альтернатив мало. Были тут новости, что Google на Swift переведёт Android разработку... Посмеялся, потом погрустил - было бы неплохо, но чтобы всё то, что уже есть перевести на новый язык... Оххх...

    Будущее за вот чем. Скорость разработки + эффективность программ (тут я подразумеваю и скорость обработки данных, отсутствие вещей усложняющих разработку при увеличении объёмов приложений и информационное обеспечение разработчиков, коммьюнити, документация,другие ресурсы). Те технологии, которые будут давать это, будут лидерами, тормозить будут такие вещи только, как страх менеджеров и легаси.

    Появляются новые языки и технологии, которые соответствуют и ускорению разработки с сохранением эффективности программ, но всё на них не поставишь, потому как на работу устроиться трудно, зная только, например, Go.

    Посему, надо иметь базу, в виде JavaScript, Java, Python, Ruby, C++ или других языков и сопутствующие им технологии, которые уже во всю используются, но нельзя забывать, что когда-нибудь наступит момент, когда что-то перевернётся, и 10-20% времени, которое вы тратите на обучение себя, стоит тратить на что-то новое. Может наступить момент, когда, например, вдруг понадобятся всем Rust-программисты. Такое вполне возможно, и когда эта волна пойдёт, вы будете в теме, уже!)))

    Так что, есть ли у Java будущее? Я думаю, что это будущее будет похоже на судьбу языка Cobol. Он долго не умирал. Java тоже не скоро умрёт. Но насколько интересно будет работать с ней?
    Ответ написан
    Комментировать
  • Кто нибудь пробовал работать во фрилансе после работы?

    Конечно, люди разные, но я не могу. Лучше это время тратить на личные проекты (опенсорс) и на развитие (новые языки, улучшать фундаментальные знания), либо еще на какое-то хобби (у меня это музыка, например). В долгосрочной перспективе это принесет больше пользы, а качество жизни будет выше. Работать на двух работах, совмещать работу/учебу - все это либо для очень-очень организованных людей (феноменально организованных, которые могут жить четко по плану каждый день), либо для тех, кто особо-то и не вникает (а это напрямую влияет на качество скилла). Кроме того, как не пытался, предел продуктивной работы в сутки - это порядка 6 часов. Все остальное не только не приносит удовольствия, так еще и по качеству получается хуже. Лучше делать одну задачу, "быть медленнее", но делать ее реально круто.
    Ответ написан
    4 комментария
  • Какие ЯП не требуют кучу прикладнухи для устройства на работу?

    Я постараюсь подключить философию, примеры и "как если бы я говорил в баре с вами".

    ЯП - это инструмент. Инструмент всегда взаимодействует с объектом и со средой. Соответственно, вам точно нужно что-то знать про объект и уметь пользоваться инструментом внутри среды, а это потащит дополнительные знания, назовем их "естественными" зависимостями. Насколько глубоко их нужно знать? Тут ответа не бывает: настолько, насколько нужно и хочется. Тут важен баланс и акцент. Если нет строгих параметров на уровне разума, нужно верить интуиции, потому что больше нечему. Для JS-программиста JSON/jQuery/AJAX - это естественные зависимости, их в любом случае не получится обойти. Даю зуб, что вам хватит вечера и немного гугла, чтобы стать чуть ли не LIKE A PRO в этом. Это все форматы хранения данных, либы, парадигмы. Это примерно как прочитать состав у шоколадки по сложности и входному порогу. Скорее всего, вас пугают сложные слова. Примерно как сказать "НАПРАВЛЕННЫЙ АЦИКЛИЧЕСКИЙ ГРАФ", и вы сразу знаете теорию графов, хотя с практической точки зрения суть настолько элементарна, что аж страшно, а вы будете долго прокрастинировать и искать что попроще.

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

    Вы можете просто верстать (html/css) и игнорировать программирование в целом. Но естественная среда противится: вы уже (!) пишете на декларативном языке, неплохо было бы узнать об этом подробнее (о языках или даже о типизации), тем более, что крайне близко к вам находится интереснейший язык js, а там моментально вылезут проблемы связывания html и js, разные подходы к этому, целые парадигмы и фреймворки; и вот вам выпадает интересная задача по анимированию svg, вы курите мануал по нужной либе, читаете что-то про reflow/repaint, внезапно узнаете что-нибудь про селекторы. И через какое-то время, будучи все тем же верстальщиком, вы видите архитектурный косяк дизайна, который очень неудобно укладывается в используемые технологии, предлагаете его пофиксить и спасаете команду от факапа через месяц, когда какой-нибудь транзишн наложится на какой-нибудь position: fixed и еще и в Safari упадет анимация и только там, а тут и новая тудушка: "Переделать, нафиг, всю шапку, чтобы ок было". Что-то изменилось в мышлении и картина стала полнее. ВНЕЗАПНО вы уже и инженер, можно сказать, ЗП растет, все дела, рутины меньше стало.

    Так вот, о инженерах. Можно выучить, например, Python за пару дней, там же отличный мануал. Но настоящий программист - это инженер, потому что вся суть в архитектуре, во взаимодействии объектов/компонентов и в том, как все это соотносится с задачей. Какой молоток взять, это уже без разницы, как состав на банке прочитать. То есть суть вашей работы заключается как раз в объекте и среде, а не в инструменте. Образно говоря, когда вы сидите в кафе, суть не в чашке чая, а в атмосфере и как вы себя в ней чувствуете, но при этом чашка чая нужна, чтобы заставить вас что-то делать и вписать тем в самым во взаимодействие со средой, поэтому придется научиться красиво пить чай.

    Подведу тут черту: естественные зависимости - это норма, а суть в инжиниринге. Можно двигаться по зависимостям дальше. У вас есть интервал, где есть минимальный порог, ниже которого нельзя, и максимальный, где вы "мастер на все руки", что тоже плохо. Между минимальным и максимальным порогом можно двигаться. Взять те же сети: разворачиваете приложение, видите линуху, настраиваете сеть. Можно немного заморочиться и прочитать про основы маршрутизации, буквально 2 вечера, можно еще про сетевой стек в линукс, еще 2 вечера, и уже будет во много раз проще. Кроме того, возрастет культура в целом и если вы программист на бэке, то вам будет проще взаимодействовать с админами. Про OSPF, очевидно, читать не надо, важен баланс. Баланс - это понимание того, на что у вас акцент (вы программист? какой? фронт/бэк? насколько важны сети/ос? проектируете бд? верстаете? интересен ли прикладной кодинг под какую-то ос и так далее...) и насколько интересны естественные далекие зависимости выбранной области.

    Так вот, теперь у нас есть естественные зависимости, инжиниринг и баланс между порогами. А не php/jquery/html/css.

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

    Кстати, что касается SEO: с технической точки зрения это пара мануалов от гугла и не более того. Там сеошники наговорить могут много, с ними надо быть осторожнее :)

    А теперь, собственно, выводы:

    1) Вакансий крутых много, надо пробовать. Нужно только отличать близкие и необходимые естественные зависимости от мастера на все руки. Я считаю, что мастером на все руки нужно поработать хоть однажды, чтобы просто понять, почему это плохо. Но зависимости будут всегда, и это норма. Вы перечислили слишком радикально, конечно.
    2) Себя пилить под вакансию не нужно. Нужно просто идти туда, где интересно, всегда стараться быть инженером и не убить в себе искусство (то есть не бояться делать так, как кажется правильно, чтобы либо убедиться в правоте, либо ошибиться и стать круче).
    3) Не нужно думать в стиле "а что если завтра рубионреилс развалится, комьюнити разойдется, вакансий не будет, что я буду делать". Вы же инженер. У вас опыт в проектировании IT-систем, перейти на что-то смежное, если будет понятно, что технология умирает, не составит труда.
    4) По естественным зависимостям нужно двигаться по мере интереса, вы станете от этого только лучше.

    Это, конечно, если вам действительно все это интересно. Все это области, очень близкие к искусству, и тут надо любить все это делать.
    Ответ написан
    8 комментариев
  • Где и какие есть актуальные ресурсы для front-end?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    1) tympanus.net/codrops (как указали в другом ответе)
    2) habrahabr.ru/posts/frontend - нувыпоняли.
    3) Подписаться и еженедельно читать фронт-енд дайджесты (ну или просто зайти на сайт и читать там выпуски):
    a) javascriptweekly.com
    b) css-weekly.com
    c) tympanus.net/codrops/collective
    d) habrahabr.ru/company/zfort - у них самые большие дайджесты, там до кучи еще и дизайн/новости/крутые сайты и прочее.
    (соответственно ссылки во всех этих дайджестах часто повторяются, так что не пугайтесь объемам)
    4) codepen.io - тут смотрите код, вдохновляетесь чужими работами и пилите свои.
    5) Лезете в твиттер, подписываетесь на крутых разработчиков, там тоже проскакивает много годноты.
    Ответ написан
    Комментировать
  • Кто-нибудь пользовался web framework Gin Golang? есть преимущество? Или стоит посмотреть в другую сторону?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Gin - отличный framework заслуженно пользующийся хорошей репутацией.
    Если хотите ложку дегтя, то
    • Gin использует httprouter в качестве Muxer. Это очень быстро, регулярно экспрессивно и параметризуемо но не совместимо со stdlib http.DefaultMuxer. То есть вы не сможете использовать нативные http.Handler().
    • Использование framework вообще не поощряется в сообществе(go-nuts MailingList, #go-nuts irc channel) в силу наличия богатой стандартной библиотеки. То есть помощь в сообществе вам будут оказывать неохотно.(Я например не стану разбираться в Gin, что бы что нибудь советовать)
    Ответ написан
    Комментировать
  • Какие самые реальные и действенные проекты\работы\фриланс для python-программиста?

    voidnugget
    @voidnugget
    Программист-прагматик
    Пишу на питоне ещё с 15 лет (2.4+)... ненавижу его runtime и архитектуру. Язык хороший - реализация никакущая. Ну да его синтаксис достаточно упрощён, но и за синтаксический сахар приходится платить сложностями отладки и поддержки.

    Сейчас же почти все известные мне конторы не используют питон в продакшенах с более-менее высокой нагрузкой. Яндекс тому пример. Чаще питон используется для решения прикладных задач администрирования, так как это делается, к примеру, в SaltStack. Все дружно слезают с питона, РНР и рельсов на Golang, Java/Scala, и иногда даже Groovy - производительность выше в десятки раз, и managed runtime на много стабильнее. Правда в случае с JVM очень сильно раздувается куча в виду избыточности объектной модели (оператву жрёт как дурное, а я байтики считать привык). Сейчас это должно лечится с помощью Project Graal и Truffle, правда пока до этого дошёл только jRuby, который тоже в пару десятков раз быстрее Ruby. По идее и Groovy тоже должен переползти как-то ... Вот про jyton ничего не знаю.

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

    Фрилансить с питоном начать можно, но очень желательно опробовать ещё хотя бы пару окружений и фреймворков типа Groovy Grails, или Typesafe Stack. Сейчас требования рынка возросли в пару раз за последние два года - нужны ассинхронности/многопоточности, push-нотификации в мобильные приложения и по вэбсокетам/комету. И это всё с богатыми js-фронтендами на всяких там Angular'ах и React'ах. Естественно можно крутить костыли типа Celery / Gearmand / Beanstalk / RabidMQ, но накладные расходы на коммуникацию слишком большие :( Компилируемые языки со своими Managed Runtime'ами позволяют строить монолитные приложения в которых подобные решения избыточны в рамках одной и той же машины, а если это куча нод в кластере то нужно мерить/думать.

    Django сейчас сложно поддерживать так как он достаточно сильно развился за последние 3 года, и я очень сомневаюсь что сохранится совместимость новых версий со старыми.

    А вот с pyramid (pylons) и SQLAlchemy можно строить достаточно хорошие приложения. У них есть enterprise поддержка и соответствующие гарантии.

    Типовые задачи на питоне:
    - написать какой-то мелкий скрипт с Gui на PyQT / Pyside для какой-то аналитики и отрисовки графиков, иногда попадаются задачки с gstreamer'ом
    - написать какое-то простое RESTful CRUD приложение, в стиле "одна табличка БД - один контролеер", это конечно же тонна копипасты и мне больше нравятся DataMapper'ы по типу TastyPie. Иногда люди хотят чистого Tornado или Flask'a, так как им не нравится overhead в джанге и pylons.
    - написать скрипты для деплоя чего-то, обычно люди не знают про SaltStack.

    В плане архитектуры питонистам чужды различные SOA с CQRS-ES'ом, потому что сам компилятор не располагает. Хотя её достаточно просто поддерживать.

    Проблема всех проектов на Node.js / Python / Ruby это отсутствие долгосрочной поддержки библиотек и фреймворков - часто ломается обратная совместимость, и нужно постоянно следить за состоянием всех зависимостей. Опять же нужен TDD/BDD для того что это всё хорошо контролировать. Тестируешь руками - себя не уважаешь.

    Ну и вроде всё ...
    p.s. я опубликую на хабре статью сегодня-завтра "Freelance - you're doing it wrong" там поделюсь опытом работы и основными организационными проблемами в рамках удалённой работы и фриланса, покажу разницу между ними.
    Ответ написан
    6 комментариев
  • Какие хорошие книги и материалы по проектированию интерфейсов и сайтов можно изучить?

    laughedelic
    @laughedelic
    Помимо уже упомянутого, обязательно
    Джеф Раскин "Интерфейс: новые направления в проектировании компьютерных систем."
    Ответ написан
    Комментировать
  • Go IDE

    charlag_khan
    @charlag_khan
    Мобильный разработчик
    Подумайте, а что вам нужно конкретно? Скорее всего у вас в liteide не завелось автодополнение, потому что не стоит демон gocode. Gocode выполняет в принципе все, что мне нужно. Я пользуюсь в связке с Vim'ом и мне действительно удобно. Есть даже туториал, на английском, правда, может быть я его переведу когда-нибудь. Подсветка, очень умное автодоплнение, документация, все что хотите(посмотрите демку).
    По идее это должен и liteide поддерживать. Еще есть связка для Emacs. Просто из того, что я знаю, очень многие гугловские разработчики пользуются просто vim'ом.
    Ответ написан
    Комментировать