Тяжело в ученье
И пусть остаться здесь сложней, чем уйти, я все же верю, что мне повезет.
Анатолий Крупнов. “Черный обелиск”
Сергей Бобровский
В периоды кризисов и резких скачков безработицы многие специалисты по трудоустройству советуют тратить свободное время главным образом на повышение своего профессионального уровня. Что же изучать программисту, временно оставшемуся без работы или просто стремящемуся быть на острие современных ИТ?
Вне зависимости от того, хочет ли человек искать работу в России или же планирует “отсюда свалить”, знания потребуются примерно одинаковые. Прежде всего надо четко осознать, что современные системы разработки сегодня стратегически ориентированы на групповое создание корпоративных приложений, т. е. предназначены в первую очередь для создания клиент-серверного ПО и распределенных систем (технологии COM, Corba, поддержка Интернета). Поэтому давно пора забыть старые компиляторы и перестать ностальгически вздыхать об их простоте. В новых средах разработки круг возможностей постоянно расширяется. Для их полноценного использования не обойтись без хорошего учебника, курсов и практики. Но и цениться такие знания будут все больше и больше.
Немаловажно, что почти все передовые технологии можно изучить, работая на локальном компьютере. Исключение - Corba, предназначенная для создания распределенных приложений, работающих в гетерогенных сетях. Хотя, если у программиста есть два компьютера, на старом ПК с 386/486-м процессором можно установить Unix (Linux или QNX) и организовать небольшую сеть. А вот отладка распределенных COM-приложений (ActiveX-объекты) допускается и на локальном ПК. IP-адрес такого компьютера - 127.0.0.1 (он указывается в файле hosts каталога Windows). Это значит, что на своем ПК без подключения к Интернету вы можете написать любое многопользовательское Web-приложение, от чата и CGI-скрипта (персональный Web-сервер входит в стандартную поставку Windows 98) до виртуального казино и сетевого магазина. Надо только разобраться в протоколе TCP/IP.
Есть общие, базовые требования к подготовке, без которых пытаться искать хорошую работу ни в России, ни за рубежом не имеет никакого смысла. Что программист должен хорошо знать:
- объектно-ориентированное программирование;
- API Windows 98/NT и DirectX;
- MS Office + Visual Basic for Applications;
- хотя бы один распространенный язык программирования третьего поколения (Си, Си++, Паскаль, Бейсик, Java) и соответствующие среды разработки (стремящимся уехать прежде всего надо знать MS Visual Basic, MS Visual C++ и очень желательно - любую реализацию Java. В России наравне с MS VC++ популярен Delphi, хотя и в США в любом журнале для программистов можно найти упоминания продуктов Inprise);
- принципы работы клиент-серверной и трехзвенной (с выделенным логическим ядром) архитектур;
- SQL;
- как минимум одну “тяжелую” СУБД;
- HTML и принципы построения Web-узлов;
- сетевые технологии, Интернет и протокол TCP/IP;
- принципы работы Unix;
- технологии построения распределенных и компонентных приложений.
В понятие “знание Х” как само собой разумеющееся входит требование “опыта практической работы с Х”.
Кроме того, очень желательно:
- понимать все этапы жизненного цикла создания ПО;
- иметь опыт групповой работы;
- знать системы контроля версий (типа PVCS);
- разбираться в CASE-системах построения информационной модели БД;
- знать языки четвертого поколения, точнее, среды разработки высокого уровня, нередко встроенные в СУБД (Oracle Developer, PowerBuilder, SQL Windows и т. д.). Эти языки в большинстве своем очень похожи, и перейти с одного на другой не составляет никакого труда.
Очень неплохо, если вы сможете продемонстрировать работодателю хотя бы один законченный проект. Ведь одно дело заявлять, что вы знаете Си++, и совсем другое - показать написанный на Си++ и устойчиво работающий, с инсталлятором и нормальным “хелпом” продукт, которым к тому же кто-то пользуется. Конечно, совсем не обязательно пытаться написать Windows 2000 или Word 99, но хорошему программисту вполне по силам сделать, например, аккуратную программу хранения и печати платежек, оригинальный визуальный OCX-элемент управления или небольшую игрушку. Положить их можно на сайтах, распространяющих ПО бесплатно (типа www.download.ru или www.freeware.ru), где самые интересные программы копируются десятками тысяч пользователей. Это будет прекрасной характеристикой результатов вашего труда. Кроме того, одновременно можно попытаться что-то и заработать на создании shareware-программ.
Неплохо организовать свою страничку в Интернете, благо узлов, предлагающих для них бесплатное место, сейчас полным- полно (например, www.chat.ru). Чем “круче” будет наворочена такая страничка с программной точки зрения (аплеты на Java и JavaScript, VRML-миры и т. д.), тем лучше. В идеале хорошо бы разместить свой CGI-скрипт, но для этого надо договариваться с провайдером. Над эстетикой оформления можно не задумываться, если программист, конечно, не собирается стать профессиональным дизайнером. Главное - продемонстрировать свои знания программиста.
Что еще будет особо цениться в России? Если в США фирмы, создающие приложения для конечного пользователя, стремятся применять максимально упрощенные средства разработки (что иногда превращается в процесс “дебилизации” продукта), то в России ведущими средствами остаются прежде всего Си и Си++ (MS Visual C++ и Borland C++Builder), ассемблер для Pentium MMX (чтобы ускорить работу генераторов отчетов и модулей баланса, местным умельцам приходится переписывать их не то что на Си, а на ассемблере!) и Delphi (благодаря наличию для него большого числа свободно распространяемых VCL-компонентов значительно сокращается время разработки). Желательно разбираться в предметной области (в 95% случаев это бухгалтерский и управленческий учет), в принципах построения интерпретаторов и трансляторов (во многих КИС используются встроенные языки). Пригодится и хорошее знание математики - в некоторых корпоративных системах понемногу начинают внедряться технологии искусственного интеллекта, нейронных сетей. В любом случае знать надо много - и это “много” знать надо хорошо.
В следующий раз мы поговорим о требованиях, предъявляемых к руководителю программного проекта.
К автору можно обратиться по адресу sbo@pcweek.ru.