Важные для будущего прогера технологии и навыки
С тех пор многое что изменилось, возможно стоит его дополнить
P.S. может все-таки сделать тред обсуждаемым?
Ruby
Навык - gems, bundle, умение написать простенькие скрипты
Зачем - 1. Неплохо реализованные механизмы реиспользования кода для не-энтерпрайз небольших приложений - значительная формализация процесса контроля внешних зависимостей приложения (аналог для моего любимого ObjC - cocoapods)
2. написано много полезных скриптов, облегчающих процессы Continous integration (включая тестирование) для мобильных и веб приложений
AppleScript
Навык - уметь найти Library команд скрипта
Зачем - если вы работаете с Mac OS - эта штука позволяет организовать, описать и повесить на хоткеи частоприменимые операции по работе с текстом/файлами/приложениями (в качестве оффтопа - у меня на эплскрипте сделан скриптик, который переключает не отвлекая от работы треки во вкладке вконтахта) Позволяет комфортно запускать более низкоуровневые скрипты (питон, баш и все прочее но удобнее и проще и имеет мощную библиотеку сниппетов
YACC, LEXНемного капитанства
Навык - уметь написать DSL, понимание что такое форма Бакуса-Наура
Зачем - позволяет быстро организовать преобразование DSL в синтаксическое дерево, в связи с чем позволяет значительно упростить написание рутинных и частоповторяющихся задач в проекте.
git
Навык - хотя бы на уровне оперирования SmartGit(merge, cherry-pick, rebase ...)
Зачем - значительно помогает в организации работы над проектом различными людьми
Jira, Trello, Asana
Навык - хотя бы знать об их существовании (в случае с Jira еще неплохо бы уметь работать с AgileBoard, уметь интегрироваться со Stash и Confluence)
Зачем - помогает организовывать свою работу на маленьких (Trello/Asana) и больших (Atlassian Jira) проектах, в качестве трекинговых систем
Или более подробно по технологии, что можно сказать одной строкой?
Вряд ли много нового будет в том, что люди пользуются Postgres или там nginx
Также предлагаю сделать тред обсуждаемым.
Собственно, я выскажусь за Postgres — современная промышленная субд с гео и структурированными данными, возможностями расширения.
Хорошо прилагается в финансовой сфере и там где нужна аналитика.
Разработчики постгреса (Бартунов) работают и в МГУ, можно консультироваться.
Старый пост был немного другого формата, там больше было с позиции базовых знаний, здесь же речь именно о технологиях.
Часто интересно понять, как функционирует та или иная программа, особенно если она ведет себя не так как хотелось бы.
Это gdb, strace/dtrace, lsof, objdump/otool
Для сетевых программ, соответственно, nmap, netcat, curl
Всё кроме UI сейчас более менее понятно. А вот какую UI либу ботать будущему прогеру, это интересный вопрос.
Android Studio в декабре 2014 года, два месяца назад, стала официальной IDE для Android, заменив собой Eclipse. Осваивайте сразу её. Система значительно более совершенная, чем старичок-Eclipse.
Аналогично появившийся в 2014 году язык программирования Swift обеспечил приятную альтернативу многословному и древнему Objective C для iOS. Учите Swift.
В ближайшие годы должна выйти стабильная версия языка Kotlin, который задуман обеспечивать еще большую строгость в написании кода, чем Java. В частности, в дизайне языка Kotlin убрана такая "нехорошая" сущность как null. Язык сразу затачивается своими создателями в том числе и под Android. В отличие от языка Scala новый язык создается для промышленной разработки, а не для академических упражнений. То есть он запланирован быть простым, строгим и чтобы плохой код на нем было сложно написать.
Немного в сторону от мобильных технологий. Язык Go, активно продвигаемый Google, может стать удобным инструментом в облачных технологиях, которые в ближайшие пять-десять лет возможно станут главным трендом IT, заняв место мобильных технологий — теперешнего лидера. В общем, потихоньку переводим свое внимание с мобильных на облачные технологии.
[*]bash
Многие говорят, что надо писать скрипты сразу на python или ruby, но это спорно - как минимум неудобно делать длинные цепочки процессов, связанных пайпами. В любом случае, не видел людей, которые ставят себе irb в качестве шелла. Обязательно знать интерактивные фичи типа поиска по истории (Ctrl-r job control (Ctrl-Z) и так далее.
[*]make
Дополняет баш, позволяет описать граф зависимостей между файлами и обработать его параллельно. Очень важен при написании скриптов, которые запускают медленные программы (тяжелые компиляторы например) или копируют большие файлы.
[*]cp, mv, find, grep, rsync - работа с файлами
[*]ssh (включая всякие штуки типа reverse ssh)
[*]vim - обязательная часть юникса. Без него не решаются примитивные задачи, типа получить список файлов соответствующих критерию, просмотреть их глазами, и удалить выбранные. Без вима вы выведете список файлов с помощью find, а что дальше делать - неясно. С вимом вы напишете :r! find dir -name '*.txt', в буфере появится список файлов, с помощью gf вы сможете переходить к этим файлам, и редактировать его, а потом напишете :w !xargs rm, и файлы, список которых находится в буфере, будут удалены. Если вы используете mc, значит вам на самом деле нужен vim.
[*]screen, tmux - вкладки в терминале, с нотификацими, возможностью передачи данных, и созданием сессий на удаленной машине, которые не рвутся при обрыве связи.
получить список файлов соответствующих критерию, просмотреть их глазамиЕсли ты не можешь придумать регексп, описывающий нужные тебе имена файлов, тебе не нужны эти файлы!
А расскажите про Python.
Оставить комментарий
Werdna
Всем привет! Предлагаю краткий опрос, какие технологии и навыки вы бы рекомендовали молодым бойцам знать и уметь.Правила простые:
0. Называем технологию, даем краткое её описание и немного о своём видении базового уровня, без воды.
1. Одна технология — один пост, чтобы ±1 можно было ставить конкретному посту.
2. НЕ обсуждаем чужие предложения, только голосуем или генерируем свою.
По ходу пьесы я буду, если считаете, что комментатор налил воды или наоборот изложил совсем уж кратко, пишите в приват(!) автору камента. Просьба модераторов вычищать флуд и просто обсуждения, хочется именно большую ленту с понятиями и технологиями. Лучше голосуйте! Это куда важнее.
Эта лента поможет новичкам подбирать что-то себе по вкусу для ботвы, а старожилам — обратить внимание итоже что-то изучить.
Примеры плохой:
Пример хороший:
Ещё хороший пример:
Другой пример:
Ещё такой навык:
Предлагаю также только писать про известные технологии. Малоизвестные штуки могут быть прекрасны, но для них лучше отдельные треды заводить, тут мало кто оценит и возможно вас больше заминусуют чем будут вникать.
Нарочно не предлагаю никаких вариантов сам. Вам слово!