A war is being fought in the hearts and minds of web developers over the next-generation single page application (SPA) frameworks. This conflict is less one of feature set and more of style and aesthetic. There are numerous minor players in this conflict, but two real contenders have stepped to the fore and they are two of the biggest on the web – Google and Facebook.
Google was ostensibly first in this space, with their wildly popular AngularJS framework. Thinking that they would consolidate their influence, they’ve spent the last three years crafting a true next-generation framework in Angular 2. It would leverage off modern component based design to improve their architecture, use TypeScript for tooling and future-proofing, provide the ability to run outside of a browser process and ahead-of-time compilation foremost among many features. While it was a significant departure from the style of Angular 1, they took their time to craft a truly impressive framework.
Three years is a lifetime on the web and Facebook prescribes to a different school of thought. React had already been released by the time Google announced the rewrite, but it was a really good component-based UI framework – in no way as feature rich as angular. Then came flux as a pattern, redux as a framework, babel for transpiling, react-native, relay and flow for type checking. The procession of complementary technologies continues at an implacable pace. React is still just a UI framework, but is surrounded by such a wealth of supporting libraries that make it more than just another contender.
This war is far from over and knowing the way-of-the-web, there will likely be more contenders rising to the top soon. In our context, the recommended choice is between these two best-of-breed frameworks. They’re both similar in their breadth of functionality and learning curve, but very different in their aesthetics and style. The key takeaway is likely that Angular 2 supports a more object-oriented style whereas react encourages a more functional approach.
With the imminent release of Angular 2 and the recent announcements from ng-conf 2016, the World Wide Web is abuzz with news regarding the next big thing. While scepticism was reserved for their initial communication about Angular 2, the team at Google has managed to dispel even the hardest cynic’s concerns. Most of the initial dialog about Angular 2 has revolved around its relationship with TypeScript, and its drastic departure from the Model-View-Controller metaphor, but there is so much more to the reinvented framework than that.
However, only a part of the tooling question is addressed by TypeScript and the Angular 2 team has not been remiss in trying to address the full developer experience. Much effort is being invested in scaffolding and build tooling in the form of the new Angular 2 command line interface. While still in active development, it aims to simplify the access to features currently offered by a variety of disparate tools – such as Grunt, Gulp, and Yeoman. The real value, however, comes in the form of the debugger tool; Augury. Developed by the team that built Batarangle and Angular 1.x visualizer, Augury is a Chrome plugin that provides deep visualisation of component tree, dependency graph, router configuration, scope variables and much more.
One of the biggest criticisms that the team has had to confront is the performance. Angular 1.x is slow, very slow. An acute awareness of performance is at the heart of Angular 2 and it has necessitated a fundamental redesign of their change detection model. The Angular team embraced a flux-like unidirectional propagation of data by separating the event and property binding into 2 separate flows. This means that the propagation of changes through the component hierarchy is much more controlled, isolated and any changes in any component scope won’t result in a full digesting of the page – an unintended side effect of some prevalent patterns in Angular 1.x. All told, the Angular team is reporting a fivefold improvement in rendering performance over Angular 1.x, as well as a reduction in framework payload size from 56kb down to 45kb. Many more features, executing faster with a smaller footprint.
While the performance is greatly improved, it still has the fundamental problem of any single page application (SPA), the time of the initial page impression is awful. Research from Google AdSense indicates that on the open web, a difference of 200ms on a page load can fundamentally alter the user’s perception of and interaction with an entire site. To address this the Angular team has created an isomorphic renderer for Angular 2, allowing it to render Angular templates independently of the browser – on the server. This allows for static html files to be generated at build time and deployed in conjunction with your application, quickly served as a first impression to the browser, while downloading the full application in the background. Angular 2 then has a preboot function that records user interactions, and ‘replays’ the sequence of events internally once the application has fully loaded. While this whole process should ideally all be sub second, leaving the user with the perception of amazing performance.
What does Angular 2 mean for BBD?
• Component based design means that the solutions will scale better with complexity• Great performance means that the framework can scale up to any of our solutions, with fewer performance pitfalls.• TypeScript means that it will be easier for developers with C# and Java skill to bridge the gap to the front end.• TypeScript will allow our applications to be future-proofed to a far greater degree than they are at the moment.• Better tooling means it’s easier and faster to find and fix bugs• Cross platform development with a high degree of code reuse, and without needing a new skill set, all while still running natively• It’s in release candidate at the moment, we should be able to start using it in production later this year.
There is a new language on the block. It’s from one of the most prolific language gurus of our time, Anders Hejlsberg. Yes, the list of languages that many of us have used were created by him, it’s really impressive. Anders is a Danish Computer Software Engineer who started his career by creating a Pascal compiler that eventually became Turbo Pascal. He later joined Borland and was the Chief Architect of the team that developed Delphi. When Borland started to falter he joined Microsoft.
This was at a critical juncture in the history of computer languages. Java was created by James Gosling in 1994. In the late 1990’s, Microsoft wanted to evolve the Java language and after being blocked to influence the language, chose to go their own separate way with C#. This lead to years of comparisons and competition between two fundamentally similar languages C# and Java.
It’s great to see what good solutions are built when giants collaborate rather than compete. What are you waiting for? Go try out the tutorial on Angular 2.0 and learn some TypeScript for yourself.
BBD has embarked on a programme to more formally introduce Scrum into BBD. Scrum is one of the cornerstones of Agile Software Development. This year ATC have formally run the Scrum Master and Product Owner Certification Training Courses and attendance has been good. Numerous BBD staff members have their Scrum qualifications now and well done to those. The feedback we have received is positive, but there are some questions about the adoption of Scrum within BBD such as:
Is BBD now saying that we should do Scrum; how will Scrum work for my project?Is BBD Agile when we don’t use Scrum?
This article aims to answer some of these questions, but let’s start with a couple of statements:
BBD as a business, and its teams, are generally very agile and we have been using various agile principles to a greater or lesser extent since BBD started, even before the term was coined. Your team does not automatically become Agile just because you use Scrum.
In order to explain we need to first understand what Agile actually is. In contrast to popular belief, Agile is not a methodology, framework or even toolset. In fact, Agility is defined as the ability to change direction whilst moving at speed. Agile is a mind-set entrenched in a set of values motivated by people, communication, quality and change. There is value in periodically revisiting the Agile Manifesto (http://www.agilemanifesto.org/) to re-affirm these values. Understanding that the values and associated principles are not rules, but really good guidelines based on practical experiences that are proven to work, and should be treated as such.
There have been many frameworks invented that define a set of processes that teams can follow, that fall under the agile umbrella. These include frameworks such as eXtreme Programming (XP), Kanban, the Dynamic Systems Development Method (DSDM), Disciplined Agile Delivery (DAD), and the list goes on… but it’s the essence of Agile that’s more important than the frameworks or processes being followed.
At BBD we pride ourselves on getting complex software development projects done, and have a great track record of doing this. However, we don’t enforce a single software development method. There are a few frameworks we use, but these are not enforced, we don’t use specific processes, and each unit runs autonomously with very little central control or standardisation.
Given that there is no template for success how do we continue to deliver complex software projects? Popular belief is that the magic ingredient is the people that work at BBD, and this is very true, but what do we look for in our people and what do they value in software development projects? If we dig a little deeper into the Agile Principles, we start to see an alignment with the BBD principles and behaviours. Agile Manifesto has 12 Principles (www.agilemanifesto.org/principles.html) and we have commented on them from a BBD perspective:
Principle 1: Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. At BBD, we are not just coders, we are software engineers that understand the business value of the software we develop, and strive to get it into the client’s production environment as quickly as possible.
Principle 2: We welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.At BBD, we are not slaves to the requirements, but we also understand that requirements should not be ignored. As we understand the solution and the business, we can often change direction quickly and suggest improvements.
Principle 3: We deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.At BBD, working software is what drives us, we aim to demo working software as early as possible to our clients and get feedback.
Principle 4: Business people and developers must work together daily throughout the project.At BBD, we would like the business person on the project, or even better the actual client. Often we are based on our clients’ site or them on ours. If you are not in touch with the business you’re in trouble!
Principle 5: Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.At BBD we start with the people as being the best, then add in the hardware and software needed, and a great environment. We give our teams the autonomy to get the job done, how they see fit, there is no one BBD way.
Principle 6: The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.At BBD, we encourage whiteboard sessions and design meetings, we have an open plan office, and encourage teams to talk shop over great coffee!
Principle 7: Working software is the primary measure of progress.At BBD, this is what we do best, we deliver… but this does not mean you can skip documentation, status reports and even timesheets…:)
Principle 8: Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.At BBD, we work hard, and play harder and look after our staff. Maintaining a sustainable pace is difficult, especially when you near the deadline!
Principle 9: Continuous attention to technical excellence and good design enhances agility.At BBD, you need to keep yourself updated on technology changes, and keep your skills honed, but this doesn’t mean you need to change languages/IDEs every two weeks to be a good developer, or to prove that you are on the cutting edge of technology.
Principle 10: Simplicity - the art of maximizing the amount of work not done, is essential.At BBD, this means write less code, write less specifications and focus on producing what is needed (the essence). It doesn’t mean import every framework you have ever heard of into your project.
Principle 11: The best architectures, requirements, and designs emerge from self-organizing teams.At BBD, we give units the space to self-organise, it’s the way the company is designed (look up holonic organisational structure).
Principle 12: At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behaviour accordingly.At BBD, your team should continuously strive to improve the way they work. Everyone is expected to understand and question the status quo within units.
Teams at BBD relate to these principles, thus the answer to the question “Is BBD Agile?” is YES – right to the core. Does BBD follow specific agile methodologies like Scrum? Sometimes, but it depends on the particular team and client requirements, and when the team thinks and agrees that it will make sense. So, after checking how we align with the Agile Manifesto, it is clear that we don’t have to be a slave to process and practices like Scrum to be Agile, but learning these practices is likely to be helpful, and is another tool in our ever expanding toolbox of ways to build great software.
Software need to cater for new platforms for their applications, but also for a new concept in design
Author: Peter Scheffel | Published in Business Day: 2012/05/02
AS MOBILE computing continues its rapid growth in both the consumer and enterprise environments, software developers are faced with a new challenge. Not only do they need to cater for new platforms for their applications, but also a new concept in design. In the past, engineers would develop software based on the technicalities involved in the back end; the users had little choice in the interface used. Now the interface is fundamental to the mobile software development process.
Users demand an engaging consumer interface for mobile devices that meets their needs and expectations, not what the engineers decide to provide. This is forcing the development industry to tackle an element of design it has never had to deal with before.
Software is no longer simply an engineering project. The look and feel as well as the functionality of the interface is as important as the back end. To capture users’ interest in the final product, the interface must be designed to provide a "sticky" experience. Today’s interface has to "dazzle" from the moment the application starts.
An example of this can be seen in the difference between the interface design of the two most popular mobile interfaces: Apple’s iPad and Google’s Android operating systems. In articles published by Business Insider and Mashable, the authors show Apple’s design is more popular because its focus is on the user’s experience, not technology. The user experience is critical to Apple, while technology and what the data says is important to Google. That is not to say that the technology underpinning either of the systems is better or worse, but users have given usability the thumbs up and this is why Apple seems to command their hearts and minds. While BBD has a long history of developing applications for the enterprise market, to cater for the mobile space, we have retained the services of a dedicated design company tasked with crafting the interface into something users will identify with. Of course, while the interface is paramount, the development standards focusing on security and integrity of the system and data can’t be forgotten.
Two examples of modern design come from Apple and Microsoft. Apple’s mobile design is based on an immersive concept, in which the interface is easy to use because it reflects what users are already used to doing. Microsoft uses a modernist tile system in its new Metro interface. The idea is to keep the process of using the system clear and concise. The ideal interface will allow the user to navigate through the application almost without thinking because it looks and feels like any other application. The challenge is that it is not possible to develop one interface for all mobile devices as one does for a PC, but to optimise the application to bring out the important aspects of each platform. There is no one operating-system winner in the mobile platform space, so we expect this to be a challenge for quite some time.
The simple fact of mobile applications is that "good enough" doesn’t cut it. Applications need to be designed for the platform they are running on as well as to meet the users’ expectations.
Scheffel is chief technology officer at BBD, a software development company.
Software development company BBD recently hosted an International Institute of Business Analysis (IIBA) event in Cape Town. The event was fully subscribed and attended by analysts from various companies and vertical markets.
The IIBA is an independent, non-profit organisation serving professional business analysts worldwide. It promotes the profession of business analysis and supports its analyst members in their daily work.
The topic for the evening was What Should be in a Business Analysis Toolkit. Says William September, executive and business systems analyst at BBD, “A topic of this nature always elicits healthy debates and the participants shared their views and experiences in a group setting. The fact that analysts and project managers from various industries and sectors attended added richness and variety to the opinions expressed.”
The attendees agreed there was no right or wrong toolbox for business analysts. The tools required depend on the business as well as the vertical market you’re serving. In general, however, all attendees said an analyst will always need a flowchart or diagramming tool, a note-taking app like OneNote, as well as mind mapping and wire framing software.
“The most significant outcome of the evening was that everyone agreed that soft skills were far more important that the particular software or hardware you had in your toolbox,” adds September. “We all agreed that the most important attributes of an analyst are communication and diplomacy, as well as the ability to be a facilitator and negotiator. And of course, we all need the ability to think analytically.”
One question that created some debate was whether domain knowledge was a necessity, or whether analysts with the prerequisite attributes could learn “on the job”. September says there were good opinions offered on both sides of the argument with no final consensus.
“Supporting associations like the IIBA is part of BBD’s effort to get South Africa’s business analyst community talking and sharing ideas, with the goal of improving the industry as a whole,” says September. “It’s by sharing knowledge and best practices that we all improve, and by implication, are able to deliver a better service our companies and customers.”
With all the talk about Bring Your Own Device (BYOD), I decided to experiment with the realities of using your own mobile device for work. I’m not talking about my own smartphone or iPad, these devices are capable of doing some work in the corporate environment, but lack the true abilities a full operating system has to execute productive work.
For my BYOD I purchased a Samsung ATIV Windows 8 tablet. My intention was to use this device purely for personal use. However, I quickly realised that by being able to load a full version of Microsoft Outlook onto the tablet made it a totally different experience to an iPad or Android tablet from a corporate work perspective.
No more having to wonder if the spreadsheet you looking at has changed the currencies of a quote you are trying to approve. Word documents can be easily opened and updated. Dropbox files are all on the device without needing any connectivity. The obvious next step was to start using this device for my day-to-day work.
This is where the first issue appeared. I tried connecting to the wireless network at the office and was unable to. It took a full day of a facilities staff member trying to configure my device to finally resolve this issue. BYOD therefore impacted the facilities costs of the company unfavourably.
From there on in all was good. Microsoft continued to improve the Touch Mail client so that it became a real contender as my primary mail interface. All was good until two months ago when the touch function stopped working. There was no support available from the company. It was, after all, not a company machine. I had to find time to return it to the store so that it could be repaired.
This was where the next problem occurred. Since this is a consumer device, the warranty says that it will be repaired in 21 days. This is really where the BYOD approach falls flat. And it gets worse.
After spending a month without the device, I received a phone call that the parts still needed to be ordered and it would take even longer. I realised this was in contravention of the warranty, so the device was replaced. Happy days were ahead. After installing plenty of software and spending days getting the preview release of Windows 8.1 installed on the machine, it was finally going to be ready to start “work” again.
Once again, the device could not connect to the wireless network. This time it didn’t take long for facilities to resolve the issue. That evening I spent more time getting the device ready to be productive at work, and the touch stopped working, again. After a couple of hours on the Internet I found this to be an issue with these devices. The following weekend I returned the device and received a full financial refund, but I will never get the hours invested in it back.
So if you want to BYOD, make sure your device has a same-day or next-day warranty in place. Apple and other tablet devices are also consumer devices and hence their warranties will also only repair the device (slowly) should it break.
If you want to depend on consumer devices for corporate work, best you own a backup device in case of failure. I think that for now I’ll continue using my company machine that is supported by our facilities department and gets priority service from the vendor.
Mobile applications have become quite the fashion statement, with companies and individuals the world over spending time and money developing solutions for every conceivable problem. Even larger corporates and governments have been getting in on the act in the hopes of increased productivity, revenue, efficiency, improved customer service and other presumed benefits of mobile apps.
A problem is that very few businesses do the necessary research to determine whether the apps they think will deliver the goods will actually produce any real business value. Richard Kantor, executive at software development company bbd, says the tide is turning and more CIOs and CFOs are asking what the business return is when considering the development of new apps. “There are two aspects to determining whether an app delivers value,” Kantor says.
“The first is the true return on investment (ROI), as measured in increased revenue or reduced costs. The second is the non-financial returns a company can gain. These can be measured in terms of brand value, maintaining a strong market position in relation to its competitors and so forth.
“Gartner recommends ignoring the hype about apps and focusing on gaining value from your mobile development investment in terms of a combination of these two points, which it terms value of investment (VOI).”
While there will still be tremendous activity in the mobile development space, not all of it will result in measurable returns. However, Kantor believes there is another reason CIOs and decision makers invest in apps. Many view their initial app development as a learning and RandD process to understand the intricacies of mobile development, user interfaces and customer adoption. “However, the point is fast approaching where senior executives will ask what value these apps really provide the company before allocating more budget to development,” Kantor adds. That is not to say all mobile development has been experimental or a failure. Kantor points out that there have been many successes both locally and internationally.
FNB’s mobile app was a significant local milestone in the financial market and has seen tremendous success since its launch. The combination of a well-written app with the support of a well-designed advertising campaign proved to be a winner for the company.
Of course there are older apps that have been used for ages on almost all GSM feature-phones, although they are not apps in the present sense of the word. These are the USSD or SMS apps used successfully in areas such as selling cellular services, data and air time and even mobile banking. Kantor says the key for any app success is to deliver an integrated service.
Users need a combination of a well-written app and a marketing campaign aimed at the customer segment they want to attract. Nevertheless, the rise in app development and the hype surrounding mobile and its importance to business is clear, Gartner expects to see a 4:1 ratio of applications written by the business market for mobile devices versus traditional personal computers for the next three years. Kantor adds that devising ways to measure an apps’ success is also crucial. This is important both from external value perspective, as well as through in-app metrics which are used to ascertain how the users use it as well as which parts of the application are most popular.
“Mobile services and apps are here to stay, but these applications will not add to the bottom line if companies do not do the prerequisite work to ensure their apps deliver value and are launched with a well thought-out marketing plan,” says Kantor.
“BBD advises that for strategic mobile projects, clients evaluate and find proven cases where mobile apps will deliver measurable value and develop their systems accordingly, instead of responding to the hype and creating mobile apps for the sake of developing mobile apps.
“For new entrants into the mobile application space, tactical projects which help organisations to gain a good understanding of the technical intricacies of mobile development and customer demand are a worthwhile investment on an ad hoc basis.”
By Robert MacLean
The Visual Studio Gallery provides quick access to tools, controls, and templates to help you get the most out of Visual Studio. Visual Studio 2010 Extension Manager is integrated with the Visual Studio Gallery. It brings the Visual Studio Gallery into Visual Studio IDE. There is no need to use the web browser for searching or to run the setup program. Within Visual Studio 2010, the Extension Manager is opened through Tools | Extension Manager menu.
When Extension Manager opens, it lists the extensions already installed. If updates for extensions are available, it lists those too. In the left pane, by clicking on the Online Gallery tab, you can browse and search for extensions in Visual Studio Gallery. When you select an extension, the related description is displayed in the right pane. Clicking on the download button, Extension Manager immediately starts downloading the selected extension.
There are quite a few extensions that are must-have for developers. On the Internet, people tell you their favorite extensions. Here is a list of my picks. You are encouraged to try them out. It is easy and you always can disable and uninstall them if you don’t like them.
Visual Studio Productivity Power Tool, a set of tools to improve productivity, such as solution navigator, Tab well UI, Searchable Add Reference Dialog, and etc
Snippet Designer, an extension that lets you create code snippet in Visual Studio
Spell Check, an extension that provides spell check in plain text files, comments, strings and HTML/ASP
Tangible T4 Editor, an extension that provides IntelliSense and syntax highlight for T4 templates
GhostDoc, an extension that generates XML document comments for C#
Feature Builder Power Tool, an extension that helps creating extensions