Adobe AIR and Microsoft Silverlight: which platform to choose?

SD Times, the first and only newspaper that was launched for software development managers in February 2000, has become interested in our expertise in Adobe AIR and Microsoft Silverlight. So we have got an opportunity to share our experience with more than 60,000 subscribers in more than 130 countries.

Mr. Sergey Marchuk, the Chief Technical Officer of Oxagile, disclosed some secrets in his interview. First of all he explained whether it’s correct to compare Adobe AIR and Microsoft Silverlight, and noted that speaking about AIR on this point we should considered Flash / Flex development and such technologies as JavaScript / HTML.

Discussing pros and cons of both platforms he provided interesting data about their percent abundance. Silverlight was proved to be less popular than Flash (50% of PCs with preinstalled Silverlight plug-in vs. 97% of machines supporting Flash). Moreover their rates of popularity can change as new version of HTML (HTML5) becomes available. As we know, it allows watching video without any additional plug-ins (Flash Player or Silverlight). So, as the CTO of Oxagile stressed, nowadays it’s very important to find “the right” software developer and consult on how and which platform to use for every specific software project.

Testers ease conscience of software and web development companies

Application testing is a process involved in all life cycles of software development. It implies review and planning of the product requirements, preparation and performance of changes. As a result testers reveal inadequacies and errors. And trying to get a systematic view, every person in software development company actually plays the role of tester. If you look at IT-project as at a person, then roles of different specialists can be described in the following way:

•    Project Manager is a backbone and the autonomic nervous system
•    Programmers are a skeleton and motor nerves
•    Analysts are organs of sense
•    Testers is conscience

Software Quality Assurance is often considered as a synonym of testing, but this method actually was called upon to prevent errors beforehand, rather than finding and fixing them. Quality in this sense should be considered as a characteristic of finished product (software or web-application).


So, testers have to verify even requirements specifications, project plans and analysis, not just program code and interface. Software testing is particularly important in critical systems. For example, the Therac Radiotherapy apparatus (1985) irradiated 6 people with lethal dose of radiation due to the lack of code verification and validation. Or Mars exploration rover (1999) brought the loss of 125 million dollars because of crude common measurement system between developers. And even during the electronic elections in Estonia there were some problems because of poor high-load testing. These examples and practice of software and web development companies shows that all testers should follow basic principles from ISTQB test documentation and other sources.

Reducing IT risks

Every software development company faces a wide range of risks starting from the risk of simply doing nothing to the risk of catastrophe. It’s a universal truth that If you risk nothing you get nothing. The higher the profits, the greater risks are involved. Understanding risk is essential for effective performance of a software development business in general.

IT Risks management can be divided into four groups:
• dealing with operational risks – non-compliance with the regulation, relations failure, etc.
• managing financial risks – cash flow risks, exchange risks, etc.
• taking care of accidents – natural events, environmental impact, etc.
• preventing strategic risks – market changes, competition, etc.

There are five key steps to successful risk management.
1. clearly realize your IT project objectives;
2. define the risks to these objectives (consider not only obvious risks but latent as well);
3. assess and prioritize the risks (the possibility of their appearance against potential consequences);
4. assume measures to deal with the highest risks (introduce control over the situation, change the working process, prepare to cope with the possible consequences, outsource the risk, etc.);
5. inform the senior IT managers on all the risks – inborn and residual.

But what about reducing your IT risks by sharing them with someone else? One of the good ways to reduce the risk impact is outsourcing your project to a reliable software development company with a good reputation and positive testimonials.

How to read books on programming more effectively?

The majority of newbies and even some experts in software programming often ask themselves a question: how to read a book on programming? They want to save time and get more effect from reading.
What do you think? Which of the following tips would be more useful?
• To read one chapter, and only after that to study a set of examples and task solutions.
• To read a chapter and a set of examples at the same time.
• To read a chapter / book and then review examples only visually, inventing own analogues of described problems.

We asked Oxagile programmers what do they think about these questions and got the following answers:
• I try to go read the chapter, type examples (I think that mechanical typing is also beneficial for me =), then I try to invent my own tasks for the given topic.
• Traveling by subway I saw bearded guy who was reading the textbook on C + +, desperately commenting tasks in his notebook. I like this approach to the effective reading, but sometimes it looks like fanaticism =).
• I start my reading from different parts of the book at the same time =). And in such a way my new book can be full of multicolored bookmarks even at the first day.

The way of reading depends on your way of thinking, so you can choose your own variant of effective reading. Good luck!

How to take advantage of open source software during the economic crisis

JoomlaToday costs of new IT products development can be quite comparable with profits. The economic crisis has an impact upon corporate budgets, making software at reasonable prices more and more popular. And there is nothing out of the way! A lot of managers responsible for new IT-projects consider customized open source software as favorable decision that allows to develop more with limited budgets.

While vendors increase license fees, software developers specializing in open source software install and customization offer their customers independence and flexibility. This year open-source usage and adoption is on peak again, the same situation was in 2001-2002 during the previous economic decline.
Taking as an example the most popular open source CMS for website design and development like Joomla, Drupal, Wordpress and Magento we see that these free software products help to save costs giving new technologies, innovative web 2.0 design and other great solutions.

Open source CMS offers numerous advantages and possibilities. Whereas software companies that use their own software for web development slow down innovations, thousands of independent open source developers improve their projects almost every day. Moreover open code is a key for legal and simple CMS installation and full customization, beginning from some little modifications and ending by the development of new complicated modules. It means that free full packaged software products can be used not only for standardized projects, but also for exclusive design and non-typical web resources.

Choosing a partner in IT? Think twice!

