Письмо в редакцию
Илья Шилов,
системный программист НТЦ “Реагент” и студент 4-го курса физического факультета МГУ
Здравствуйте, уважаемая редакция!
Это письмо - мой ответ на заметку г-на С. Бобровского “Легких путей не будет”. Я надеюсь, вы опубликуете и мое письмо - ну просто ради объективности: надо же выслушать и другое мнение. Все-таки крупное (по аудитории) издание.
Никогда я не понимал людей, твердящих, мол, надо только так, а так ни в коем случае нельзя, а это обязаны знать все. Я хоть еще и молод, но уже имею восьмилетний опыт программирования, хорошего и разного, кое-чего достиг, нашел отличную работу и скажу вам исходя из этого опыта: никто не обнимет необъятного. С трудом я представляю себе бедолагу, который последовал бы всем советам г-на Бобровского. Перечисленный объем знаний требует для нормального, качественного усвоения, по моим прикидкам, порядка года.
...Приведенный в статье список знаний, с моей точки зрения, очень спорный, да и где столько времени взять? Что касается ООП, так я в корне не согласен. Это все равно что изучать матан, не зная ничего конкретно о числах и операциях с ними, так сказать, в одних символах, - в принципе возможно, но что толку?
Начать изучение языков (ну, если хотите, систем, средств) программирования я бы рекомендовал с ассемблера (не воротите нос, люди старшего поколения вообще писали в мат. коде) и операционной системы. Ассемблер любой, операционка - по вкусу.
Два-три десятка команд, осознание общих принципов - и вы начинаете понимать, как, собственно, софт устроен, как это работает, что при этом происходит. Хорош программист, не представляющий, что творится с машиной, для которой он пишет! Когда этот этап пройден - любой универсальный язык позволит написать все что угодно. По рассказам старожилов, в 70 - 80-х годах так люди и делали. Кстати, лапшу с ушей иногда надо стряхивать - а то навешали: объектный подход, наследственность, полиморфизм... тьфу ты! Единственное, чем Си++ и прочие объектные языки получше, чем Си, - большие программы оформлять удобнее и понятнее, что действительно увеличивает скорость разработки, но за все надо платить. Эта плата - эффективность и дополнительные усилия при осознании того, что же творится там, за удобными готовыми классами и их методами.
...То, что происходит сейчас, и впрямь похоже на всеобщую “дебилизацию”: если такими темпами дело пойдет, то программистов вообще не останется.
К специализированным языкам (Oracle, PowerBuilder etc.) я отношусь с презрением. Давно, в юном возрасте, видел и Clipper, и FoxPro. Ну да, да, это не совсем то, но поймите, что суть системы не меняется от того, что она-де многопользовательская, вся такая сетевая, появились всякие там удобные возможности. Это - практически застывший, негибкий и неизменяемый инструмент. Как только захотите сделать что-нибудь, не предусмотренное великими авторами, - каюк.
...Но вернемся к тому, что нужно знать программисту. В упомянутой статье явное предпочтение отдается лагерю операционок от Microsoft. Корпорация наступает, но не закрывайте глаза на тот факт, что сегодняшняя NT 4.0 - немасштабируемая, медленная и все еще содержащая дыры в безопасности система (чего нельзя сказать про любую Unix). Выход очередного шедевра - NT 2000 - намечен на последний год этого столетия, но я абсолютно уверен, что система все равно выйдет сырой. Полтора года доводки после бета-версии - это маловато для ОС такого масштаба. В то время как до Unix-производителей ПО, кажется, дошло, что стоит сплотиться перед общей угрозой: начались разговоры о создании единого формата драйверов для Unix-систем. Это приятная новость. Linux своей бесплатностью и надежностью выдавливает Microsoft из ее привычных ниш - только бы и дальше так шло. Идеал - единый стандарт на все Unix-системы (а почему бы нет?), бесплатная Unix для всех и мир без Microsoft.
...Про MS Office+VB я лучше вообще промолчу.
...Вот API - это часть системы, без него как без воздуха. С чем полностью согласен, так это с необходимостью изучать разнообразные средства поддержки проектов. Держать большой проект в виде очень большой кучи файлов от разных разработчиков - это очень-очень большая головная боль.
Подвожу итог. Что нужно знать программисту? Моя версия звучит короче: основы (ассемблер+ОС), универсальный язык (Си/Паскаль-Delphi etc.?), дополнительные знания (изучение чужих/создание собственных наработок) - это практическая база, остальное приложится. Кстати, маленький советик по зарабатыванию денег: научитесь писать драйверы для Windows 95, а еще лучше - для NT: на Западе таких людей совсем немного, у нас чуть побольше (все необходимое - в MS SDK&DDK и в сети).
А вообще, основное оружие программиста (как, впрочем, и человека вообще) - это логика. Программисту, в отличие от просто человека, для легкой веселой жизни необходимо еще одно качество: он должен быстро соображать, учиться, переучиваться. Программист не должен быть тормозом.
Всего вам доброго.
К автору письма можно обратиться по адресу: JadeFalcon@chat.ru.