Как стать программистом

Люди, желающие сменить профессию и попробовать себя в новой области, часто интересуются программированием. Умение писать код — востребованный на рынке IT-технологий навык, который помогает пользователям компьютера и в бытовых ситуациях.
 
С ЧЕГО НАЧИНАТЬ ИЗУЧЕНИЕ ПРОГРАММИРОВАНИЯ
 
Освоение новой области начинается с основ, иначе человек станет простым кодером, пишущим по шаблону и не понимающим алгоритмов действий. В дополнение к этому, для полноценного изучения программирования требуется как минимум среднее знание английского, ведь большинство обучающих курсов и школ — англоязычные.
 
Сначала изучается работа операционных систем: Windows, Mac, Linux, Android и iOS. Это поможет определиться с направлением работы, с какой ОС человеку интереснее работать. Особое внимание уделяется фреймворкам и API. Обучение основам продолжается введением в компьютерные науки. Курсы по этой дисциплине проходят на Coursera и Udacity.
 
Изучение самого программирования начинается со структуры данных, SQL, паттернов и алгоритмов. Без них написание софта превратится в бездумное кодирование. На этом этапе ученик запоминает виды алгоритмов и структур данных (начиная с реляционных). Знания закрепляются тематической литературой, курсами Coursera и MIT. Теперь ученик переходит к системам версионного контроля и репозиториям кода.
 
Получив базовые знания, человек переходит к изучению языков программирования ООП: C++, Python и Java. Дальнейшей работе поможет ведение в технологии:
 
        * HTML;
        * CSS;
        * JavaScript;
        * TCP;
        * Sockets;
        * HTTP;
        * REST;
        * Ruby;
        * Rack;
        * Sinatra;
        * Rails.
 
Желательно соблюдать такой порядок изучения, для постепенного перехода от «базовых» языков к. Полученная теория закрепляется практикой с помощью обучающих онлайн-игр Bit's Quest (практика по JavaScript) и Ruby Warrior (урок по Ruby).
 
ПРОДВИНУТОЕ ИЗУЧЕНИЕ ПРОГРАММИРОВАНИЯ
 
Языки — инструмент, с помощью которого создаётся софт. Чтобы научиться правильно пользоваться инструментом, требуются углубленные знания компьютерных технологий и отдельных областей математики. Так, базовые знания дискретной математики помогают в понимании работы алгоритмов. Онлайн-лекции по этой дисциплине проводит университет MIT.
 
Невозможна работа программиста и без знаний криптографии. Введение в алгоритмы шифрования помогает создавать защищённые приложения и не ошибаться в выборе стойкого алгоритма. Лекции по криптографии можно найти на Coursera.
 
Последние штрихи в самообразовании по программированию: создание компиляторов, изучение параллельного программирования и искусственного интеллекта. Курсы по первым двум дисциплинам проходят на Coursera.
 
Получив хорошую теоретическую базу, можно переходить к углубленному изучению языков. На этом этапе ученик пробует писать коды на разных языках и находит наиболее удобный для себя инструмент. Завершается обучение получением навыка тестирования кода.
 
ВЫБОР ОНЛАЙН-ШКОЛ ПРОГРАММИРОВАНИЯ
 
Кроме литературы и обучающий статей, курс самообразования включает сервисы, предназначенные для обучения программированию.
 
Бесплатные онлайн-школы:
 
        * Code.org: обучение JavaScript. Уровень: для начинающих. Поддерживает русский язык.
        * Codecombat: JavaScript. Подходит для начинающих. Имеется русский язык.
        * Hello Processing — скринкаст, заточенный под изучение JavaScript. Рассчитан на начинающих.
        * Code Avengers: обучение CSS3, HTML5 и JavaScript. Уровень: для начинающих.
        * Codecademy: API, jQuery, PHP, Ruby, Python и т.д. Уровень: от начинающего до среднего.
        * Treehouse: Android, Database, Rails, UX и т.д. Уровень: от начинающего до углубленного. Курсы платные, но имеется триал-версия обучения.
        * Code School: CSS3, jQuery, iOS, Rails, Ruby и Ruby on. Уровень: от среднего до углубленного. Большинство уроков платные.
 
