Adobe Flex 2 is a very special solution that enables development of RIAs based on Flash related technologies. Interface description and other features are based on XML - MXML dialect. Client logic description was done using ActionScript3 (hereinafter AS3). Adobe Flex translates usual AS code which is transmitted to mxmlc compiler for swf generation (as a result of MXML compilation).
Flex consists of several products:
Adobe Flex Builder - IDE based on eclipse. It allows quick development AS3 and MXML. It has a powerful visual design interface. Syntax highlighting and useful hints, built-in Debbuger, help and other features inspire flex developers.
Adobe Flex framework and SDK was based on the framework components. It contains a huge number of expandable components to develop interfaces of any complexity. It’s free (as a unit of Flex Builder).
Adobe Flex Charting – it’s a library that allows you to create all sorts of interactive charts and graphs (paid application).
Adobe Flex Data Services – it’s a set of server-side component that responsible for fast and convenient exchange of data between Flex and JAVA applications.
The cornerstone of all these applications for flex development is Flash Player (you need the 9th edition for correct work with Flex applications). The main advantage of this player is that its work does not depend on the platform or browser!
In the late 1990’s, Web development became mainstream in programming and obtained universal recognition, standing apart traditional desktop applications in many areas. In the year 2008 year the development of mobile applications has left the launching pad. The development of this type of programming will become extremely important over the next 5 years. Of course, there are many approaches to develop software for mobile devices: web applications, RIA, and also the applications that can run on the device itself. It doesn’t matter which of these directions you choose. What is really important is that adding skills of development for mobile devices in your resume you can be definitely sure that your experience will be great demand in the labor market in the future.
#12 Newsletter subscriptions and self-education
Nowadays it’s not enough to get the diploma of any profession in IT. Some years without experience and self-education and you will become a retrograde. Of course it’s a sad tendency, sword of Damocles for all the programmers, but fortunately it’s not so difficult to change the situation. Reading news and studying articles about new technologies and the last tendencies in software development will allow you to be always sitting pretty.
#10 “Hygiene” of software development (the list starts in the previous posts)
Several years ago, many software development companies didn’t use such tools as bug-tracking systems, version control and other similar tools. They just worked in Integrated Development Environment (IDE), and that was all. But, thanks to new approaches to integration, tools such as Microsoft Visual Studio Team System and advent of high-quality systems with open source communities programmers discovered new methods and new “hygiene” of software development.
Nowadays developers should know not only how to put the code in repository, or get it from it, or how to use virtual machines to create test environment. They have to be sure that they properly coordinate their activities in their team. Those software developers who copy everything to their personal USB flash without documenting changes in program code doesn’t welcome not only in “traditional” companies, but also in Agile-commands, where coordination and communication between team members are considered as a key factor of quality software development.
#9. Flexible methodology (рlease, read the beginning of the list in the previous posts)
When Agile appeared in mainstream development, many IT-companies and certain specialists were rather skeptical. We think that such sentiments showed intention to protect the traditional approach. It was “fear of the unknown” discarding all the tools, which could lead to anarchy in software development.
By that time the ideas of Agile methodologies have become defined much better. Today they expressed rather clear in numerous books, articles and (it is the most important thing) in practical experience of many companies and well-known specialists. So IT-world could learn a new methodology at first hand.
Many teams nowadays use and experiment with Agile. Of course, Agile is not a panacea that can save the project from failure, but flexible methodologies actually were used in many successful software projects.
Agile developers who understand and work effectively with flexible development tools will be in great demand on the labor market. And you can be sure that their popularity will only grow over the next 5 years.
#8. Dynamic and functional programming languages (Please, read the beginning of the list in the previous posts)
You would be surprised, but the next point in our “look-ahead list” is dynamic language. It can be functional language as well, we can’t decide it exactly. Of course such languages as Python, F#, Ruby, and Groovy don’t belong to mainstream; nevertheless software professionals can find good ideas in them. Take LINQ from .NET as an example, this language is an “offspring” of the functional programming. Ruby and Python are becoming more and more popular in some areas (owing to good programming for Silverlight).
Your programming skills in these “informal” languages will not only make your resume more impressive, but also liberalize, helping to find more non-typical and unusual decisions for everyday tasks.
For example, you can read the book “Programming Python” by Mark Lutz. It will show you all power of this language and help to unveil your potential. No doubt this book is one of the most comprehensive and detailed edition for advanced Python programmers available nowadays.
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.
#4. Rich Internet Applications (RIA) No matter you can love RIA or hate it, today developers use Flash not only for cartoons about politicians who sing silly songs, but also for more serious things. Flash has rich functionality to create applications using technologies such as Flex and AIR. Companies that develop Flash analogues, for example JavaFx and Silverlight, also improve similar features and increase productivity.
HTML5 soon will combine the full functionality of RIA, including connection to the databases and putting the official seal of W3C on AJAX technology.
It means that in the near future, the differences between RIA platforms will be decreased.
#5. Web Development Web development won’t sink into oblivion in the near future. Many Web developers ignore, or at least only familiar with the basics, providing frameworks. However, companies want more and more people who able to work with these technologies. So, JavaScript, CSS, and HTML will be still successful even in 2014.
#6. Web Services
JSON or XML? REST or SOAP? This choice depends on the project, and work complexity increases without Web services technologies. Even those areas, where developers used ODBC, COM, or RPC, are gradually moving towards Web services.
The impact of recent changes in the world economy changed the situation in world of software. Now the majority of developers are focused on short-term work. But it doesn’t mean that they are careless about their prospects. Self-education and experience are still the only way to success. That is why it’s so important to be constantly analyzing existing technologies and methodologies trying to keep step with changeable IT- world, not wasting valuable time for unnecessary knowledge and superseded information.
So we will try to forecast the most essential skills for developers that won’t become obsolete in the next five-six years. In this and the next posts we will list 14 the most relevant technologies for software developers.
#1-3: Java, PHP, .NET
It’s highly unlikely that three foundations of software development, Java, PHP, .NET, will be in less demand in the near future. Developers need to know at least one of these programming languages and development platforms: Java, .NET (VB.NET or C #), or PHP. Nevertheless only one programming language syntax is not enough. Usually projects cover a wide range of different functions, so developers need to know the frameworks and libraries associated with the necessary functionality in more details.
Lisp (or LISP – LISt Processing Language) is a family of programming languages with a distinctive, parenthesized syntax. It has very old history (was specified in 1958 year, only Fortran is older). Nevertheless programmers use it even nowadays!
Of course, Lisp has undergone a great changes since its appearance, it originated some dialects (today the most popular of them are Common Lisp and Scheme).
The Lisp-code is written as s-expressions (parenthesized lists), the operator’s name or function goes first, and then we use arguments. But it’s better to see it all in practice. Especially in this unrealistic performance that was possible with the help of LISP and OpenGL (enjoy the internet-video).
Be patient and you will see something impressive, it will start somewhere after the 5th minute. This real work of art was created by the winner of international awards, programmer Ivan Lyambdin:
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: