The program has grown from a future profession to become a profession of this, but until when?
Personally I think still have many years of boom for this guild, but much more specialized.
So perhaps the phrase "I have a computer friend who can fix your PC" fall into disuse or changed to: "I know a profile systems that can," who knows ...
As there are still many years where the figure of developer will be paramount and there are many batches of so-called "computer" would be nice breakdown points or skills that will make any future programmer stand out from the rest.
As technology has evolved, logic tells us that the capabilities or skills that should be the developer of the future are:
- Manage at least one of the major programming languages: Java, .NET or PHP. We like them or not, are the high-level languages most used. And they will remain so unless the emergence of a hypothetical and unlikely solar storm that lie around and have to reinvent the wheel.
- Learn and use Frameworks; The typical phrase is no need to reinvent the wheel, we have been hearing many years. While it is true that we must have some knowledge of how these "black boxes" that call frameworks or libraries work, you need not develop fully. So before starting any project or module, you must take the time to investigate whether there is any framework that simplifies the development and make the most efficient and robustly. I would say that every day we must take the time to investigate new tools that can optimize the tasks that we develop.
- Web Development; Although by programmers has always been the ugly duckling of technology today Web programming is far more complex and even then it can be called xD programming. Every programmer to deign must have basic knowledge of frameworks, technologies like HTML5, CSS, etc .. It seemed that the Web would disappear but far from it! Even has a long future in the Web, as it is part of almost all IT projects and systems.
- Web services are fundamental to any system today, during the famous passage Client / Server but few have changed since then. Will continue and will continue consuming Web services on different technologies: REST, SOAP, WSDL, JSON, XML .. Some more than others, but generally all applications using dynamic data to enrich themselves, because like the Web computing in general tends to be social and global.
- Common Sense and social skills; Computer programmers no longer hide in caves, working at night or go exclusively to roleplaying. Today they are involved in all stages of development, work in teams and have to have some emotional and social to work on major development groups and talk with clients in a natural and common language intelligence.
- Knowledge of different programming paradigms. Not limited to object-oriented methodology, one must know the functional and dynamic programming. These paradigms expand the horizon of programmers and let them think of ways to achieve solutions to problems. Stop thinking about classes and entities to think of a more close to natural language pseudocode. Interesting would handle Python and SQL languages like MongoDB or not it relate Redis, for example.
- Involvement and domain knowledge; As much as programmers need to abstract the problem that relates to develop, the reality is that the most popular programmers are those who are involved in the project domain. You can not pretend that clients or project managers are able to translate it into requirements and functionalities, it must be the developer who does this function.
- Standards and hygiene code; When a developer is incorporated into a long term project scope, must be willing to join a development team with other programmers like. For your code is accepted into the branch has to meet basic standards of acceptable and clean code. The expression of "nibbles code" may be worth for a solo project but not a big project. The variables, classes, methods have to fit in with the rest of the project to be useful, often the oldest project spend more time outside refactoring code programming, which is unproductive.
- Mobile development, it seems that development for mobile applications goes for long, anyway that device talk and that Android, iOS, Windows Phone, Ubuntu operating system .. We do not know what will be the environment most demanded in the future , what we do know is that it will maintain the same or more importance. The crux of the matter are the limitations and specializations that the development for a specific hardware device, ie, native. From experience, the most important thing is to know the environment where the software is deployed, limitations and procedures of these. For example knowing the lifecycle of apps on mobile devices is essential to know how to act in the background, managing threads and concurrency, etc ..