Tools of choice

Technologies:

  • Most of our projects are web-based and made using PHP frameworks (Symfony, Zend Framework and Cohana;)
  • we use APC for PHP code speedup;
  • Some of our projects are made using Python programming language: Django framework is used for its web parts;
  • Twisted framework is used for building some unix daemons and custom application servers;
  • We use different Databases in our projects: MySQL, PostgreSQL, SQLite, and MSSQL Server;
  • For client-side javascripting speed-up we are using prototype/script.aculo.us and mootools frameworks;
  • Linux, FreeBSD, Solaris and Windows Server 2003 as server operating systems used to host and run our projects;
  • We also use Memcached for in-memory cache, Capistrano for project deployment, Lucene and Solr combination for full-text searching, sometimes we use Java (plain J2SE) and many other small and big technologies.

Methodologies

Scrum and custom Agile methodologies are used to make our projects iterative, incremental, organized, and efficient. However smaller projects usually require plain old “waterfall” development.

Modeling and prototyping

UML
UML (Unified Modeling Language) has emerged as the de-facto standard for OO modeling techniques and assists in achieving greater software re-use, which may be exploited to achieve fast prototyping. The notation forms a basis for almost any kind of software engineering approach.

UML allows us to avoid the most time-consuming errors, those of the logic or the architecture of the solution. It also brings additional flexibility and reliability to the software development process because the knowledge can be easily transferred to any of the developers or project managers, and the project is not dependent on any particular person.
Sometimes our clients use UML diagrams to convey the system design to our development teams and use it as a common language during the project.

Axure PRO
Axure is a modeling tool for software analysts, project managers, and others who need to build visual application prototypes that work with a web browser. We use Axure for:

  • Designing web application’s interface prototypes before composing any specifications. This procedure doesn’t require web developers;
  • Making and reconciling usability standards for web pages before being designed by our graphics designers;
  • Speeding-up graphics design work by enabling designs to be drafted based on prototypes instead of specs;
  • Improving developer’s productivity by reducing time needed for reconciliation;
  • Showing how product should looks instead of describing it.