Each software project requires the right balance of resources, expectations delivery and product quality. In our company, I try to maintain this balance as a point of contact for all questions, both from client and employees. Since our team is geographically distributed and resides in three different locations across the United States, the remote collaboration tools play crucial role on all stages of the project. Selection and administration of those tools is also my task.
For source control we originally used Microsoft Visual Source Safe; however this product failed to meet our demands. Because of that, I migrated to Concurrent Versioning System (CVS ). This solution solved all our problems with data exchange speeds, branch management and file blocking. Currently it is used for all three products that our company is developing, supporting around ten developers. I am administrating the code storage and solve all problems.
Any problems (bugs) that client has are recorded in Bugzilla system, which we already use for three years. This product is most flexible and affordable QA system. With its help I daily control the status of fixes. Printouts from this system are used on status meetings that are held every other day.
Next year we are planning to migrate to Microsoft Visual Studio 2005 Team Services, which combines all abovementioned features and more.
In the sales we use two systems – Microsoft CRM for contact data storage and monitoring, and custom developed marketing system. Microsoft CRM allows our group of sales people to follow the status of sales process and have multi-user access to the client database.
Accounting packages that we use include Intuit Quickbooks and Microsoft Great Plains (middle-size company accounting system). We are registered partner of Microsoft Business Solutions and we integrate with and resell Great Plains. Also, our products integrate with Quickbooks. Additionally Quickbooks is used for internal accounting, time sheets and client invoicing.
Proper understanding of customer and fulfillment of their requirements are the crucial criteria of software architecture development. On different stages of project we use different tools and approaches:
Depending on project stage I spend up to 100% percent of my time actually programming. Mostly I use Microsoft Visual Studio 2003 and SQL Server Query Analyser. Parts of the project are developed in more specialized tools, like NetBeans IDE for Java, XML Spy and jEdit for advanced XML and XSLT editing. I also constantly use MSDN Library.
My role in the projects is development of foundation libraries, standardization of development environment, programming approaches and architecture. Most of the time I spend developing the architecture where I use developed approaches and libraries. For samples of the libraries please check Work Samples section.
Our company uses mainly Microsoft server products, and I try to use most effective combinations of solutions and administrative policies. Windows policies in Active Directory are used to manage security on client workstations that run Windows 2000 and Windows XP. Foe example, I use policies to control automatic updates of the clients using Microsoft Software Update Services (SUS). Naturally, the Active Directory database is used for corporate Microsoft Exchange 2003 server, that provides e-mail, corporate-wide calendar, public folders, web mail and VPN using Outlook 2003 via HTTPS.
We also have network file storage, antivirus and printing. Each of those services are installed or enabled automatically when the client joins Windows domain. This greatly simplifies adding workstations and new users to the domain.
TrendMicro OfficeProtect is used as a corporate antivirus. It is installed automatically on workstations and is installed on all file servers and Exchange server. Automatic updates are performed every day, and combined with automatic antivirus and patch installation using SUS provide virtually bulletproof virus protection.
Many services that we have on the network are based on web technologies and Microsoft Internet Information Services (IIS). We use Microsoft CRM 1.1 to support sales. SharePoint Services to support development process (for task lists, specifications storage, discussions and reports) and documentation process (product manuals, data templates, illustrations) of all the project. Microsoft Project Server (which is mostly based on SharePoint Services) for overall project management and resource allocation.
Windows Terminal Services server is used for remote access to application servers, which run Intuit Quickbooks and Microsoft Great Plains. The system uses AD policies for access control.
All abovementioned application servers and the products that we are developing are using Microsoft SQL Server 2000 database server, which is installed on three different servers and developers workstations.
Outside of the office boundary I manage and support four servers that run Windows 2000 and 2003, which run our applications and Microsoft SQL Server. They act as application servers and are available from the internet.
To provide maximum flexibility in the services our network provides I constantly use different types of UNIX. Originally I used Linux to run Catalyst One CRM and Bugzilla servers. Then I migrated to OpenBSD, which provides ideal combination of security and functionality. It provides VPN access for our remote locations and is used for firewall. Currently all the UNIX services (firewall, NAT, VPN, priority queuing, Bugzilla) are migrated to OpenBSD.
Our office network is completely switched and connected to the internet with a T1 line using Cisco router. One of servers in the network runs MRTG network traffic grapher that uses SNMP protocol.
Most of our products are developed for ASP delivery model and maintained by us during whole lifecycle. Because of that is as important to the service as the product itself. This is why I developed an automatic customer monitoring and communication product. It provides communication with both current and potential clients. The system allows us to create newsletters, monitor the customer response, gather statistics about how effective our service is and use that statistics to improve the newsletters and the services. The system is integrated into the product and allows us to monitor the product usage. Support and sales people can monitor the client on the client profile screen.
While developing various business applications, I came up with general concept of business application. Currently there is a movement in the industry to create new standards for business applications. The most prominent are XAML by Microsoft and WHAT. Web application is a combination of server-side logic, input fields descriptions and other form elements in an easy to use format. That format is generally used to develop business applications. For our products I developed an abstraction layer that allows the programmer to concentrate on developing a business-object and database operations. The XFDL library generates visual representation of the object in ASP.NET or Windows on the fly and reads or writes the values from the object. (wee work samples).
To create printable documents in web applications I developed a set of tools for rapid document development and a server that generates PDF and PostScript documents. The library that is integrated into the application creates XML presentation of business objects or database tables, then converts them in a standard XSL-FO file (see work examples). XSL-FO is a World Wide Web Consortium standard to describe printable documents. That file is then passed to the server with additional printing instructions. The server can create PDF or PostScript documents and generate files or directly print to a network printer. The server has additional functions for PostScript editing, which allow the developer to control additional printer features, like tray selection and duplex printing.
Thus, XSL-FO server provides all the features required by business application to print: easy integration with business application, ease of document creation and modification and flexible output. (see work samples)
To create web site layouts, to edit web site graphics and other more complicated tasks I use multiple graphics packages. First of all is Adobe Photoshop, which I use to edit and compose images, and to optimize graphics for the web. To create images I prefer XaraX graphics editor which I used for almost seven years.
For tasks that involve printable documents I use Adobe InDesign and Adobe Illustrator. I frequently use it to generate XSL-FO documents.
Using Windows Media Services I created a leaning material (slideshow/movie) delivery system. I use Windows Media Screen Codec to encode video and Camtasia or Windows Media Encoder to capture it.
Over the last years due to our geographic spread out we used multiple instant messaging platforms. They include MSN Messenger, ICQ, ICQ Groupware, Jabber server with adapters, Exchange Messaging server. However, currently we use MSN Messenger, mainly due to the need to chat with our clients. We also widely use Skype Voice-over-IP software.
Most of the programmers in our company are Russian speaking. As most fluent English speaking person, I am charged with translation and interpretation of client specifications. As a result I have vast experience in translation of technical terms and abstract software design terms from Russian to English and visa versa.