• Изучение Java: мотивация, перспективы, краткий план?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Вам в технические писатели))

    * Вы должны понимать, что freelance - в основном проекты на одного человека, максимум - несколько.
    * На java даже драйвера и приложения для sim-карт пишут, имею ввиду, что спектр направлений деятельности на этом языке - огромен. По этому тыкать пальцем в небо: "учи такой-то фреймворк" ка минимум не корректно. Для начала необходимо определиться с областью.
    * Security Programming - вообще говоря нигде не помешает, тут все зависит опять же от области применения, например, у web-а есть золотое правило: "пользователь всегда врет, даже если он этого не знает - все равно врет". В случае, если вы делаете консольную утилиту, например конвертер чего-нить, тут требования будут совсем другие.
    * На счет рынка freelance - в чем проблема то? Зайдите на oDesk / fl / любая_другая_freelance _биржа и посмотрите.

    Но есть нюанс: java все же mainstream язык, и чаще всего используется не на freelance проектах.

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

    Так что подумайте на тем, что бы дотянуть знания до стажера и работать не как фрилансер.
    Ответ написан
    Комментировать
  • Какие есть узкие, но востребованные специализации в программировании?

    risik
    @risik
    Программист
    Я думаю, что для начала Вам нужно самому понять что Вам больше нравится. А для этого нужно иметь довольно широкую специализацию. А вот уже, когда Вы решите, чем именно Вы хотите заниматься, тогда и углубляться именно в эту тему.

    И да. Мое мнение, что заниматься следует не тем, что приносит хорошие деньги здесь сейчас, а тем, что действительно нравится. А Вот если Вы испытываете кайф от той работы, которой занимаетесь, то тогда деньги придут за Вами.

    И еще. ИМХО. Если Вы будете узким специалистом в одной отдельно взятой технологии, которую продвигает какая-то отдельная компания, то рано или поздно можно попасть, что эта конкретная технология окажется устаревшей. Конечно, если много людей и проектов было завязано на этой технологии то, вряд-ли от нее полностью откажутся сразу и внезапно. Но тем не менее, может оказаться, что востребованность специалистах по этой конкретной технологии начнет падать. Поэтому лучше быть специалистом в широком круге смежных технологий, специализируясь при этом на какой-то ожной из них. Кажется, что-то подобное было у Спольски, но не помню точно где.
    Ответ написан
    Комментировать
  • Как упорядочить (систематизировать) знания в голове?

    rumkin
    @rumkin
    Нашел самый действенный способ. Попробуйте записывать мысли (хоть в тот же gitwiki или простой блокнот). Это заставит вас пережевывать знания, а не глотать пачками, освободит место в голове (действительно освободит оперативную память, вы это почувствуете) и сформирует костяк ваших интересов, развивать которые планомерно станет проще. Вы сможете откладывать мысли, не боясь забыть их, свободное место в голове позволит распихать самое горячее по разделам мозга.
    Ответ написан
    1 комментарий
  • Как читать большие исходники, анализировать большие системы?

    @Next_Alex
    Попробуй прогнать проект Sparx Enterprise Architect. Легковесная и весьма функциональная приблуда. Покажет тебе структуру проекта и связи, а дальше уже будет проще.
    Она платная, но есть пробная версия - для анализа вполне достаточно будет.
    Ответ написан
    1 комментарий
  • Как читать большие исходники, анализировать большие системы?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Наверное, тут помогает хорошая архитектурная абстракция проекта. Большие листинги становятся маленькими или, по крайней мере, разбиваются на логические сущности. Пока проект строится - пишутся просто заглушки, затем эти заглушки реализуются. Но в любом случае, самая важная, глобальная архитектура должна обдумываться заранее, чтобы потом не приходилось держать в голове весь проект =)
    Как правило, запиливая отдельный модуль, глобальную архитектуру по отношению к нему можно изображать достаточно схематично, а в рамках этого некоего модуля всё в мозгу должно помещаться с необходимой точностью.
    Ответ написан
    2 комментария
  • Какие книги читать и изучать, чтобы стать настоящим программистом, а не кодером?

    @RokkerRuslan
    Я уж всем кому не попадя посоветовал SICP :).
    Книга лежит в открытом доступе.
    Есть очень хороший перевод на русский от Георгия Бронникова
    Ответ написан
    Комментировать
  • Хочу устроиться Android разработчиком. С чего начать, куда двигаться?

    @Mintormo
    Могу посоветовать стандартный набор ресурсов:
    startandroid.ru/ru/uroki/vse-uroki-spiskom.html
    developer.alexanderklimov.ru/android
    И, как справочник, официальная документация:
    d.android.com
    Еще посоветую посматривать статьи на Хабре:
    habrahabr.ru/hub/android_dev
    Вот неплохая книга (есть на рутрекере):
    www.ozon.ru/context/detail/id/24301926

    Что касается джуниора, то лично я сам сейчас хочу им стать и составил для себя следующий план:

    1. Общая архитектура приложения. Компоненты приложения.
    2. Интерфейс (Fragments, ActionBar, диалоги и прочее). Работа с анимацией элементов управления. Создание кастомных элементов управления.
    3. Многопоточность (Threads + Handler, AsyncTask, runOnUiThread, post).
    4. Работа с файлами.
    5. Сеть. Сокеты. WebView.
    6. Сервисы.
    7. Google Maps и GPS (в перспективе возможно OpenStreetMap и MapKit Яндекса).
    8. SQLite.
    9. Протоколы. HTTP/HTTPS, JSON, XML, OAuth2, возможно protobuf.
    10. API социальных сетей (ВКонтакте, Facebook, Twitter, Instagram, Flickr).
    11. Создание виджетов.

    Вот когда с этим закончу, сделаю парочку простых проектов и пойду устраиваться джуниором. :)
    Ответ написан
    1 комментарий
  • Как проходит Ваш процесс самообучения?

    student_ivan
    @student_ivan
    Web-Developer, Front-End Engineer
    Не совсем по теме, но: если вы что-то изучаете и не пользуетесь этим, то вскоре, вы это, вероятно забудете. Стоит хотя бы раз в полгода освежать знания. Сильно повредил знания за время службы в армии. Хотя до армии даже представить себе не мог, что такое может произойти, т.к. занимался в этой сфере порядком 10 лет. Сейчас решил, что лучшим способом для восстановления знаний, будет, поднятие небольших собственных проектов и поступление в нормальный вуз на очную форму обучения (в первую очередь для общения с интересными людьми), благо возраст еще позволяет…
    Ответ написан
    Комментировать
  • Как проходит Ваш процесс самообучения?

    RUVATA
    @RUVATA
    Разработчик, гик, меломан, разгильдяй
    Стоит понять «с нуля» или же все таки при наличии некоторого базиса вы собираетесь изучать что-то новое, как только определитесь, далее в зависимости от этого я бы ИМХО выделил два пути:
    1) Если не с нуля, например вы уже ранее работали с JavaScript (и Вы понимаете его особенности и семантику и т.д.) и собираетесь освоить Node.JS, то самый верный способ это подключится к open source проекту, причем выбирать стоит из не самых популярных, довольно легко определить комьюнити насинающих (т.е. таких же как вы). Это очень захватывает, тематическое общение с единомышленниками очень круто подтягивает. Так же попутно поробуйте поставить некую задачу для самого себя (без идеи вырастить потом новый скпер-пупер стартап, пускай это даже будет велосипед, например у вас есть сервис которым вы активно пользуетесь, т.е. понимаете зачем, что и как и попробуйте полностью или частичное его реализовать при помощи изучаемой технологии (вопрос применимости естесственно зависит от изучаемой технологии)) А также постоянно сидеть на тематических форумах, первое время просто находить вопросы и искать на них ответ (не отвечая в тему), дожидаесь пока более опытные колеги посоветую что либо и сравнить их совет с решением которое нашли Вы — если есть существенная разница, попытаться понять в чем и почему (попробуйте консультироваться с наиболее опытными и активными участниками в ЛС(ай-ти-шники очень отзывчивый народ), главное не давать никаких советов, пока не придет осознание того, что вы действительно понимаете суть вопроса и знаете решение).
    Один мой товарищ использовал такой вот интересный ход — он познакомился с фрилансером который работает в интересующем его направлении (как оказалось их на самом деле было 3-е под аккаунтом одного из них:)) и предложил ему следующую схему: Он безвозмездно готов выполнять части практических задач (тривиальных, простых в данном направлении, почти всегда таки куски работы есть, для опытного человека это «мутототень», а для новичка — самое то) стоящих перед ним, на условии, что результат его труда будет совместно разбираться на наличие проблем и ошибок. Спустя пол-года он стал 4-ым :)
    2) Если Вы пытаетсь что-то изучить «с нуля» то в данном случае начать следует с чтения книг, прохождения самоучителей и т.д. И то что я писал о форумах выше — тоже Ваш инструмент, но в данном случае не следует вообще ничего отвечать и распрашивать когобы-то ни было в ЛС, нужно просто читать, читать, читать… как-то так.

    PS: Единомышленники или наставник, увеличиваю эффективность самообучения в 100500 раз.
    Ответ написан
    Комментировать
  • Как ввязаться в большой opensource-проект?

    xenon
    @xenon
    Too drunk to fsck
    Для примера — сам линукс-кернел. Кода — очень много. И даже примерно понимать все основные принципы, как они реализованы внутри (и как происходит фильтрование в netfilter и как создается файл в fs) — задачка непростая. Но он делится на однообразные куски. Например, драйвера сетевых карт — сотни карт поддерживаются, все драйвера — очень похожи друг на друга. Прочитал (или даже написал) вдумчиво один драйвер и более-менее понял их всех, и получил общее представление о том, что там работает выше в ядре. Есть даже туториалы по написанию LKM и каких-то реальных и псевдо-драйверов — отличный способ начать. Аналогично с таржетами netfilter, с файловыми системами, queue discipline итд. Начинаете как раз с узкого куска, ищете туториалы (если они есть — не всегда), читаете исходники аналогичных модулей. В итоге сможете сделать один маленький кусок, и получите кое-какое смутное представление о тех частях ядра, которые сопряжены с ним.
    Ответ написан
    Комментировать
  • Как ввязаться в большой opensource-проект?

    resurtm
    @resurtm
    Для начала стоит отлично разобраться во всех возможностях, фичах и «закоулках» проекта на уровне пользователя через документацию и, возможно, исходники. Это необходимая база.

    Затем начать ставить самому себе (или получать с места работы) какие-то не совсем обычные задачи или задачи, которые можно решить изящнее если доработать код используемого продукта. Написать первый патч и попытаться отправить в апстрим (по косякам и недоработкам в предложенных вами патчах подскажут и помогут мейнтейнеры).

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

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

    (Возможно коммент Кэпа. Личное мнение человека, отправившего несколько скромных патчей в Yii.)
    Ответ написан
    Комментировать
  • Какие есть хорошие книги по алгоритмизации?

    bryndin
    @bryndin
    долго: Дональд Кнут, «Искусство программирования»
    быстрее: Роберт Седжвик, Алгоритмы (не знаю, что на русском издавалось)
    еще быстрее: копать code.google.com/edu/algorithms/index.html (англ.)
    Neo: I know kung fu: www.cs.princeton.edu/~rs/AlgsDS07/ (слайды Седжвика на англ.)
    Ответ написан
    Комментировать