Technical Ideology
Grassroots Technologies' adopted a simple, efficient software and infrastructure development philosophy early in its growth. The main precepts surround combining industry standard technology packages supplemented with cutting edge open source options for maximum reuse/value while maintaining a lean implementation approach that can change alongside project conditions.
1. Established Technologies
As researched by our group, specific technologies deemed to be the best of their genre over time. This is not limited to purely commercial software, nor does it exclude the combination of two technologies to form a new, workable model.
2. Efficient Integration and Adaptation of Open Source Offerings
We constantly emphasize the value of open source packages strategically integrated within established architecture.
3. Light Implementation Strategy
Simple, risk hedged iterative approach to development which allows us to launch development efforts quickly and economically meeting both the client's business objectives and performing effective client knowledge transfer.
Development Philosophy
Whether implementing a new project or analyzing the value of one already completed, we firmly believe in a tight, slim strategy that eliminates excess waste and focuses on the most important facts at hand.
GRT strongly believes in active development prototyping and iterative checkpoints as a core element of specification activity. This can often provide the most efficient segue into full-blown development cycles while still providing regular reviews and confidence by all key stakeholders.
We are enthusiastic proponents of streamlining the development process through consistent automation, and a continuous integration process, where sub-projects are forced to integrate on a weekly or even daily basis. This ensures the different aspects of development integrate together before they've had a chance to get unwieldy and costly.
Obviously, source control, for versioning and code management, is at the heart of the development process. Typically we use Github (or customers preferred revision control system) and enforce its usage through rigorous development standards.
We begin to set our testing strategy at the early stages of system design. This planning turns into execution towards the latter stages of development. A cleanly defined automated unit testing, where possible and budget practical, is also well worth the setup and maintenance effort. Beyond that, a combination of functional and compatibility review will be joined with automated stress/scalability testing for maximum system coverage.
This provides just a flavor of our no-nonsense, efficient manner for tackling even the most challenging of projects. Our methods for approaching projects from the top down in light implementation strategy, weighting functional areas against one another within overall timelines, and executing aggressively are a result of years of absorbing only the best practices from each client experience.
Languages
Javascript / Node.js
Java
Ruby / Rails
Objective-C
Typescript
PHP
Perl
Actionscript
Groovy
Python
C++ / C
Operating Systems
Linux (various flavors)
Windows Server
Mac OSX
Front-End
AngularJS
Backbone.js
Ember.js
PhoneGap
jQuery
D3.js
ReactJS
Adobe Flash / Flex
Objective-C / Cocoa Touch
Java AWT and Swing
Cloud / Hosting Services
AWS
Heroku
Codeship
Database Technologies
PostgreSQL
MySQL
MongoDB
CouchDB
Oracle
SQLServer
Installer Technology
Windows Installer (Wix/MSI)
OSX Packages and Installer Plugins
InstallAnywhere
XML Technologies
XSLT
XSL-FO (PDF generation)
SVG
SOAP and other remote data-interchange
Testing
BJasmine
Karma
Mocha
Protractor