ПЕРСПЕКТИВЫ КАРЬЕРЫ ПРОГРАММИСТА
 
Конечная цель обучения: получение интересной работы в области IT-технологий. Специальность программиста останется востребованной ближайшие два десятка лет — компаниям постоянно требуется разработка приложений и игр, устранение ошибок в уже созданном софте.
 
На выбор места работы влияет зарплата и востребованность знаний конкретного языка и сфера деятельности компании. В фирмах, специализирующихся на разработке ПО, лучшие для программистов условия труда и выше зарплата.
 
Средняя зарплата разработчиков в российских компаниях (в год):
 
        * Mail.ru Group: $39,000;
        * Kaspersky Lab: $32,000. Компания разрабатывает ПО для защиты компьютера от киберугроз;
        * российское отделение Intel: $29,000;
        * Яндекс: $27,000.
 
Зарплата в инженер-программистов в иностранных компаниях:
 
        * eBay: $120,000. Компания специализируется на интернет-торговле;
        * Google: $119,000;
        * Facebook: $118,000;
        * Amaya Gaming Group: $94,000. Канадская компания, занимающаяся проектами в сфере онлайн-гемблинга. Программисты Amaya разрабатывают клиентские программы для игры в покер, казино и т.д.
        * Alibaba Group: $31,000. Китайская компания, специализация которой — интернет-торговля.
 

Контроллер PlayStation 3 и Windows 10

 Всем известно, что для подключения контроллера PlayStation 3 или X-Box к PC необходимо использовать утилиту DS3 Tool, которая устанавливает в систему необходимые для работы контроллера драйвера. Однако, при подключении к Windows 10 возникли некоторые проблемы: дело в том, что Windows 10 не позволяет установить эти самые драйвера корректно.
 
Для того, чтобы Windows установила необходимые драйвера, нужно отключить проверку подписи драйверов. Существует два способа: через командную строку или через GUI. Ниже привожу оба.

Читать дальше →

Ubuntu появится на смартфонах и планшетах

В сегменте мобильных операционных систем появится еще одна платформа – Ubuntu Linux. В ближайшее время глава компании Canonical Марк Шаттлворт анонсирует версии популярной ОС для “умных телефонов”, планшетов и телевизоров.

В качестве основного конкурента Canonical видит Android. При этом Марк Шаттлворт отметил, что сделка по слиянию Google и Motorola Mobility вынудила многих производителей искать альтернативные платформы.

По словам разработчиков Ubuntu, пользователи активно осваивают портативные устройства, поэтому Canonical не могла остаться в стороне от этих тенденций. Компания ведет переговоры с несколькими крупными производителями, которые способны наладить выпуск смартфонов и планшетов на базе Ubuntu.

В качестве интерфейса мобильной версии ОС будет использоваться Unity. Точной информации о начале продаж Ubuntu-смартфонов нет. Предположительно, релиз первых таких устройств состоится в следующем году, после выхода настольной ОС Ubuntu 12.04 Precise Pangolin.

Не работает SSL во всех приложениях в Windows XP

Только что столкнулся с проблемой: на одной из Windows XP в небольшой сети Outlook 2003 не захотел подключаться к серверам google через ssl. При этом также не работали все сайты https/ssl в браузере Internet Explorer и не обновлялся установленный антивирус – просто говорили, что сервер не найден.

Остальные Windows XP в сети вели себя абосолютно корректно :) То есть, проблема явно не в прокси-сервере.

Настройки все клиенты получают одинаковые c dhcp-сервера, то есть, проблема не в конфигурации TCP/IP.

Читать дальше →