Cайт веб-разработчика, программиста Ruby on Rails ESV Corp. Екатеринбург, Москва, Санкт-Петербург, Новосибирск, Первоуральск

О себе


Доброго времени суток Вам

Меня зовут Сергей

С информатикой я познакомился ещё в школе - в 1987 году (9 класс) у нас появился такой предмет. Поначалу совсем не привлекло. Изучали работу на калькуляторох, рисовали какие-то блок-схемы, что показалось мне тогда такой фигнёй!... Но случилось всё-таки так, что мне довелось увидеть настоящий компьютер - благо у нас проходили практические занятия в информационном центре Первоуральского Новотрубного Завода. Вот тогда и случился коренной поворот в моей судьбе - меня эта область знаний так заинтересовала, что интерес не пропадает до сих пор ;-)

Первое знакомство было совершенно необычным - очень интересно, но я не умею вообще никак общаться с этой чудной штуковиной - компьютером. После такого знакомства взял у одноклассника тетрадь, переписал всё, выучил. В итоге к следующему практическому занятию я уже сам смог написать программу. Потом даже одну из моих программ преподаватель записал в архив как пример для демонстрации другим учащимся. Первым языком программирования был Фокал - чем-то похож на Бейсик, компьтеры в учебном классе - БК-0010.

Ещё одним фактором интереса к компьютерам и программированию стала научно-фантастическая повесть Дэвида Бишофа "Недетские игры" ("War Games", David Bischoff).

Дальше-больше - стал читать статьи в журналах, пытался вникать в машинные коды, хотя вообще поначалу не понимал, что это за набор цифр. Информации в те времена было катострофически мало - обрывки информации, можно сказать. По статьям из журналов "Радио" выучил Бейсик. Потом купил всё-таки книгу и изучил Паскаль - первый нормальный язык программирования, я до сих пор считаю, что это самый лучший язык программирования для обучения программированию.

Мечтал приобрести компьютер. Теоретически знал уже 3 языка программирования, а на компьютере никак не получалось работать - парадокс. После окончания школы начал работать совсем не по призванию. Заработал и купил первый компьютер БК-0011 ("калька" с DEC PDP-11). Это было счастье! Программировал очень много, хотя в основном это были просто эксперименты - изучение программирования уже на практике. Использовал Бейсик. Попробовал написать игру, оказалось слишком медленно. Изучил ассемблер, разбирался в кодах команд. Система команд и архитектура гораздо лучше процессоров Intel, по крайней мере на мой вкус. В качестве примера могу привести интересную команду: MOV -(R7), -(R7) - код 014747 - кто понимает в системе команд PDP-11, тот поймёт всю красоту этого кода: минимальный (одна команда процессора) самокопирующийся код.

После поступления в институт наконец-то появилась возможность работать на более серьезных компьютерах - IBM PC/XT, а потом даже на более мощных IBM PC/AT 286 - круть по тем временам!

Стало появляться больше информации, в том числе и на электронных носителях - до сих пор храню распечатки на "дипломных работах" - были такие удобные книги A4 формата. Торчали в лаборатории информатики сколько позволяли преподаватели. Наконец-то смог попробовать Паскаль в действии. Изучил C. Программировал уже на 2-х языках.

Затем началась моя IT-карьера - устроился программистом в коммерческую фирму. Вот тогда компьютер был доступен чуть ли ни круглые сутки! В те времена (90-е) было популярным написание собственных бухгалтерских систем, чем и я занимался на работе - выучил FoxPro (СУБД), написал программу для рассчета зарплаты сотрудникам - первая серьезная разработка. В свободное от  работы время программировал для себя - в основном системное программирование - язык C, выучил ассемблер для IBM PC. Ради интереса пытался изучить Пролог, но как-то не нашел ему практического применения, интересовался Forth, Lisp, функциональным программированием.

Много читал книг по разным языкам программирования, информационным системам, но больше всего тяготел к системному программированию - искал уязвимости в операционной системе (тогда MS-DOS, DR-DOS), находил способы обхода систем защиты от копирования, доступа к компьютеру, коих в то время было предостаточно. Сейчас бы это называлось хакер.

