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:
On February, 21 the Association for Computing Machinery (acm.org) declared the name of the laureate of the Prize – one of the most prestige science award in the IT sphere. For the first time the laureate of this award was a woman – a 75 year-old Frances Allen. She has worked for IBM since 1975. Missis Allen took part in research-and-development activities in the field of parallel computing, that is used in most computing machinery.
In 1989 г. Allen was the first woman who got oneself into the list of the IBM Fellow – the most prestigious technical status in the corporation.
The example of Frances Allen isn’t the only example of a woman who achieved success in the IT sphere.
Many critics think that the first developer was a woman. Lovelace Augusta Ada King had become a programmer long before the first computers were invented. She was a mathematician and she was interested in the works of Charles Bebbidge who created the project “Analytical engine“ – theoretical footing of the first computer creation. Lovelace translated from French to English the famous work of Menabrea in 1842 and added her comments to it. Her comments to this work were very useful for the science development – there were a lot of methods of practical application of computers and argumentation about entertaining application of computers. Also Ada wrote her own method of Bernulli numbers’ calculation , that is known as the first famous computer program. Ada is the author of such terms in modern programming as subprogramme, circle, working cell and etc.
Many times you and I have heard about advantages of Agile development techniques and drawbacks of traditional “hard” techniques like RUP, MSF and so on. I think, sometimes we are mixing them up.
A lot of software engineers, project architects and even PMs prefer the Agile approach because of the anarchy it allows in the outsourcing development. I mean the absence of specifications (even when they are really needed), merge of project roles and responsibilities (when no one can say who is responsible for low quality level and specification), and the sacred belief in users’ stories without any additional analysis of business goals. The situation can become worse if a customer hasn’t got a clear vision what he wants to get at the end of the project, if the requirements weren’t completely described and verified by him and finally they were implemented according to the developers’ point of view. Most probably the client’s expectations will not be satisfied, and it will lead to hours of overtime, release date shifting and other symptoms of an unsuccessful project.
In addition, unskilled key project persons frequently use this fashionable term to clear themselves when they fail, the project deadline is out-of-date and the customer is not satisfied. They say “We create software using modern flexible approaches, we don’t need all these hundreds of specifications and process descriptions! This is Agile, baby, so relax!”, but usually they forget one important thing.
Agile practice is not the universal magic wand that allows you to make any project no matter if it’s low-sized or estimated in 10 thousand man*days, with minimum of documentation, absence of project roadmap, detailed architecture and so on. Of course, it could be so in small/medium projects and on the assumption of all project-members already have agile experience and the Project Manager keeps all working activities and plans in his head. But you have to keep in mind that it’s rather risky to rely on this.
I strongly believe that Agile development process should be used only by highly-experienced web developers – because they already know the weak points of this methodology and they will not addle with the seeming simplicity and easiness of this approach.
Doctrine is a PHP ORM for PHP 5.2.3+ that sits on the top of a powerful PHP. One of its key features is the ability to optionally write database queries in an object oriented SQL-dialect called DQL inspired by Hibernates HQL. This provides web developers with a powerful alternative to SQL that maintains a maximum flexibility without requiring needless code duplication.
Doctrine requires PHP 5.2.3+. It doesn’t require any external libraries. For the database function call abstraction Doctrine uses PDO which comes bundled with the PHP official release that you get from www.php.net.
There are a lot of words said about web development and functional programming methodologies. Usually they are oriented to development mostly and do not deal very much with testing. So should testing have a separate methodology?
It is not a secret that quality software is one of the most important requirements for a customer. It often doesn’t matter the timeframe or even the budget of the project, but whether the end users will be pleased with the product developed. So the importance of testing is great and on some projects good testing is even more valuable than good development. Anyway this doesn’t mean that testing should have a separate methodology. As testing is a very agile and flexible process, which closely connected with web application development, there should be the same methodology for testing as for development.
Testing is flexible enough to choose the best process to achieve the result easily and quickly. It can be various, depending on the development methodology, project team specification and customer’s goals.
If you think of a separate testing methodology – just take all the best practices together and work out your own testing methodology!