Настоящий программист
Название цели провокационное, ибо кто такой настоящий программист не знает ни кто, а точнее, у каждого свой ответ на этот вопрос.
Для меня это значит:
- эффективно решать задачи при помощи различных инструментов (языков программирования);
- обладать алгоритмическим мышлением (думать как программист);
- можно добавить еще что-нибудь, но два пункта выше для меня основные.
Исходя из того, что целью является стать программистом, а не уметь программировать, скажем на JavaScript или PHP, обучение в этот раз (а уже были попытки) начну с "базы" - математика + алгоритмы и структуры данных + архитектура ЭВМ и т.д. Параллельно буду практиковаться в решении задач, с помощью языка JavaScript, подробнее будет понятно из этапов цели.
В этапы будут вноситься различные источники получения знаний (курсы, книги и пр.), но это не значит, что изучать их я буду все, если для понимания темы достаточно будет одной книги, остальные читать я не буду и т.д.
Многие этапы будут выполняться одновременно, некоторые последовательно.
Отчеты в этой цели каждый день, еженедельные "саммари" в блоге kovaldmitriy.ru
Цель будет дополняться.
Goal Accomplishment Criteria
Зарабатываю программированием (офис или Upwork).
Personal resources
время - несколько часов в день, базовые знания в верстке, ЯП python, js, php.
- 
                    
                    Структура и интерпретация компьютерных программ (SICP)- 
                                                                        1.2. Процедуры и порождаемые ими процессы 
- 
                                                                        1. Построение абстракций с помощью процедур. 1.1. Элементы программирования 
- 
                                                                        1.3. Формулирование абстракций с помощью процедур высших порядков 
- 
                                                                        2. Построение абстракций с помощью данных. 2.1. Введение в абстракцию данных 
- 
                                                                        2.2. Иерархические данные и свойство замыкания 
- 
                                                                        2.3. Символьные данные 
- 
                                                                        2.4. Множественные представления для абстрактных данных 
- 
                                                                        2.5. Системы с обобщенными операциями 
- 
                                                                        3. Модульность, объекты и состояние. 3.1. Присваивание и внутреннее состояние объектов 
- 
                                                                        3.2. Модель вычислений с окружениями 
- 
                                                                        3.3. Моделирование при помощи изменяемых данных 
- 
                                                                        3.4. Параллелизм: время имеет значение 
- 
                                                                        3.5. Потоки 
 
- 
                                                                        
- 
                    
                    Архитектура компьютераЦель этапа.- Общее устройство компьютеров
- Понимание принципов работы процессора и исполнения машинного кода (опкоды, ассемблер)
 Курс отсюда ![]()  - 
                                                                        Книга “Код. Тайный язык информатики” Чарльз Петцольд. 
- 
                                                                        Курс Введение в архитектуру ЭВМ. Элементы операционных систем. 
 
- 
                    
                    Операционные системы + *NIXЦель этапа- Процесс/Поток (понятие, состояния, жизненный цикл, сигналы)
- IPC (пайпы, сокеты)
- Владение командной строкой (bash)
- Умение оценить состояние системы (ps, top, free, df, du)
- Понимание системы прав в linux
- Просмотр логов (syslog)
- Перенаправления и потоки
- Переменны окружения
- Системы инициализации (systemd)
- SSH
- Генерация и использование ключей
 - 
                                                                        Курс hexlet "Операционные системы" 
- 
                                                                        Книга “Современные операционные системы”. Эндрю Таненбаум, Х. Бос. 
- 
                                                                        Курс hexlet "Linux: Пользователи" 
- 
                                                                        Книга “Операционная система UNIX”. Андрей Робачевский, Сергей Немнюгин, Ольга Стесик. 
- 
                                                                        Книга “Руководство администратора Linux”. Эви Немет, Гарт Снайдер, Трент Р. Хейн. 
 
- 
                    
                    ИнформатикаТрудно отнести к какому то одному этапу, но в целом важные знания ) - 
                                                                        Курс на stepik "Введение в теоретическую информатику" 
 
- 
                                                                        
- 
                    
                    МатематикаЦель этапаПолучить базовые знания в следующих разделах математики - Теория множеств
- Булева алгебра
- Комбинаторика
- Теория автоматов
- Теория графов
- Статистика
- Подготовить мозг к пониманию алгоритмов )
 Источники, в основном, курсы МФТИ в "исполнении" Райгородского - 
                                                                        Курс на stepik "Основы дискретной математики" 
- 
                                                                        Курс на stepik "Ликбез по дискретной математике" 
- 
                                                                        Курс на coursera "Математика для всех" 
- 
                                                                        Курс на coursera "Комбинаторика для начинающих" 
- 
                                                                        Курс на coursera "Современная комбинаторика" 
- 
                                                                        Курс на coursera "Теория вероятностей для начинающих" 
- 
                                                                        Курс на coursera "Теория графов" 
- 
                                                                        Курс на coursera "Случайные графы" 
 
- 
                    
                    Алгоритмы и структуры данныхЦель этапа- Массивы
- Ассоциативные массивы/Словари
- Связаные списки
- Графы/Деревья
- Очереди
- Сортировка массивов
- Алгоритмическая сложность
- Обход деревьев
- Операции над списками (вставка, удаление, переворот, поиск циклов и т.п.)
 - 
                                                                        Книга "Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих". Адитья Бхаргава 
- 
                                                                        Курс на coursera "Алгоритмизация вычислений" 
- 
                                                                        Книга "Алгоритмы. Вводный курс". Кормен 
- 
                                                                        Книга "Алгоритмы. Построение и анализ" Кормен 
- 
                                                                        Книга "Структура и интерпретация компьютерных программ" 
- 
                                                                        Курс на Hexlet "Структура и интерпретация компьютерных программ" 
 
- 
                    
                    Профессия "Бэкенд JS-программист (node.js)" на Hexlet.Пройти все этапы и минимум 3 проекта. Ссылка на курс ru.hexlet.io/professions/backend 
- 
                    
                    Английский языкЦель этапа- Читать любую техническую документацию, понимая 80-90% слов
- Вести деловую переписку, уровень intermidiate
- Разговорный английский - понимать и поддерживать разговор на простые темы + профессиональные термины.
 На первом этапе главный способ достижения - чтение документации и художественной литературы, занося неизвестные слова в ANKI или LinguaLeo (есть Premium) + слушать радио (BBC). На следующих этапах (через 6-9 месяцев, видимо) - сериалы, метод Умин, Пимслер, Italki и пр. Изучение языка один из важнейших аспектов в профессии "программист", поэтму ежедневные занятия должны быть протяженностью не менее 2-х часов. 
- 
                    
                    ПрактикаЦель этапаНа первом этапе, при изучении математики, информатики и пр. не забывать зачем все это, для этого решать задачки на перечисленных ниже ресурсах. - hexlet (практика)
- codewars
- leetcode
 На последующем этапе внедрять полученные знания на hexlet, путем разработки проектов. 
- 5374
- 13 November 2017, 08:28
Don't miss new posts!
Subscribe for the Goal and follow through to its completion
 
     
     
     
				