Кстати, примерно в то время я и придумал себе псевдоним - ESV Corp. Все тривиально просто - это мои инициалы и тогдашний программистский понт - Corp. в конце ;-) .

Вот совершенно недавно (27.03.2013) наткнулся на аббревиатуру ESV:

The English Standard Version (ESV) is an English translation of the Christian Bible. It is a revision of the 1971 edition of the Revised Standard Version. The translators' stated purpose was to follow an "essentially literal" translation philosophy.

Все бы ничего, если бы мой год рождения не был 1971.

Далее изучил язык C++. Если честно, было довольно сложно сразу понять концепции ООП. Но зато потом умудрялся реализовывать "объекты" на языке C. В общем, шёл в ногу со временем. Сейчас уже всё и не помню, но писал системные утилиты, библиотеку реализации оконного интерфейса. C++ мне в итоге понравился, как C и Паскаль, хотя все эти языки достойны внимания и уважения.

В 1996 году закончил Уральский государственный технический университет по специальности “Вычислительные машины, комплексы, системы и сети”, присвоена квалификация “инженер-системотехник, программист”. Дипломная работа "Универсальный эмулятор вычислительных систем" - программа, которая позволяет описать практически любую архитектуру процессора, вычислительной системы, использовать 24-битную адресацию виртуальной памяти даже на 16-битных (в то время) компьютерах. Программа была написана на языке C.
Диплом защитил на "отлично".

К тому времени я работал уже на Первоуральской ТЭЦ программистом - разрабатывал систему управления кадрами, систему управления документооборотом, системы контроля промышленных процессов. Системы разработки: dBase, FoxPro, FoxBASE. Далее появились более удобные и перспективные системы разработки, которые использовал - Dephi, C++ Builder. В ознакомительных целях изучил Java, но в то время какого-то реального применения ему не нашёл. Освоил системнное администрирование - серверы Windows NT, Novell Netware, Linux. Написал свой первый интернет-сайт.

Дальше ушёл в коммерческие предприятия. Работал системным администратором, веб-программистом. Изучил HTML, CSS, Perl, MySQL. Работал в нескольких компаниях интернет-провайдеров. Для местного интернет-провайдера написал биллинговую систему. Разрабатывал веб-приложения для внутреннего использования. Организовал собственный файловый сервер, собственный веб-сервер. Написал систему доступа к информации - хранилище файлов на 2-х физических серверах (распределенная система), которая выглядела для пользователей как одно целое - интернет-сайт. Система была разработана уже с использованием PHP, MySQL. Для этого сервера так же была написана система учёта траффика на Perl, PHP, MySQL. Одновременно с работой с данными серверами работал в нескольких организациях на договорной основе - поддерживал работоспособность парка компьютеров, занимался системным администрированием, администрированием локальных сетей.

С 2010 года начал работать в Екатеринбурге, снова вернулся к профессиональному программированию. Сначала в ЗАО "Комстар-Регионы", ныне МТС - система обработки данных биллинговой системы - учёт работы пользователей в интернет, телефонные разговоры - Perl, MySQL - большие объемы данных. Очень хороший опыт программирования и запросов SQL.

Потом устроился в веб-студию "Фанки.ru" - наконец-то после некоторого перерыва вплотную начал заниматься тем, что действительно интересно - программированием, веб-программированием - PHP 5.3, Kohana 3, начал использовать архтектуру веб-приложений MVC и снова системным администрированием - содержание веб-сервера веб-студии, который самостоятельно сгенерировал и администрировал - Linux, Apache, PHP, Samba-сервер, DNS-сервер, почтовый сервер. Примеры работ представлены на сайте.

С 2011 по 2013 работал в веб-студии фирме "Тринити Промо" веб-разработчиком - занимался веб-программированием, версткой - CSS 2, освоил CSS 3, SCSS, HTML 5. Разработал несколько сайтов на PHP. Но была мечта и цель - изучить Ruby, Ruby on Rails. В этой компании я смог достичь своих целей, за что огромное Спасибо моему начальнику - он предоставил мне целый месяц (июль 2012 года) для перехода на новую систему разработки, хотя теоретически я самостоятельно уже изучил Ruby, но теоретические знания без практики - это слишком мало. Перешел успешно на Ruby 1.9.3, Ruby on Rails 3.2.x, за этот месяц написал систему администрирования - админку (CMS - система управления контентом сайта) на Ruby on Rails. Теперь пишу сайты только на этих системах, хотя поддерживаю, конечно, и существующие разработки.

