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

О себе

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

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

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

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

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

Первым языком программирования был Фокал. Чем-то похож на Бейсик.

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

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

После поступления в институт наконец-то появилась возможность работать на более серьезных компьютерах - 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).

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

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

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

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

 

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

 

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