If you want to have your IT project done perfectly and in the shortest terms, you have to think twice before taking a final decision on the company who will develop software for you. Not a company, but, in fact, a partner who will not let you down and will guard your reputation in the business world.

There are no special rules or certain algorithms of how to choose the best partner. Just try to comply with the following steps and you are likely to be successful.

• Make a list of companies providing services of software development. Find as many potential suppliers as possible.
• Specify a number of criteria for selecting the best variants. Such criteria can be various. It depends on what you consider the most important issues while choosing a partner: professional background of IT specialists, company’s financial health, correspondence with your quality processes and applied methods, cost of the project, or previous successful and failed projects. Note: you should take into account not only the employees’ knowledge in modern information technologies but also their knowledge in the certain domain that you are interested in (medicine, banking, accounting, etc.)
• Choose 2-3 companies from the list that suit your criteria.
• Carry out a detailed analysis of these companies. If possible, visit their headquarters, talk to the employees and managers, get feedbacks from their customers, etc. It isn’t necessary to choose one at this stage.
• Negotiate the terms of the contract: legal and financial issues, confidentiality, proprietary rights, liabilities, termination, penalties.
• Order a pilot project with the chosen companies.
• And, finally, make a final decision on your future partner for the software development project.

We make no pretense to consider the above-mentioned sequence of steps to be the algorithm of success. But one thing is definite – if you take into account our ideas, you’ll make fewer costly mistakes.

Do programmers need to speak «human language»?

Speaking about 14 most promising IT technologies of the next five years we cannot but mention social skills (the previous posts – Rich Internet Applications for “rich” software development and 14 technologies that won’t become obsolete before 2014: foundations of software development).

#7. Social skills.

Of course we don’t mean such tings as psychological and oratorical skills for programmers. Software developers may not need books like «How to win friends and influence people». Nevertheless they often face with customers and need to speak common language with them.

Business and software are closely connected with each other. Specialists can’t change their business processes without proper changes in their software. For example, Chief Financial Officer can’t change the accounting rules without working with IT department to update the system. And call center can’t optimize its work without IT specialists updating the CRM workflow. So customers often need to work directly with the development team to make sure that their requirements were properly reflected in developed software products.

So developers are more and more involved in non-development meetings and processes to provide feedback control. And those specialists who can acquire skills of affective communication will be highly valued in labor market.

Configuration management or how to develop large software (part 3 – the last)

I’ve started this topic in the previous 2 posts (part 1 and part 2). Here are some more thought regarding the project management for large software projects.

Usually software development doesn’t imply the use of any version control system. All other approaches could be applied or not to individual projects. It dependents on the specifics of developed system, on many other factors, the most important of which, in our opinion, ability to control all the approaches, availability of necessary skills and resources and quality of the developed system.

There is a separate discipline of software engineering, which deals with this kind of organizational objectives without any reference to methodology — it is a configuration management. Configuration Management is a core discipline that helps to manage and control requirements specification, the process of software project development and information on the status of individual tasks and the entire project as a unit. The project success largely depends on how the process of configuration management was streamlined. On the one hand it can save the project, but on the other hand it can bury it.

Glossary of IEEE 610 describes configuration management as “a discipline applying technical and administrative direction and surveillance to: identify and document the functional and physical characteristics of a configuration item, control changes to those characteristics, record and report change processing and implementation status, and verify compliance with specified requirements”.

But it’s a rather formal definition. The following software and tools that programmers face on duty every day will allow you to understand how this definition works in practice:

* Subversion; CVS; Git; Mercurial; Bazaar; Microsoft Visual SourceSafe; ClearCase; Perforce.
* Ant; Nant; Maven; Phing; make; nmake; Cmake; MSBuild; Rake.
* JUnit; NUnit; CPPUnit; DUnit; PHPUnit; PyUnit; Test:: Unit; vbUnit; JsUnit.
* PMD; FxCop; PHP_CodeSniffer; PyChecker, lint.
* JavaDoc; phpDocumentor; CppDoc; RDoc; PyDoc; NDoc; Doxygen.
* CruiseControl; CruiseControl.NET; TeamCity; xinc; Atlassian Bamboo; Hudson.
* Jira, Trac, Mantis, Bugzilla, TrackStudio.

I hope this information was useful for at least some of you and will highly appreciate comments and any other kind of feedback.

Configuration management or how to develop large software (part 2)

Beginning of the article read here.

Programmers look at the same project from the different position (in comparison with managers) and they focus their attention on other issues: architectural design, database, UML-diagrams and all these stuff. In theory it means “to spend the whole day in order to fly in 5 minutes”. If you take these steps as number “0” in software development process, in practice the project will begin with the step number “1” – with the development. It is not quite correct approach, but it’s the only possible approach when developers can’t give the exact answers to the questions put at the very beginning of software development. (Tell us about the other possible way out, if you know it :)
Agile methodologies are known as attempt to solve these problems (and we like this approach, we even used it in our corporate brand – Oxagile). But agile methodologies work mainly on organizational level. Programming level is connected with other issues.

Configuration management or how to develop large software (part 1)

How one can develop large software products? It is no secret that in practice large and complex software product development has always been independent of the latest technologies. It has its own peculiarities, and requires special methodology.

Researching and analyzing existing approaches to software development, our company wasn’t able to answer very simple questions related to “correct” development of high-quality programs. And it’s no wonder! Nobody can develop common formalized approach to large software product management. For example, one of the simplest questions, we raised in Oxagile, was the question of how to assign “correct” version numbers to issued software. Probably many of you will agree that this question is connected with not only large corporate software, but also with the simplest applications, developed by students and beginners in programming.