Source: theasder.github.io/skills/2014/06/09/useful-programming-skills.html (пост удалён, поэтому я скопипастила его сюда).

  • Регулярные выражения
  • Освоить Linux.
  • Научиться работать с командной строкой.
  • Утилиты командной строки (методичка):
    • grep (= global regular expression print)
    • awk (a text pattern scanning and processing language)
    • sed (= stream editor)
  • Vim.
  • Контроль версий: Git, GitHub, Hg и SVN (сходства и различия, основные команды).
  • Найти сайт с вопросами из интервью при приеме на работу, попробовать ответить на них самому, со всем кодом, написанным на языке, который хуже всего изучен.
  • Зарегистрироваться на Stack Overflow и научиться пользоваться сайтом.
  • Прочесть доку по вашему любимому языку программирования.
  • Полностью настроить среду разработки (установить и настроить IDE для какого-то конкретного языка программирования).
  • Научиться разрабатывать эффективные тесты для вашего кода.
  • Написать программу, которая проходит по страницам и анализирует базовую информацию.
    • Добавить к написанной программе возможность заполнить 1-2 формы;
  • Запрограммировать базовую линейную алгебру (матрицы, векторы, умножение);
    • Добавить к библиотеке сингулярное разложение;
    • Добавить возможность вычислить обратную матрицу;
    • Добавить метод наименьших квадратов;
    • Заставить библиотеку работать эффективно с разбросанными данными.
  • Понять, как использовать генератор списков в Python.
  • Запрограммировать простой алгоритм машинного обучения (прочесть csv файл, разделить на обучающее множество и тестирующее множество, запустить алгоритм с перестраиваемыми параметрами и простой вывод из релевантной статистики)
  • Ознакомиться с AWS и их API в языке программирования по выбору.
  • Построить линейный график в Excel или в чем-то другом (например, в R).
  • Изучить базовый функционал базы данных NoSQL.
  • Изучить большую часть базового функционала SQL.
  • Понять разницу между базами данных SQL и NoSQL (сильные стороны, слабые стороны, ограничения, где какую использовать и почему и т.д.)
  • Понять надобность в распределенных вычислениях и распределенном хранении данных и возникающие трудности:
  • Относящиеся к Python:
    • Прочесть про встроенные функции в Python и понять, что делает каждая.
    • Создать сайт в соответствии c уроком Flask (и изменяя его) или с помощью Tornado demo
    • Изучить библиотеку itertools.
    • Начать пользоваться CheckIO
  • Научиться редактировать статьи в Википедии.
  • Научиться писать разметку.
  • LaTeX, BibTex и pgfplots.
  • Инструмент по обработке HTML или XML страниц.
  • Основы JavaScript и D3.js.
  • Если знакомы с объектно-ориентированным программированием, то изучить шаблоны проектирования.
  • Сделайте простенькое встраиваемое Java-приложение с как минимум одним взаимодействием с обработчиками событий и не только одними кнопками.
  • Базовая теория графов.
  • Реализовать один или два сортировочных алгоритма (возможно, быстрая сортировка и Mergesort).
  • Реализовать структуру данных «список списков».
  • Реализовать
  • Реализовать