• Java. Какие проекты для middle?

    zolt85
    @zolt85
    Программист
    Однажды предлагали сделать в качестве тестового задания RSS ридер со всякими там плюшками в виде шаринга ссылок, оповещениях о новых записях и т.д. Все это на Spring, Hibernate. В другом месте предлагали реализовать плагин для Jira. Да куча задач всяких.
    Ответ написан
    Комментировать
  • Какую литературу можно найти по golang?

    gordon_shamway
    @gordon_shamway
    Программирование на языке Go. Разработка приложений XXI века
    Но что там написано я не знаю.
    Ответ написан
    Комментировать
  • Какой выбрать ЯП для быстрого изучения (1-2 месяца)?

    @sputnic
    Android Developer
    Ну выучите вы язык за два месяца,только чтоб джуниором устроиться гораздо больше надо
    Ответ написан
    Комментировать
  • Карьера программиста после 30+. Миф или реальность?

    max-kuznetsov
    @max-kuznetsov
    Главный IT-архитектор
    Боже, сколько страшилок понаписали!

    Дай-ка и я своё слово вставлю.

    Я начинал свою профессиональную карьеру дважды. Первый раз в 2002-м году. На тот момент мне было 26. Работал с Delphi. Дослужился до ведущего разработчика. Но пришлось сменить направление деятельности. И второй раз снова начал с простого программиста, осваивающего Java и .NET. Это было уже в 35. Сейчас работаю архитектором.

    От одного хорошего человека слышал, что главный инструмент разработчика - его голова и опыт. Я бы ещё добавил сюда интуицию и кругозор. Опыт в начале пути стремится к нулю, но голова в 35 работает лучше, чем в 20, интуиция и кругозор значительно более развиты.

    Что до сил, то да, их в 20 лет больше. Но вот внутренней мотивации и простой мудрости не хватает, так что силы транжирятся почём зря. Нет ещё опыта в том, чтобы ставить перед собой цели и добиваться их. Наличие семьи - тоже важный мотиватор.

    Юность имеет свои преимущества, но они не решающие. И недостатков у молодых программистов тоже много. Так что я бы не стал говорить, что у Вас всё плохо. В 30+ жизнь только начинается. Это я точно знаю!

    P.S. У нас в проектах работают люди разного возраста и пола. Программисты в 30 и старше - хорошее ядро команды. Они вносят стабильность. В том числе и в код. Но иногда нужно их мотивировать на то, чтобы пробовать что-то новое. И тут важно присутствие молодёжи.
    Ответ написан
    2 комментария
  • Карьера программиста после 30+. Миф или реальность?

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

    По большому счету, как я понял из собеседований, важен не возраст (как и образование), а навыки, знания, умение быстро искать и находить информацию, задавать правильные вопросы, умение быстро учиться. Т.е. спрос есть, но не ваше тело, а на ваш мозг.

    Да, конечно, может быть где-то будут смотреть косо, трудно будет учиться, отвлекаться от семьи/детей или еще чего - но тут какая разница - вам шашечки или ехать? Надо переступить немного через свое самолюбие, гордыню и амбиции и стараться как можно быстрее набраться опыта. Набраться опыта в коллективе всегда проще, чем дома - поэтому надо побыть немного джуниором.

    На счет плюсов молодых - это элементарное отсутствие семейных проблем и готовность к постоянным переработкам. Да и денег чаще они хотят меньше + им так же нужен опыт.

    з.ы.:для поднятия настроения
    Ответ написан
    1 комментарий
  • Вам тоже не нравится, что модераторы удаляют самые интересные вопросы на Тостере?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Обычно удаляют не интересные вопросы, а тупые, ответ на которые можно легко найти в гугле. И популярность вопроса (активность пользователей) совсем не означает, что вопрос интересный и полезный для тостера.
    Ответ написан
    Комментировать
  • Считаются ли публикации глав из книги попиранием прав собственности?

    begemot_sun
    @begemot_sun
    Программист в душе.
    Да.
    Ответ написан
    Комментировать
  • Как программисты оценивают стоимость своей работы?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    а может он наоборот проработал плохо, и из за неэффективности своей работы принес только убытки компании.

    Не не не не... Во всем виноваты менеджеры.
    Ответ написан
    Комментировать
  • Кто-нибудь использует много веб-фреймворков в новой разработке?

    copist
    @copist
    Empower people to give
    Во-первых, это вопрос личных предпочтений и предпочтений команды.
    Во-вторых, это требования обстоятельств при промышленной эксплуатации.

    На старте, обычно, выбирается то, что лучше знаешь. Да хоть бы и без фреймворков. Переключаться на старте - это тратить время впустую. Главная задача - получить MVP.

    После получения MVP (Minimum Viable Product) и "зелёного света" на промышленную разработку, можно оценить результаты тестирования на потенциальных потребителях, выяснить предполагаемую нагрузку и, при необходимости, пересмотреть платформу. Сменить программную или аппаратную архитектуру, язык программирования или их комбинацию, фреймворк - стек технологий это называется.

    Через некоторое время после начала промышленной эксплуатации могут возникнуть проблемы, связанные с неверно выбранной архитектурой или недостаточной производительностью. Команда выбрает путь: допилить текущее решение, использовать альтернативное решение или написать ещё раз с учётом возникших обстоятельств.

    Есть проекты, которые жёстко костылят и они таким образом живут годы. Вплоть до того, что там PHP4 и отображение прямо в файлах с бизнес-логикой, зато страницы выдаются за миллисекунды.
    Есть проекты, которые уже несколько раз переписывали с нуля, потому что охренеть какая сложная штука получается и без достаточно высокого уровня абстракции его очень сложно наращивать.
    Есть те, где не костылили и не меняли платформу, а просто увеличили производительность сервера до небес.
    Ответ написан
    Комментировать
  • Как убивать node, если я использую sublime text 2?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    npm install -g nodemon (из-под админа), дальше запускаете как nodemon myapp.js и код будет автоматически релоадиться при изменении.
    Ответ написан
    4 комментария
  • В какой БД хранить логи посещений?

    Можно воспользоваться связкой Logstash + ElasticSearch + Kibana.
    Logstash - принимает и парсит логи.
    ElasticSearch - хранилище.
    Kibana - визуализация данных.

    https://www.elastic.co

    ps. имею опыт работы с такой связкой. Сейчас в хранилище порядка 1,5 миллиардов событий на 4 серверах. Работает без проблем.
    Ответ написан
    3 комментария
  • Зарплаты front-end разработчиков превысили зарплаты back-end разработчиков. Так ли это?

    @CAMOKPYT
    Если брать типовой проект любого состава, то что бы там не было на бекенде это делается чуть ли не мгновенно от всяких цмс с тонной плагинов, до быстрого прототипирования на рельсе. За что платить бекендщику-то? За то что он прочитал доку по рельсе или друпалу и за 2 дня поднял целый надежный проект? Думаю сейчас уже столько этих бекендщиков, не говоря уже о нереальном количестве оттестированных инструментов. А что есть в фронтенде? А ничего там нет. Есть jQuery, но она видите ли тормозит, а ангуляр конечно же нет. Нет нормальных инструментов, зато есть тонны полифилов, благодаря которым разработка превращается в подгонку кода под каждый браузер, это тяжело и непродуктивно. Тестировать фронтенд это ад. Куча всяких мета языков - TS, Coffee, Opal и еще с десяток непопулярных. Ах да, вы не можете быть просто фронтендщиком, вам надо работать с бекендом на вебсокетах и аджаксе, так и с версткой, знать всякие там Stylus, SCSS, SASS, а если не повезет то еще и HAML/SLIM. Добавьте сюда еще и ущербность жс как языка, ему еще развиваться и развиваться чтобы стать нормальным, а ведь еще надо знать апи браузера, уметь во все нюансы ивентов и прочее. А еще жс течет по памяти только так. А еще надо уметь в производительность для мобилок. Осилить это все вместе очень тяжело, особенно чтобы быть таким же продуктивным как бекендщик, каждая деталь имеет кучу важных нюансов, нельзя просто так взять и стать фронтендщиком. Если уж хотите то в текущем состояние зарплата фронтендщика состоит на 95% из ущербности его инструментов и те же самые 95% времени фронтедщик занимается борьбой со своими же инструментами.
    Ответ написан
    4 комментария
  • Есть ли чаты для разработки?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    Ответ написан
    Комментировать
  • Что нужно знать чтобы стать начинающим системным инженером (devops)?

    Singaporian
    @Singaporian
    Статья, которую должен прочитать каждый.

    DevOps - не профессия. Это название культуры доставки кода от разработчика (dev) через тестировщиков и до сисадмина(ops) и обратная связь по этой цепочке.

    Человека, который внедряет DevOps, обычно называют... как хотят. Чаще всего этим занимается какой-нибудь нон-конформист в команде.

    Профессии, которые отрисуются в процессе построения этой методологии следующие:
    • Build Engineer - инженер, который управляет зависимостями, сборками, конфликтами кода.
    • Release Engineer - инженер, который управляет репозиторием кода (кто куда и по каким правилам мерджится и откуда бренчуется). Пожалуй, это самая сложная задача в больших проектах. Особенно с нестрогим Agile или в Waterfall.
    • Automation Engineer - инженер, который занимается автоматизацией рутинных задач. Обычно деплоймент, автотесты, etc. Все эти buzz-слова типа Docker - его инструментарий.
    • Site Reliability Engineer - инженер, который поддерживает ops (апгрейды, расширение железа)
    • Configuration Manager - непонятная мне специальность. Жуткое порождение HR-специалистов, давящих на громкое название позиции. Можно было бы пойти дальше и назвать специальность ZooKeeper Vice President

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

    Почти всегда все эти роли совмещают один-два человека. Ну это зависит от качества кода.
    Назовем эту компанию BRAE/CM для краткости.
    Задача BRAE/CM состоит в том, чтобы программный код, который выходит из под пера программистов, оставался на контроле программистов и сисадминов одновременно. Программисты, равно как и сисадмины, благодаря DevOps-подходу, имеют возможность и даже обязаны обслуживать код на протяжении всего жизненного цикла от планирования архитектуры до мусорки.
    То есть сисадмины начинают рулить еще до того, как код попадет к ним - на ранних стадиях, а программисты продолжают рулить своими задачами уже после того, как код от них ушел к сисадминам - на поздних стадиях. И все это прозрачно друг для друга и все проблемы и решения ходят туда сюда и не спотыкаются о бюрократия в стиле "ничего не знаю, мы код уже закоммитили, у меня тут свои проблемы, у них сломалось - пусть сами и чинят".

    Так вот эта работа - завершающая стадия системного администратора и начинающая стадия разработчика. Поэтому не бывает Junior BRAE/CM.
    BRAE/CM бывает всегда только Senior в системном администрировании и всегда Junior в программировании.

    Еще один момент. В домашних условиях можно выучить инструменты на базовом уровне. Но не поварившись в одной кастрюле с реальными разработчиками, смысл всей этой кухни не понять. Так что сразу забейте. Но если хотите, могу описать пошаговый длинный путь как стать RE/CM:

    Сразу оговорюсь по языкам.
    У каждого языка свое предназначение. Java чаще используется в корпоративном секторе. Там много серверов и сложные бизнес-приложения. Поэтому Java-мир очень чувствителен к таким понятиям, как "технинческий долг" и "управление процессом разработки". И именно поэтому именно там все основные вакансии DevOps и именно там будет самый интересный опыт.
    Кроме Java, традиционно сильная DevOps-культура у Ruby. Практически все остальные языки не имеют столь развитой и популярной инфраструктуры в в данном контексте и потому вам скорее всего будут неинтересны.
    Другими словами, если в среде разработчиков выбор языка - тема для холивара и эмоций с миллионами сравнительных анализов с противоположными результатами, то для специалистов по DevOps выбор очевиден и прозрачен. Java - это одновременно самые интересные задачи, самый богатый toolset, самый большой выбор вакансий и самые высокие зарплаты.

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

    Итак, что делать:
    1) Почитать книги Head First по Java. Пройти курсы Java на EDX.
    2) Освоить SVN. Есть прекрасные тьюториалы. (GIT освоим позже)
    3) Поставить VirtualBox (не VMWare!!!)
    4) Написать простенькое приложение. Код коммитить в SVN. Собирать его при помощи maven.
    5) Поднять на отдельной виртуалке Jenkins. Он должен брать код приложения на SVN и запускать свой локальный maven для сборки.
    6) Написать модульные тесты (unit tests) своего кода. Пусть maven и их прогоняет.
    7) Поднять где-нибудь Nexus. Усложнить задачу maven, чтобы он теперь складывал все в Nexus. Если maven'у потребуются внешние библиотеки, он тоже не сам должен ходить в интернет, а через Nexus (Central repo).
    8) Настроить на своем десктопе vagrant так, чтобы он с нуля создавал виртуалки VirtualBox.
    9) Создать виртуалку DEV через vagrant. При этом ansible должен на ней что-нибудь настроить (например установить JDK)
    10) Научиться деплоить jar/war из Nexus на виртуалку DEV чем-нибудь. Чем - не посоветую, так как сам работаю с очень сложным IBM uDeploy, а это точно не для новичка. Посмотрите в сторону Rundeck или чего-то такого. Может самим Jenkins'ом задеплойте.
    11) Напишите интеграционные АВТОтесты. На чем хотите (как вариант: Selenium).

    Усложняем систему.
    12) Донастраиваем Jenkins: собирает maven-проект; выкладывает на Nexus; дергает vagrant/ansible для создания виртуалки SIT (system integration test); деплоит приложение на SIT; прогоняет автотесты на SIT; удаляет виртуалку после успешного завершения автотестов.
    13) Прикручиваем SonarQube в Jenkins для статического анализа кода. Исправляем косяки своего кода, согласно полученным от SQ рекомендациям.
    14) Прикручиваем мониторинг Sensu.
    15) Пишем нагрузочные тесты на чем-нибудь. В идеале потрогать два инструмента: jMeter и Gatling.
    16) Как и в 12-м шаге прикручиваем в Jenkins автоматизацию создания виртуалки SLT (Stress/Load test) и прогона на ней тестов. Только уже лоад-тестов(обязательно) и стресс-тестов(опционально) соответственно.
    17) Дописываем в свое приложение какой-нибудь функционал, чтобы использовалась база.
    18) Придется познакомиться с LiquiBase. Деплой SQL руками делать запрещено.
    19) Перейти на Docker (то есть теперь приложение выкладывать не напрямую в ОС, а внутрь докера)

    20) Денек на то, чтобы почитать про Agile, Scrum, Waterfall и прочие организационные порядки.

    А теперь немного уходим в управление проектом:
    21) Поставить Atlassian Jira. Разобраться, чем отличаются Epic, Story, Task, Sub-Task. Создать себе подобной этой структуре фронт работ (делать его не придется, просто нафантазируйте).
    22) Поставить Atlassian Stash и связать его с Jira.
    23) Переехать со своего SVN на GIT, предоставленный Stash'ем.
    24) Пройти Git-тьюториал какой-нибудь. Инструмент очень нетривиальный.
    25) Взять любую таску в работу. При этом в начале работы сделать новый Git branch из тикета Jira.
    26) По завершению работы запустить всю построенную ранее цепочку, но уже для своего брэнча.
    Дайте попробую угадать: вам пришлось скопировать все джобы и переписывать в них ветки?
    27) Сделать джобы нормально. Чтобы одни и те же можно было использовать для любых веток - по аналогии с принципом программирования "reuse code". У Вас будет reuse job :)
    28) Сделать pull request, самому сделать code review и самому себя же за-approve'ить. После этого сделать merge своей ветки в master.
    29) Сделать сборку брэнча автоматической по git-hook (или SCM pool)

    30) А теперь высший пилотаж: к чертям Docker, Copistrano и прочую buzz-word-hipsters-галиматью. Теперь вы с этим знакомы и сможете применить, но пришло время выгрызать этот детский сад калёным железом. Теперь вы доставляете код только как .deb-пакеты. Это значит, что вы:
    a) разбиваете control-файл на несколько пакетов, возможно с lib*,
    b) оверрайдите все ~20 dh_ в файле rules так, чтобы все это соответствовало вашим наработкам в предыдущих пунктах.
    c) раскидываете файлы по .install
    d) самое тяжелое: готовите .preinst, .postinst, .prerm, .postrm файлы СОГЛАСНО ИХ ПРИМЕРАМ .ex, сгенерированным dh_make - то есть с разбиемнием на update/configure/broken-install и что там еще есть. Это означает, что при переустановке, при апгрейде, при даунгрейде, при удалении и при пурдже, у вас будут разные сценарии, каждый из которых должен быть проработан досканально. На этом этапе вы также познакомитесь с понятием "регрессионные тесты".

    Ну как бы базовый вариант вот. Но это далеко не весь инструментарий и путь. Это так, для начала.
    Кроме этого неплохо бы познакомиться с Puppet (это не очень подходит для DevOps, скорее для рядовых админов с кучей серверов, но это очень популярный инструмент ввиду того, что никто не понимает, что такое DevOps и вас скорее всего заставят управлять сотней серверов, вместо релиз инжиниринга). А так же нужно познакомиться с операционными системами NixOS (обязательно) и CentOS/Debian (опционально, но я бы палкой бил тех, кто не знает эти OS). Кроме того, надо базово ориентирваться в PostgreSQL.

    Внимание, важный момент, который должен быть вшит на уровень подсознания у DevOps-ориентированного инженера: вы все время пробуете новые инструменты. Вы всегда будете находить что-то очень отличное. Знаете Nexus как свои пять пальцев и он решает почти все проблемы? Отлично! Теперь выкидываете Nexus и ставите Artifactory. Знаете хорошо CentOS? Круто! Теперь пробуете все это проделать на Windows или Debian. Потому что только когда вы сможете сравнивать инструменты, ваша работа будет ювелирной. А DevOps бывает либо ювелирным, либо он не DevOps. Вы должны быть языко-независимым, платформо-независимым и инструменто-независимым.

    Что будет дальше? Дальше вы начнете работать с микросервисами (сотни одинаковых контейнеров в облаке, которые должны как-то работать друг с другом без ручной конфигурации). Тогда познакомитесь со всякими Consul, ZooKepper и кучей инструментов AWS/OpenStack.
    Ответ написан
    13 комментариев
  • Какие книги хороши по алгоритмам и структурам данных?

    @mamkaololosha
    Про Кормена и Кнута полная хрень. Вы запутаетесь в тонне материала и теории.
    Берите "Алгоритмы: введение в разработку и анализ" Ананий В. Левитин или А.В. Ахо " Структуры данных и алгоритмы" или "Сортировка и поиск Рецептурный справочник" Thomas Neiman или Скиена С. "Алгоритмы. Руководство по разработке". Осиливается за 2-3 недели чтения на ночь. Потом решите нужно вам глубже или нет. Тут расчет на то, что в алгоритмы приходят "снизу", из математики, а не сверху из "интересно стало".
    Ответ написан
    3 комментария