Важные для будущего прогера технологии и навыки

Werdna

Всем привет! Предлагаю краткий опрос, какие технологии и навыки вы бы рекомендовали молодым бойцам знать и уметь.
Правила простые:
0. Называем технологию, даем краткое её описание и немного о своём видении базового уровня, без воды.
1. Одна технология — один пост, чтобы ±1 можно было ставить конкретному посту.
2. НЕ обсуждаем чужие предложения, только голосуем или генерируем свою.
По ходу пьесы я буду, если считаете, что комментатор налил воды или наоборот изложил совсем уж кратко, пишите в приват(!) автору камента. Просьба модераторов вычищать флуд и просто обсуждения, хочется именно большую ленту с понятиями и технологиями. Лучше голосуйте! Это куда важнее.
Эта лента поможет новичкам подбирать что-то себе по вкусу для ботвы, а старожилам — обратить внимание итоже что-то изучить.
Примеры плохой:
Язык Brainfuck — немного странный язык, даже больше мем. Особенно навыки этого языка в жизни не нужны, но можно иногда отвлечься от шахмат и развлечься написанием причудливых программ с друзьями за стаканом компота.
Пример хороший:
Язык Braifuck:
http://ru.wikipedia.org/wiki/Brainfuck
http://lurkmore.to/BrainFuck
Навык: знакомтво на минимальном уровне.
Ещё хороший пример:
jquery — известная библиотека яваскриптовая.
Навык: уметь написать простенькую поделку на яваскрипте, поиграться со стандартными компонентами.
Другой пример:
vi/vim — текстовый редактор
В жизни точно не будет лишним как минимум изучить Вим, и знать команду :q!
Возможно, что вам язык понравится и вы его полюбите. Многие его используют как основной.
Ещё такой навык:
nginx — веб сервер.
Навык полезный: уметь собрать или хотя бы просто установить, уметь какие-то сделать простетские настройки для сайта «я и моя собака».
Mysql — база данных.
Навыки: установить, создать простеньких несколько таблиц, научиться писать запросы, написать простенькие триггеры, сдампить базу в файл, восстановиться из дампа.
Предлагаю также только писать про известные технологии. Малоизвестные штуки могут быть прекрасны, но для них лучше отдельные треды заводить, тут мало кто оценит и возможно вас больше заминусуют чем будут вникать.
Нарочно не предлагаю никаких вариантов сам. Вам слово! :)

yroslavasako

Ну есть старый пост:
С тех пор многое что изменилось, возможно стоит его дополнить

Anna551

Из того что использую я. Извините, что одним постом.
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) проектах, в качестве трекинговых систем

okis

Мб писать про стек технологий целиком?
Или более подробно по технологии, что можно сказать одной строкой?
Вряд ли много нового будет в том, что люди пользуются Postgres или там nginx
Также предлагаю сделать тред обсуждаемым.

Собственно, я выскажусь за Postgres — современная промышленная субд с гео и структурированными данными, возможностями расширения.
Хорошо прилагается в финансовой сфере и там где нужна аналитика.
Разработчики постгреса (Бартунов) работают и в МГУ, можно консультироваться.
Старый пост был немного другого формата, там больше было с позиции базовых знаний, здесь же речь именно о технологиях.

okis

Этот пост про инструменты отладки и анализа (они разные, но задача в целом одна)
Часто интересно понять, как функционирует та или иная программа, особенно если она ведет себя не так как хотелось бы.
Это gdb, strace/dtrace, lsof, objdump/otool
Для сетевых программ, соответственно, nmap, netcat, curl

6yrop

Всё кроме UI сейчас более менее понятно. А вот какую UI либу ботать будущему прогеру, это интересный вопрос.

nikola1956

Немного по технологиям создания мобильных приложений.
Android Studio в декабре 2014 года, два месяца назад, стала официальной IDE для Android, заменив собой Eclipse. Осваивайте сразу её. Система значительно более совершенная, чем старичок-Eclipse.
Аналогично появившийся в 2014 году язык программирования Swift обеспечил приятную альтернативу многословному и древнему Objective C для iOS. Учите Swift.
В ближайшие годы должна выйти стабильная версия языка Kotlin, который задуман обеспечивать еще большую строгость в написании кода, чем Java. В частности, в дизайне языка Kotlin убрана такая "нехорошая" сущность как null. Язык сразу затачивается своими создателями в том числе и под Android. В отличие от языка Scala новый язык создается для промышленной разработки, а не для академических упражнений. То есть он запланирован быть простым, строгим и чтобы плохой код на нем было сложно написать.
Немного в сторону от мобильных технологий. Язык Go, активно продвигаемый Google, может стать удобным инструментом в облачных технологиях, которые в ближайшие пять-десять лет возможно станут главным трендом IT, заняв место мобильных технологий — теперешнего лидера. В общем, потихоньку переводим свое внимание с мобильных на облачные технологии.

luna89

Unix-окружение и unix-скриптинг. Необходимо знать для сборки и деплоя программ, а также для автоматизации рутинных задач. Минимальный набор утилит:
[*]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 - вкладки в терминале, с нотификацими, возможностью передачи данных, и созданием сессий на удаленной машине, которые не рвутся при обрыве связи.

apl13

получить список файлов соответствующих критерию, просмотреть их глазами
Если ты не можешь придумать регексп, описывающий нужные тебе имена файлов, тебе не нужны эти файлы! :umnik:

MarizzaMarizza

А расскажите про Python.
Оставить комментарий
Имя или ник:
Комментарий: