• Есть ли смысл в изучении новых (совсем молодых) инструментов и языков программирования и какие у них перспективы?

    hrls
    @hrls
    На ответ тянет deadbyelpy
    Добавить можно про определенную категорию языков, работу на которых найти тяжело, но изучить тем не менее стоит. Например, Erlang, OCaml, F# и другие функциональные языки очень сильно развивают мышление в терминах проблемы, а не языка программирования (то, что у МакКоннелла "Программируйте с использованием языка, а не на языке"). Clojure, как пример очень старой основы для языка, но с неимоверно крутыми идеями для современного мира, вроде STM да и в целом моделью параллелизма (отдельно стоит упомянуть ClojureScript и FRP).
    Изучение одного языка сегодня не имеет смысла
    – тяжело не согласиться, т.к. сегодня программист просто вынужден знать несколько языков (думаю 2-3 на уровне библиотек и фреймоворков, 5 на уровне стандартной библиотеки, и с десяток на уровне чтения кода). Провериться можно тут.

    После определенного уровня профессионализма программист сам способен выбирать на чем писать, и наличие в его арсенале нескольких языков и платформ является несомненным плюсом.
    А вообще, уже давно прошло то время, когда ты либо программируешь на Fortran/Basic/C, либо голодный и без денег. Изучение даже очень редкого языка окупается, т.к. это повышает уровень абстракции на котором мыслит программист. Корреляция этого уровня и зарплатных ожиданий пусть и сложна, но определенно существует.

    Бывалые же советуют всегда держать под рукой интерпретируемый язык программирования, вроде Python или Ruby с REPL, для работ вроде "забрать кучу файлов по адресам из текстового файла". Ну и какой нибудь компилируемый тоже пригодится. Вне зависимости от стека и основного языка на проекте эти два друга будут выручать в любых ситуациях.
    Python/PHP/Ruby для веба являются взаимозаменяемыми (при наличии нормальной архитектуры у приложения). Связка C/Go/Python/JS выглядит мощной и очень достаточной на много лет вперед.

    А то, что все зовут стеками, для других является всего лишь набором старых парадигм, паттернов и практик, кочующих от одного языка к другому, но суть от этого не меняется (тут ООП и MVC передают приветы Smalltalk'у, а бородатый Лисп недоумевает, т.к. все эти DSL и приемы метапрограммирования давно живут своей жизнью и забыли истоки).
    Ответ написан
    1 комментарий
  • Чем отличается Software Engineer от Software Architect и где можно прочитать про специальности и направления в IT?

    @lookid
    Software Engineer - инженер программного обеспечения, занимается разработкой собственно ПО в рамках какой-нибудь Oracle, Yandex, Google, Microsoft
    Требования: ВО, опыт, кругозор, умение решать общие задачи и применять алгоритмы и структуры данных (обычно можно обойтись просто патернами проектирования и описанием того или иного алгоритма)
    Coder/Programmer - умеет набирать код, можно без ВО. Работает в банке, на бирже. Поддерживает ПО, написанное Software Engineer'ом.
    Software Architect - Software Engineer, способный с нуля спроектировать систему целиком (ОС, Распределенная БД и прочее), обычно что-то среднее между Lead и technical director.

    Computer Science - "современная информатика", придумывают и исследуют новые алгоритмы обработки и хранения данных.

    Какие направления в университетах (российских) соответствуют конкретным специальностям
    Ммммм.... нету такого. Любой средний вуз будет учить вас чему-то среднему между БД, сайтами, микросхемами и просто макакингу. Среднего выпускника нашего ВО можно назвать Coder/Programmer. Software Engineer он станет лет этак через 4-7, в зависимости от того, в какую "компанию" попадет работать.

    В целом, можно разделить на:
    1) Системное программирование
    OC, ассемблер, С, железяки, графика
    2) Прикладное программирование
    БД, сайты
    3) Computer Science/Data mining
    матан, теорвер, машинное обучение и пр.

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

    barmaley_exe
    @barmaley_exe
    По моему скромному мнению
    1. Неясно, что считается нормальным. Правда наполовину: алгоритмам, сетям, дискретке и прочим основам научат, но классного веб-девелопера не сделают.
    2. Смотря какую работу: фуллтайм в офисе действительно не совместить, а фриланс или 20 часов на старших курсах — вполне.
    3. Очень растяжимо.
    4. Правда. Этот пункт действительно непросто объяснить сташему поколению — видимо, они вне института ни разу не учились.

    Можно ли достаточно зарабатывать (от 100 тыс./руб.) не имея диплома?
    Законом не запрещено :-) Всё зависит от Вас: можно открыть своё дело, можно ворочить большие заказы с проверенными людьми на фрилансе, можно накопить много лет опыта, стать крутым чуваком и получать эти самые 100к, работая "на дядю". Разумеется, во всех этих случаях надо приложить немало усилий.

    Насколько велики шансы успеха в случае полного ухода в себя и свой проект?
    Какого успеха? Нахождения инвестора и попадания в золотой поток? Я бы сказал, что ничтожно малы, если это Ваш первый проект.

    Есть ли ВУЗы, которые дадут достойные знания по профессии разработчика?
    Если ориентируетесь на веб, то в РФ я таких не знаю. Если хотите достойных знаний на пересечении Computer Science, Software Engineering и прикладной математики, то СПбАУ, МФТИ, ВШЭ, ИТМО, СПбГУ, МГУ. Академический университет в этом году впервые принимает на бакалавриат, так что там возможны некоторые флуктуации, но, тем не менее, люди там серьёзные и настроены они соответствующе. В МФТИ есть базовая кафедра, а в ВШЭ теперь целый факультет Яндекса (у этих ребят вообще много всяких образовательных программ, обязательно посмотрите). Ну и ИТМО, СПбГУ и МГУ рекомендуются по-умолчанию :-)
    Ещё могу сказать про УрФУ: там есть классная IT-движуха (CTF, например), контакты с индустрией. А за счёт провинциальности (все вышеобозначенные вузы находятся в Москве и Питере) поступление на бюджет должно быть проще.

    Обязательно ли поступать в профильный ВУЗ или достаточно лишь факультета, а университет не важен?
    Для чего обязательно? Ничего не важно кроме полученных знаний. Даже диплом MIT'а при пустой голове ничем Вам не поможет.

    Резюмируя:
    — Если отсрочка не нужна (т.е. армия не грозит) и хочется заниматься вебом, то при современном уровне развития интернета 4 года можно потратить с большей пользой. Любые знания этого мира у вас под рукой в паре поисковых запросов — зачем ждать занятий, если начать получать знания можно уже сейчас? В то же время, к самообразованию в этом случае надо подойти ответственно: самомотивация не так проста как кажется, "учебный план" следует обсудить с более опытными коллегами, английский — must have. В идеале нужен ментор, который будет наставлять на путь истинный и отвечать на вопросы, но если такого нет, то его можно сделать путём "краудсорсинга" (Я верю, что StackExchange со всеми его разделами являет собой пример системы, способной ответить на практически любой вопрос, ответ на который человечеству известен)
    — Если хочется заниматься "наукоёмкими" задачами (Google Self-Driving car, детектирование лиц друзей на фотографиях в фейсбуке, построение отказоустойчивых систем), то без хорошего образования никуда и никак. Разумеется, поступить в хороший вуз и учиться там мало: нужно ещё и самообразованием активно заниматься.
    Ответ написан
    Комментировать
  • Какие варианты развития карьеры мне доступны?

    Вы вроде бы подразумеваете, что хотите заняться разработкой, хотя явно это не указываете. Ваш вопрос сформулирован в общем виде: какие варианты карьеры мне доступны? Вам доступны любые варианты карьеры, если не уточнить, к чему вы имеете склонность и чем вы сами хотите заниматься.

    Если говорить о карьере разработчика, то довольно очевидный путь - это устроиться в крупную компанию, которая сама себе готовит кадры. Наличие таких компаний в вашем городе (о котором вы также не сказали, если это default city, то вариантов много) смотрите сами. Обычно они есть. Такие компании проводят бесплатные курсы разработчика, тестировщика, аналитика требований и т.п., иногда даже платят стипендию успешным студентам. На некотором этапе отбирают лучших и берут их джуниорами на минимальную зарплату. Если вас не пугает перспектива какое-то время работать "за еду", то это хороший путь.

    Второй путь, о котором я знаю лишь теоретически, состоит в самостоятельном изучении языка программирования (codeacademy.com, книжки "для чайников", тысячи способов), участия в open source проектах, потом можно фрилансить "за еду", нарабатывать профиль и постепенно повышать ставку, пока вас не возьмут удалённо в какую-нибудь контору, так ряд знакомых работает через odesk.com. Наверное, этот путь сложнее, т.к. требует склонности к самоорганизации, отсутствие боязни пробовать новое после неудач.

    Обозначенные мною способы, возможно, потребуют снижения дохода, "дауншифтинг" в случае, если вы уже работаете и что-то зарабатываете. Если вы хотите "плавный переход", то есть, продолжать работать с тем же доходом, но развиваться как разработчик, пробуйте пробиться в своей компании на такие задачи, получите начальный опыт.

    Кстати, забыл упомянуть навык английского. Учите всегда и в любом случае, если он уже есть, то используйте регулярно. Поищите тут, много писали по теме.

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

    Toy
    @Toy
    Front-end Developer @ Starbucks
    veZuk: Многие элементы Си потенциально опасны, а последствия неправильного использования этих элементов зачастую непредсказуемы. Керниган говорит: «Си — инструмент, острый, как бритва: с его помощью можно создать и элегантную программу, и кровавое месиво».
    SARS: Quake тому пример ))

    #393788
    Ответ написан
    Комментировать
  • Хочу устроиться 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 комментарий
  • Какую область изучать?

    Для начала посмотри что тебе интересней: работа в команде или в одиночку. От этого будет зависеть размер проектов. На уровне железа (программирование микроконтроллеров и т.п.) очень много проектов, которыми занимается один человек, начинаешь подниматься выше и размер команды начинает расти. Программирование - это всегда про общение с другими людьми, про создание общего, понятного всем образа разрабатываемой системы. Если нравится общаться с людьми, далекими от IT, иди во front-end. Если хочешь общаться с админами разных мастей, иди в back-end. По мне front-end или desktop скучнее серверного back-end, так как в них очень много однообразия из-за работы с пользователем. Но это мое субъективное мнение, тебе нужно самому попробовать и составить свое собственное мнение.

    Ответы на твои вопросы:
    1. Развивать лобные доли мозга, они отвечают за целеполагание и достижение целей. Медитация говорят очень помогает в этом.
    2. Принять простой принцип: сомневаться и размышлять до того как начал действовать, начав действовать не сомневаться.
    3. Больше общаться с другими людьми, рассказывать им про свои "грабли".
    4. Больше пробовать! Участвуй в открытых проектах, например. Можно кучу всего перепробовать.
    Ответ написан
    1 комментарий
  • Что из себя представляет бизнес — информатика?

    @Posigrade
    если говорить о бакалавриате, то

    Что из себя представляет бизнес — информатика?
    похоже, что БИ — это смесь информатики, экономики и менеджмента, а как именно происходит смешивание решает вуз. В одних местах упор делается на менеджмент, в других — на экономическую теорию, в третьих — на экономический матан и т.п. Если нужен конкретный разговор, то думаю, что о российской БИ говорить особого смысла нет, а надо говорить о БИ в конкретном вузе.
    Если здесь есть выпускники подобного направления: отзовитесь об образовании и работе
    2 знакомых бишника-бакалавра учились с углублением в экономическую теорию, за пивом любят поболтать не только на айтишные темы типа nosql или gpgpu, но и на экономические темы типа хэдж фондов или ВВП. Они ИПшники, используя труд фрилансеров, делают сайтеки на RoR (рельсам в вузе не учили) для своих клиентов, придумывают свой собственный проект.

    В каждом вузе его трактуют по-разному, на разных сайтах трактуют по-разному
    чтоб в хитрых трактовках не путаться, есть простой лайфхак. Чтоб быстро узнать, чему именно учат на БИ (или любой другой специальности) в определенном вузе, надо посмотреть 1) вопросы к госам по БИ в этом вузе (если их нет, тогда быстро выяснить, чему там учат, скорее всего, невозможно) и 2) темы дипломных работ выпускников прошлых лет. В идеале нужно посмотреть презентации с защиты дипломов, это наглядно покажет, чему тут практически учат. Многие вузы презентации в инет не выкладывают, но они обычно хранятся на внутренней кафедровской файлопомойке, если в день открытых дверей спросить о презентациях дипломников или просто списаться с кафедрой, вам эти презентации отошлют, если они есть.

    Попробуем быстро найти разницу в подготовке бакалавров БИ на примере госов по двум первым результатам, которые мне гугл выдал
    итоговый экзамен в СибГУТИ 2011 — mmbp.sibsutis.ru/docs/Programma_gos_bi.doc
    итоговый экзамен в ЮУрГУ 2011 — is.susu.ac.ru/download/diplom/questuion_bi.pdf

    в СибГУТИ все вопросы разделены на следущие 6 подразделов
    1. Программирование
    2. Базы данных
    3. Экономико-математические модели и методы
    4. Информационные системы и технологии
    5. Моделирование и анализ бизнес-процессов
    6. Проектирование и архитектура корпоративных информационных систем

    в ЮУрГУ все вопросы разделены на следущие 7 подразделов
    1. Информатика и программирование
    2. Реинжиниринг бизнес-процессов
    3. Базы данных
    4. Проектирование информационных систем
    5. Стратегический менеджмент
    6. Управление персоналом
    7. Хранилища данных

    Все примерно одинаково, основной выбор в этом случае стоит между «Экономико-математические модели и методы» в СибГУТИ и «Стратегический менеджмент»+«Управление персоналом» в ЮУрГУ.
    Ответ написан
    Комментировать