CSGW Ltd is an agile software company specializing in outsourcing and consulting, founded by former hired guns.

We are great at designing, implementing, and maintaining high-quality cost-effective solutions.

Whether it is turning your vision into production, enhancements to existing software, or even debugging an impossible bug, we are there to help.

We're agile

We share the values listed in the Manifesto for Agile Software Development
  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

Software development is not manufacturing and while we practice egoless programming and don't believe in irreplaceable code, we know there is no substitute for experience and we believe in irreplaceable people, strive to be such, and hire alike.

Because we are a small company and can't afford to lose a customer we are constantly optimizing our value stream by following the principles of lean software development: rapid development, feedback and improvement. In order to produce the software our customer needs, we are making frequent small releases to increase visibility and get immediate feedback throughout the entire project.

We don't believe in any software development process to be a "silver bullet" for any project. RUP and MSF are very good software development processes but their target is with very big teams working on very large-scale projects . We follow a disciplined process loosely based on XP because it has proven as an efficient enough agile method for us and our customers.

In fact our process is so simple, we can describe it in one sentence - anything that brings value to our customers. The rest we consider a waste.

Our basic software development principles are:

  • DTSTTCPW (Do The Simplest Thing That Could Possibly Work) - to ensure our code is readable, short and hence maintainable because it's easy to understand
  • PoLS (Principle of Least Surprise) - essentially saying no to overdesign, increasing usability to both clients and (maintaining) developers
  • YAGNI (You Ain't Gonna Need It) - no premature design, features or optimizations and hence no wrong guesses, dead or plain wrong code
  • DRY (Don't Repeat Yourself) - avoid duplicating any information which seems to require duplication (including code, documentation, schemas, etc.)

Oh, and did we mention we don't have a "bionic" office with leather director chairs, plasma TVs and exotic tropical fish acquariums so you'll be billed for our work, not to support our lifestyle - how's that for being lean?

We take quality very seriously

Ruthless testing makes the difference between short- and long-lived software. We believe our testing process is sofisticated enough to meet the needs of projects of all sizes.

To answer the questions of:

  • software verification - have we built the software right (i.e., does it match the specification), and
  • software validation - have we built the right software (i.e., is this what the customer wants) we:
we:
  • design for testability and maintainability - in fact, we write tests first against an emerging API, and these tests drive the design
  • unit test every module, including the user interface - to verify each component of the "software IC", to ensure high code coverage and to prevent regression bugs
  • write functional tests for every feature to verify it is complete and correct
  • write integration tests for ours and 3rd party modules to check everything plays well together
  • perform system testing to build confidence in the entire product
  • and since we don't believe in monkey testing, we have all of the above fully automated

We provide full life-cycle software development services on the 4 major operating systems (Windows, Linux, Solaris, MacOS) using multiple technologies and programming languages.

Whether it's PDA software, desktop applications, middleware servers, or interactive "Web 2.0" web sites - we deliver.

Requirements Analysis

Most people can't easily communicate what they need, and instead communicate what they want, which might not be the optimal, if at all, solution to their problems.

Starting with your vision, we can help you discover and transform your real needs into a requirements document, easily understandable by both stakeholders and developers.

But fear not, the requirements need not be etched in stone! Because we are agile, we're open to, anticipate, and embrace change.

System Architecture Design

Once requirements are defined, we can help you choose the right operating system (OS), technology stack and programming language(s) on which to base and develop your product.

This important step might save you from the so-called vendor lock-in trap.

Our experience with multiple operating systems, technologies and languages guarantees you an unbiased suggestion.

Project Management

Integration-, scope-, time-, cost-, quality-, human resource-, communications- and risk management - everything that helps to run the project smoothly, deliver in time and within budget - we do it.

Software Development

All things said, software is created in the software construction phase. This is where our productivity shines - we've been told not once that we develop an order of magnitude faster than our peers.

Testing

We don't want our customers to test our software. But most of all, we don't want them to test software they don't want! That's why we try to involve them throughout the entire project life cycle. We help them test their requirements against their needs, and then frequently send them builds to verify the software against the requirements. And because the customer is doing user-acceptance tests from the start, they don't need extra time to put the product into production!

Training

Good software shouldn't require much training. Some training though is essential to increase customer's productivity so customer training starts with the first build. However, we turn it upside down - the customer trains us to build a software which is intuitive to use and easy to learn. This tremendously cuts the need for comprehensive documentation, and long training.

Support

We are not done when we're done. While we try develop virtually bug-free software, bugs do happen. We fix them. Customers need enhancements and more features. We develop.

Debugging and Performance Tuning

Working on new and exciting projects is fun, but we've also worked on quite a few projects and maintaining existing code.

We are so good at debugging we also offer debugging services. That is, if your company hits an "impossible" bug you can't find, debug and fix, let us know!

And finally, we have lots of experience in performance optimizations: from macro to micro optmizations in real-time data distribution servers to perceived speed optimizations in the user interface of desktop applications, so if you're looking for the software tuning company - that's us!

Our team consists of professionals with over 10 years of experience in the industry as Senior Software Developers, Project Leads and Consultants.

Our key strengths are:

  • strong design, construction, debugging and profiling skills
  • excellent knowledge of algorithms, data structures and design patterns
  • advanced skills in multithreaded/concurrent/asynchronous programming
  • extensive experience in designing scalable, high performance, distributed architectures
  • proficiency in several software development methodologies, programming languages, software platforms and technologies on a variety of operating systems and hardware.

Hardware

IBM PC compatible, Apple Mac, Sun Sparc

Operating Systems

Windows, Linux, Solaris, MacOS

Programming Languages

Assembler - x86 and Sparc V9
C, C++, Java, C#, Managed C++, Objective-C, Visual Basic
JavaScript, VBScript, Ruby
SQL, T-SQL, PL/SQL

Software Platforms

Win32 API, COM (C++/ATL, VB)
Linux/POSIX APIs
.NET (core, P/Invoke, CLR hosting, networking, UI, data access, XML processing, web/Web Services, REST, Remoting, Crypto)
Java/J2SE (core, JNI, networking/NIO, UI, data access, XML processing, self-hosted Web Services, Crypto)
Android SDK (OS, app, content, graphics, media, text, views)
Carbon, Cocoa

Technologies

General purpose

  • STL, ATL, Boost, ACE, QT, wxWidgets

Networking

  • TCP, UDP, PGM, HTTP, Named Pipes, TIBCO, 29West LBM, IBM WebSphere MQ LLM
  • MSMQ, ActiveMQ

Data access, ORM/code generators

  • OCI, DBLib, ODBC, OLEDB, ADO, ADO.NET, JDBC, DAO
  • Hibernate, SubSonic

Web

  • ASP.NET, Ruby on Rails
  • Web Services/SOAP (ASP.NET WS, JAXWS, gSOAP, PocketSOAP), REST
  • XML, XSD, XSLT, HTML, CSS
  • AJAX (+ prototype, script.aculo.us)

Application frameworks/IoC/DI containers

  • Spring, Castle Windsor, Autofac

Cryptography

  • crypto++, BouncyCastle, JCE, .NET Crypto

Market data distribution platforms

  • Reuters RMDS, Bloomberg B-PIPE and BPOD, Deutsche Borse XETRA, Skyler C3, B2N MarketHub, DOT OMDP, WombatFS MAMA and MAMDA

User Interface

  • Windows Forms, Swing, SWT, wxWidgets

RDBMS

Microsoft SQL Server, Oracle, mySQL, SQLite, JavaDB

Software Methodologies

XP/Agile, Microsoft Solutions Framework (MSF), Rational Unified Process (RUP)

Architecture and Design

Object Oriented Programming
Design Patterns (GOF, POSA)
Distributed Architectures
High-throughput/Low-latency Architectures
OLTP Database Design
Unified Modelling Language

QA and Software Testing Practices

Unit, Integration, System and Performance Testing; White-box and black-box testing

Tools

Development Tools

Visual Studio 6-2008
GNU toolchain
Sun Studio
Apple XCode, Apple IB
Metrowerks Codewarrior
Eclipse - JDT, CDT, ADT
IntelliJ IDEA 6-8
Oracle Developer

Modelling Tools

Microsoft Visio
Rational XDE

Debugging/Profiling Tools

Rational Purify, Quantify
NuMega BoundsChecker, TrueTime
Insure++
dotTrace Profiler
DDMS, gdb, mdb, dbx

Configuration Tools

Build Tools - make, maven, ant, nant, autotools
Setup Tools - Microsoft Installer, NullSoft NSIS
Version Control Software – SVN, CVS, VSS

Here are some of the projects we've been working on:

  • White-labeled trading solution (workstation + server) for a top Bulgarian investment company (NDA)
  • Post-trade allocation system for TRX Futures with support for Intercontinental Exchange
  • B2N's MarketHub - multiplatform real-time market data distribution platform supporting proprietary message bus on top of TCP, with support for 29West LBM, TIBCO and adapters for Reuters RMDS, Bloomberg BPIPE's broadcast and on demand feeds, Deutsche Bank's Xetra, etc with bindings for C++, Java, C# and COM.
  • D.O.T's multiplatform real-time market data distribution platform supporting proprietary message bus on top of TCP with adapters for Bloomberg BPIPE with C and C++ bindings.
  • MarketXS (now Markit Group) real-time market data distribution API on top of our implementation of reliable multicasting protocol (PGM) with load-balancing, bandwidth throttling and fail-over
  • Wombat Financial Software's MAMA and MAMDA APIs C to C# port
  • Thomson Reuters Remote Picture Editing system
  • Thomson Reuters Pictures Coverage Planner web site
  • Automated spread trading sytem for JPR Pty, and Australian investment company
  • Gen-9's PIM featuring import from Outlook, Thunderbird and Google, and publishing and sharing of documents, notes, appointments, pictures, etc. to various Google services, such as Blogger, Google Calendar, Docs, Picasa Web Albums and Notebook
  • GSMBOX's SMS-based dating service deployed in Italy and Spain serving millions of users
  • Service Concepts GmbH's e-health/e-government platform's load-balancing service

We are currently looking for 2 mid/senior level developers to complement our core development team of young and dedicated professionals.

The ideal candidates should have strong experience with multithreading and in-depth knowledge of algorithms and data structures.

Java/J2SE Developer

Experience with Java NIO, build (Maven, Ant) and continuous build integration systems (Hudson) is a plus.

.NET/C# Developer

Experience with at least .NET framework 2.0 and Windows Forms is required. Experience with .NET framework 3.5 and DevExpress components is a plus.

We offer

  • Friendly work environment
  • Flexible working hours on new, cutting edge projects for leading international companies in the financial industry
  • Excellent compensation package, performance and overtime (not that any is anticipated :)) bonuses
  • Technology training

If interested, send a CV to office@csgw.eu. Only shortlisted candidates will be contacted.

We'd love to hear from you! Whether it's to say hi, or request our services, do not hesitate to contact us!

CSGW Ltd.
85 Aleksandar Malinov blvd., fl. 3
Mladost 4, 1715
Sofia
Bulgaria

Phone: +359 2 9717387
Mobile: +359 886 841818

If you wish to contact someone at CSGW directly, please use the appropriate e-mail below:

Inquiry Contact information
General office@csgw.eu
Sales sales@csgw.eu, ivaylo@csgw.eu
Support support@csgw.eu
Website webmaster@csgw.eu, stoyan@csgw.eu

Company
Services
Skills
Portfolio
Jobs
Contacts
 
 
 
the lean and mean company
CSGW logo
 
 
 
© 2007-2010 CSGW Ltd.