In one of our previous articles, we provided a short intro on 4PSA’s internal organization. Today, you can have a closer look at the Apps Team.
Who We Are
We are a bunch of passionate young developers who like taking up new challenges. Ranging from interns to seniors, from designers to coders, from cheerful to introspective, and from inquisitive to amenable, there is one thing we all have in common: we want to build great Apps. In our opinion, a great App not only brings value because it fulfills a need, but it is also delivers a great experience for its user.
What We Do
Our entire focus is on the… App. We code Apps, we test Apps, we deliver Apps, and we maintain Apps. Everything we do revolves around Apps. 🙂
We come up with an idea and study it in terms of how useful it can be, what potential it would have. Ideas usually emerge from the end-user’s needs and interests. Sometimes, App development is explicitly requested by other teams. We use the same approach for all requests. First, we go through a stage of research, then we generate a mandatory set of requirements, give them a friendly graphical shape, and investigate the user experience. We build up use cases, write the App using our framework, implement it and test it until we make sure it is indeed what the user needs.
Each App is developed with the purpose of being deployed on almost any device. Our goal is to deliver a version that is functional on all devices at the same time. We believe that the end-user should not be deprived of an application just because they are using an Android tablet instead of an iPad. After all, their needs are what makes the App valuable. 😉
We started doing this more than two years ago. The beginning was difficult, especially because at that time it was not very clear if/when HTML5 will take the lead or native Apps will win. We tested most tools on the market that could help us develop Apps able to provide top performance while requiring low bandwidth, offer good user experience, easily debug and integrate with other systems etc. Because no system provided satisfactory results, we had to work hard on it…
How We Do It
After having tested most of the tools that were claiming to offer answers to at least half of our problems, we decided that it’s better to build our stack. The effort put in extending and maintaining existing solutions was too big compared to the long-term benefits that we expected. This is how we ended up developing an App stack, which is based on popular fully grown tools such as Closure Library, Closure Templates, Closure Compiler, and these are just to name a few. We will most likely open-source it soon.
The architecture and the implications arising from developing high-performance SPAs have become a frequently disputed topic. Many talked about it, tried to deal with it, and some even managed to successfully develop SPAs that everybody knows of (Gmail, Google’s official blog, New York Times), but so far no one has broadcasted the key to success.
Technically, everyone speaks about HTML5 and its bright future, but few actually discuss about the technnology implications, complexity and effort in building complex Apps in the browser. You need a very scalable and solid architecture to develop code in such a way that the App can be easily maintained, debugged, tested, and extended.
Our App architecture is using the very simple principle of state machine; any change in the states (whether initial or transitory) is handled by a specialized state handler. To make it even more simple, the application modules communicate with one another through a standard bus. Communication is straight-forward, modules don’t need to be aware of each other. They publish and subscribe to application events. There are still many things to improve, but at a high level we build pieces of puzzle and fit them together.
The Team Keeps Growing
And like the puzzle, this article is very high level. 🙂 We will definitely write more articles about Apps, but if you want to find out more, do not hesitate to ask! We have many openings as well, as we are looking for enthusiastic people who want to be part of the DeviceFree revolution (read: HTML5).