В конце 2013 года продолжил "свободное плавание", благо, что появился новый серьезный и порядочный заказчик. В результате этого сотрудничества в итоге появился интернет-портал по продаже промышленного оборудования. В 2014 году освоил Ruby 2, Ruby on Rails 4.1.xxx. В последнее время (лето 2014 года) снова начал заинтересовался Java - теоретически изучил Java 7 (Java 2 SDK7, J2SE7).

С начала 2015, после Нового Года начал работать с интересными людьми, и интересными в смысле заказов - все проекты для внутреннего использования, но, поверьте мне, достаточно крупные и сложные. По сути это веб-приложения, программы в Интернет для различных целей - call-центры, обработка поступающих заказов, нечто вроде CRM-системы, есть и интернет-сайты, но пока они в процессе разработки, доработки, так как приходится вести несколько проектов одновременно. Работа довольно сложная, но интересная - для решения многих задач надо придумывать алгоритмы, пути решения, применять нестандартный подход.

В своих разработках использую принцип минимальной достаточности - "Все Гениальное - просто, все простое - Надежно!" - без надобности не усложняю алгоритмы, использую только необходимые и корректно работающие библиотеки сторонних разработчиков. Если я вижу, что можно реализовать какой-то алгоритм, механизм самостоятельно и, тем более, более просто, то я предпочитаю написать алгоритм, механизм самостоятельно, например, фотогалереи, слайдеры изображений, загрузку прайс-листов, парсеры веб-страниц, всплывающие меню, ajax-навигацию, да та же админка - хороший тому пример. Это и интересно, и полезно - дополнительный опыт и практика. В ообщем, полностью согласен с выражением: хочешь сделать хорошо - сделай сам!

Программирование - это мое увлечение, хобби, занятие всей моей взрослой (можно и так сказать) жизни, любимое занятие, которое стало любимой и интересной работой. Я постоянно стараюсь узнавать что-то новое, изучаю новые технологии, развиваюсь, стараюсь двигаться в ногу со временем, хотя это достаточно сложно - поспевать за всеми новшествами IT-индустрии, но мне нравится.

Наверное единственное, что очень не нравится - разбираться в чужом коде, исправлять чужие ошибки, так как, как правило, неработающий (работающий неправильно) код, который приходится исправлять - недоделанный, плохой код, написанный коряво или, того хуже, вообще "говнокод". В этих случаях так и просится сказать цитату из анекдота: "Чукча не читатель, Чукча - писатель!". Вообще я считаю, разработчик, программист, пишущий любую систему или программу должен представить, что пользователи, которые будут пользоваться его разработкой, а тем более люди, которые потом будут сопровождать его разработку - психопаты, страдающие маниакальной стратью к насилию и жестокости, и которые прекрасно знаю, где проживает этот самый разработчик и где его можно встретить, чтобы "отблагодарить" по достоинству. Все мы делаем ошибки, не без этого, но у некоторых это просто паталогия какая-то.

 

Есть интересная мысль... процессор компьютера - это по сути кусок кремния... "умный" камень... получается, что программисты - это волшебники, которые умеют "разговаривать" с камнями, могут их заставить делать что-то по инструкции (программе) - делают их действительно мыслящими, полезными для использования! ;-) :-)))

 

Ещё очень интересно восприятие программного кода человеком, далеким от программирования. Я довольно часто результаты своей работы демонстрирую своей дочке, но, как говорится, товар лицом - работающую систему. И вот как-то раз говорю ей:
- Это все хорошо, видишь как система выглядит снаружи... А хочешь посмотреть, что эта система представляет из себя изнутри, увидеть программу?
- Конечно хочу!
...пролистываю на экране одну страницу Ruby-кода, другую, третью... немного комментирую...
- Всё, хватит... Папа, как в ЭТОМ можно ХОТЬ ЧТО-ТО понимать?
- Мало того, дочка, я не только понимаю... я сам всё это сочинил и написал ;-)

 

17.12.2016