Каждый программный проект требует поддержания баланса ресурсов, выполнения ожиданий клиента и качества продукта. В нашей компании, я стараюсь поддерживать этот баланс, будучи центральной фигурой, для решения всех вопросов, как со стороны клиента, так и со стороны персонала. Поскольку наша команда является распределённой, и находится в трёх разных городах США, то средства удалённой коммуникации играют решающую роль на всех стадиях проекта. Выбор и администрирование этих средств тоже являются моей обязанностью.
Для управления исходным кодом изначально использовался Microsoft Visual Source Safe, однако этот продукт перестал удовлетворять требованиям. По этому я произвёл миграцию на Concurrent Versioning System (CVS ). Этот продукт решил все проблемы со скоростью обмена данными, управления ветвями кода и блокированием файлов. В данный момент он используется для всех трёх продуктов компании, поддерживая порядка десяти разработчиков. Я занимаюсь администрированием хранилища кода и решением проблем.
Любые проблемы, возникающие у клиента, сразу заносятся в систему Bugzilla, которую мы используем уже на протяжении трёх лет. Этот продукт является наиболее гибкой и доступной системой QA. При его помощи я осуществляю ежедневный контроль над статусом решения проблем. Распечатки из этой системы используются на совещаниях каждый второй день.
В следующем году, мы планируем переход на Microsoft Visual Studio 2005 Team Services, продукт, который сочетает в себе все вышеперечисленные функции.
В системе продаж мы используем две системы – Microsoft CRM для хранения и слежения за потенциальными клиентами, а так же разработанную мною маркетинговую систему. Microsoft CRM позволяет нашей группе менеджеров по продажам следить за статусом продаж и иметь доступ к общей базе данных клиентов.
Используемые бухгалтерские системы включают Intuit Quickbooks (система бухгалтерского учёта для малого бизнеса) и Microsoft Great Plains (для компаний среднего размера). Мы являемся партнёром Microsoft Business Solutions, интегрируемся и продаём Great Plains. Так же наши продукты интегрируются с Quickbooks. Quickbooks используется для внутреннего учёта, отчётности сотрудников о потраченном времени и выставлении соответствующего счёта заказчику.
Правильное понимание заказчика и выполнение его требований являются наиболее важными критериями при разработке архитектуры проекта. На различных этапах разработки проекта мы используем разные средства и подходы:
С зависимости от этапа выполнения проекта, я трачу часть времени на разработку реального кода. На активном этапе это практически 100%
Для разработки и отладки использую в основном Microsoft Visual Studio 2003 и Microsoft SQL Server Query Analyser. Части проекта выполняются в более специализированных продуктах, таких как NetBeans IDE для разработки на Java кода, XML Spy и jEdit для расширенного редактирования XML и XSLT файлов. Так же постоянно использую MSDN Library.
Моя роль в проектах это создание базовых библиотек, стандартизация среды разработки, приёмов программирования и архитектуры. При этом большая часть времени тратится на проектирование, и постоянно используются уже разработанные приёмы и библиотеки. Примеры таких библиотек приведены в разделе Примеры работ.
В сети нашей компании преобладают серверные продукты Microsoft, и я стараюсь использовать наиболее эффективные комбинации решений и административных политик. Политики (policies) Active Directory используются для управления безопасностью на клиентских рабочих станциях работающих под Windows 2000 и Windows XP. В частности, политики позволяют автоматически обновлять все компьютеры в сети с использованием Microsoft Software Update Services (SUS). Конечно же, на базе AD работает корпоративный сервер Microsoft Exchange 2003, предоставляющий возможности e-mail, корпоративного календаря, общих папок, веб доступа к почте и VPN с использованием Outlook 2003 через HTTPS канал.
Так же на сетевом уровне решены вопросы хранения данных, установки антивирусов и драйверов принтера. Каждое из этих действий заскриптовано и выполняется автоматически при входе пользователя в домен, таким образом, радикально упрощается подключение новых пользователей в сеть.
Корпоративный антивирус TrendMicro OfficeProtect автоматически устанавливается на рабочих станциях, установлен на всех файловых серверах и сервере Exchange. Система автоматического обновления работает каждую ночь, и в комбинации с автоматической установкой на рабочие станции и SUS предоставляет практически стопроцентную защиту от вирусов.
Большое количество сервисов в сети базируются на веб-технологиях и сервере Microsoft Internet Information Services (IIS). Используются Microsoft CRM 1.1 для поддержки отдела продаж, SharePoint Services для поддержки процесса разработки (список задач, спецификации, обсуждения, отчёты) и документации (инструкции для пользователя, шаблоны данных, иллюстрации) всех проектов, Microsoft Project Server (основанный большей частью на SharePoint Services) для общего управления проектом и ресурсами.
Сервер Windows Terminal Services используется для удалённого доступа к серверам приложений, использующим Intuit Quickbooks и Microsoft Great Plains. Система использует политики AD для ограничения одновременного доступа к сервисам.
Все выше приведённые сервера приложений, а так же разрабатываемые нами продукты используют сервер базы данных Microsoft SQL Server 2000, установленный на трёх серверах и всех рабочих станциях разработчиков.
Так же, за пределами офиса я администрирую и поддерживаю четыре сервера под управлением Windows 2000 и 2003, на которых работают наши приложения и Microsoft SQL Server, и которые выступают в качестве серверов приложений (ASP) и доступны из Интернета.
Для обеспечения максимальной гибкости в оказываемых сетью сервисах я постоянно использую различные варианты UNIX. Изначально Linux использовался для запуска системы Catalyst One CRM и сервера Bugzilla. В дальнейшем произошла постепенная миграция на OpenBSD, который предоставляет идеальную комбинацию безопасности и функциональности для создания распределённой виртуальной сети (VPN) между нашими удалёнными офисами, а так же в качестве пограничной системы безопасности. В данный момент все UNIX сервисы (firewall, NAT, VPN, priority queuing, Bugzilla) переведены на OpenBSD.
Наша офисная сеть полностью коммутируемая, и подключена к Интернет через линию T1 с помощью маршрутизатора Cisco. На сервере в сети установлена система слежения за нагрузкой MRTG с использованием протокола SNMP.
Поскольку большинство продуктов нашей компании поставляются в ASP модели, и обслуживаются нами на протяжении использования продукта клиентом, система взаимоотношения с клиентом является настолько же важной частью сервиса, как и основной продукт. Поэтому мною был разработан продукт для автоматического слежения и общения с существующими и потенциальными клиентами. Система позволяет создавать новостные рассылки, следить за реакцией клиентов, собирать статистику эффективности и использовать её для улучшения сервиса и рассылок. Система интегрирована с продуктом, и позволяет собирать статистику использования продукта, отражая статистику на странице профиля клиента.
На протяжении работки различных продуктов управления бизнесом в нашей компании, постепенно была сформирована идея веб-приложения. В данный момент в индустрии начинается процесс создания новых стандартов, таких как XAML и WHAT. Веб-приложение представляет из себя комбинацию серверной логики и описания полей и других элементов экрана в легко используемом формате, обычно предназначенном для бизнес-приложений. Для наших продуктов я разработал уровень абстракции, позволяющий программисту сосредоточиться только бизнес-объекте и взаимодействии с базой данных. Библиотека XFDL создаёт визуальное представление объекта для ASP.NET или Windows на лету, и показывает и передаёт введённые значения обратно в объект (см. примеры работ).
Для создания печатаемых документов в веб приложениях, мною был разработан набор для быстрой разработки документов, и сервер для создания PDF и PostScript документов. Библиотека, интегрируемая в приложение, создаёт XML представление бизнес-обьектов или данных из базы данных, и преобразует их в стандартный XSL-FO файл (см. примеры работ. XSL-FO это стандарт World Wide Web Consortium для представления печатаемых документов. Затем, этот файл передаётся серверу с дополнительными инструкциями для печати. Сервер может создавать документы в PDF или PostScript форматах и копировать в файл или напрямую на сетевой принтер. Сервер имеет функции дополнительного редактирования PostScript формата, позволяя управлять дополнительными функциями принтера, такими как выбор поддона для бумаги и включение дуплексной печати.
Таким образом, XSL-FO сервер обеспечивает все требования печати из бизнес-системы – лёгкая интеграция с бизнес системой, лёгкость создания и редактирования шаблонов, гибкость вывода.(см. примеры работ)
Для создания макетов сайтов, а так же редактирования графики для сайтов и выполнения более сложных работ я использую множество пакетов редактирования. Прежде всего это конечно Adobe Photoshop, для редактирования и наложения изображений, а так же для оптимизации для web. Для создания изображения я предпочитаю векторный редактор XaraX, которым пользуюсь на протяжении уже почти семи лет.
Кроме того, для работ связанных с печатными документами используется Adobe InDesign и Adobe Illustrator. В частности они широко используются при создании XSL-FO документов.
На базе Windows Media Services мною развёрнут сервис доставки обучающих материалов (фильмов). Используется кодек Windows Media Screen Codec, для записи используются либо Camtasia либо Windows Media Encoder.
В процессе развития компании и увеличения географической распределённости нашей компании, было использовано множество различных средств instant messaging, такие как MSN Messenger, ICQ, сервер ICQ Groupware, сервер Jabber с дополнительными адаптерами, сервер Exchange Messaging. Однако в данный момент используется MSN Messenger, в основном по причине необходимости общения с клиентами через сеть MSN. Так же в настоящее время очень широко используется система голосового общения Skype.
Подавляющее большинство программистов в нашей компании – русскоговорящие, поэтому задача перевода и пересказа спецификаций приходящих от клиентов лежит в основном на мне, как на наиболее свободно говорящем на обоих языках. В связи с этим я получил большой опыт перевода технических терминов и абстрактных понятий дизайна программного обеспечения с русского языка на английский язык и обратно.