- Pair Programming
Two developers, two keyboards, two mice, one computer, one monitor. It's the old adage "Two heads are better than one," applied to crafting code. While it might seem counter-intuitive, pair programming saves money by keeping developers on task, raising their energy levels, and keeping them firing on all cylinders.
- Behavior Driven Development
You might take it for granted that when you're using an application, it does what you expect it to do, without you worrying about the bits flipping behind the scenes. What Behavior Driven Development does is take that expectation and turn it into something we can test.
As we plan your application with you we'll create a detailed behavior specification, essentially a complete example of what's expected when using the application, and then turn it into something that can be interpreted and executed by the computer. Our programmers then use this executable specification to guide development.
- Test Driven Development
Test Driven Development is, in essence, a constant process of quality assurance. For each function of a program, we create a digital gauntlet for it to run to ensure everything is running smoothly before ever laying down the underlying code. By coding the desired result first and then working to satisfy it, we can ensure the application always ends up the way you want it to work, and each test continues to drive the next essential step down the line.
Much like English has a diverse pedigree of Germanic and Latin languages, Ruby is a descendant of many prior programming languages, primarily Perl and Smalltalk. From its parents Ruby inherited a perfect mix of flexibility and a modern, dynamic language flow that lets us express our ideas with fewer keystrokes.
- Ruby on Rails
A web framework written in Ruby. As you might expect from the name, web frameworks are the foundations that web applications are built upon, and Ruby on Rails provides an exceptionally sturdy foundation. It's a web MVC framework that embraces "convention over configuration," resulting in a steep learning curve for developers (a curve we've successfully scaled, we might add), but very powerful capabilities.
The operating system beneath every iPhone, iPad, and iPod Touch device, iOS permits applications to do interesting things with the hardware—from the mundane activity of turning a pixel blue to the exciting capture of motion events through the built-in gyroscope.
- Cocoa Touch
Cocoa Touch is the umbrella term for the topmost layer of iOS development libraries, providing much of the default user experience on the iPhone and iPad. While Cocoa Touch supplies the look and feel of, say, a button, we the developers tell it where to draw itself and what to do when tapped.
"Model-View-Controller" is a programming pattern that separates the concerns of applications into its three constituent parts. The model is the underlying engine of the code, the View is the user interface, and the Controller tells each of them what to do and when to interact based on your actions.
Nearly all modern web frameworks use MVC to some degree—Rails has mastered it in the web domain. Cocoa Touch has similarly tamed MVC in the mobile world.
- Convention over Configuration
Imagine if you had to negotiate a specific dictionary to use with someone each time you wanted to exchange letters. Tedious, no? Configuration files do essentially that, and some web frameworks require mountains of them to get the various pieces of an application to talk to each other.
"Convention over Configuration" ensures that all the parts of a program are on the same page before the conversation even begins, and configuration files are only introduced when special vocabulary is needed. The end result is less code to maintain, and the framework simply converses with an application's code as expected unless told otherwise.
- Agile Software Development
You'll have to pardon us for being purists about this term, but some folks have grievously misused it to make their operation sound flexible, without following the methods that makes Agile development work so spectacularly.
Being agile means, at the very core, constantly evaluating what works and doesn't work in the software development process and then acting on that evaluation efficiently. From those tenets sprung practices like pair programming, Test Driven Development, and Behavior Driven Development—all methods we strictly adhere to.
We're zealous about what we do here at Bendyworks. And when we work for you, we do our best to show you just how appropriately named Agile development is when it's done correctly.
We believe regular communication is the best way to ensure a project stays on course. We also believe that time is precious, and time spent in meetings should be short and productive. Standups are daily meetings between you and us, and we keep it to five minutes. And yes, we encourage everyone to actually stand up. (Being slightly uncomfortable makes people more efficient.)
- Extreme Programming
The original name for Agile. It doesn't try to fit agile into an existing enterprisey methodology (like some people presume Scrum does), but it rather frees teams to explore the right way to craft software. Bendyworks practices Extreme Programming.
Scrum is a form of agile that prefers iterations of defined length, with ceremony at the end of each one. It also calls for a "scrum master" who coordinates the team. While Scrum has its places and followers in agile development, we find it a little too rigid for our and our customers' needs. Bendyworks practices Extreme Programming, not Scrum.
A window of time in the development cycle. For Bendyworks, it's almost always 1 week.
How many requests can the server handle per second? A server can easily manage millions of people if they're reading essays. It can fail very quickly if only a few hundred are clicking links as fast as they can. Depending on the attention you expect your final application to get, we may approach its development in different ways. Ruby on Rails has limits to how large it can scale as a framework (ridiculously generous limits, but limits nonetheless), but we're experienced enough to know those boundaries and to find the best tool to implement your idea.
- Enterprise vs. Web Scale
Enterprise is usually used to signify a particular scale that a program must accommodate. It usually means tens of requests per minute from multiple locations during typical business hours. This is in contrast to what is (extremely) informally known as "Web Scale," which represents thousands of requests per second from locations all over the globe, 24/7.
- Staging vs. Production
When developing a web application, we have a live site (production) and a testing site (staging). When new features are delivered, we deploy them to staging for you to experiment with and let us know what's working, what we need to tweak, and where we need to go back to the drawing board. Once you're happy with a feature, it gets pushed to production.