BBVA API Market
Calling a developer "Senior" is extremely relative and, to some extent, temporary as technology progresses. The software sector develops at a frenetic pace. It is impossible to compare a technical profession such as a developer to any other non-technical profession. For this reason, we could never talk about a programmer's professional category in generic terms.
What experience or level of knowledge must a programmer possess before they are considered to be a senior programmer? We will follow the obvious path by starting at university (or any other structured training) and moving to the first years as a developer. This approach may work better with other jobs. We are not interested in the years of experience, at least in the traditional sense. And we don't care whether or not the foundations were laid at university or through self-teaching, even though there are countless resources that allow you to do this.
Any company which considers itself to be "modern" must focus on the following when they assess a senior programmer, i.e. during recruitment and promotion within the company:
– Experience, however not necessarily quantitative. It is important to have progressed by working in different projects. This means working with different technologies, building a project from scratch (not necessarily as a lead) or, obviously, critically assessing the work you did –six months ago or last week– and learning from its lessons. Working for ten years while repeating the same tasks is not the same as working for ten years and progressing as a developer.
– Technical skills (good practices). Let's forget about programming languages for a second. We must focus on good practices rather than code. For a developer to be senior, they must have some knowledge about design patterns, agile methodologies, architecture, object-oriented programming, version control and functional programming (if applicable); and knowing something about basic algorithms is always an advantage.
This sounds common place, doesn't it? However, these two points summarize the basis for setting the goal of achieving "seniority". The problem is how to actually do it.
How can you gain valuable experience?
We may have less control over this factor; however, it is possible to gain valuable experience if you make good decisions. Nowadays, there are countless new startups which grow from a more innovative culture; instead of taking the "easy" path of working for a major consulting firm, you can contribute to/learn more in a year from creating an innovative product from scratch. Many of these startups use "modern" technologies, and this is a good way of gaining experience in technologies which other companies do not dare to try.
However, increasing your experience must never take second place while you work as a developer. You can expand your knowledge with open software: Github is currently the biggest existing "catalog" of open-source code. Github contains numberless projects you can learn from and even participate in.
And don't forget your own pet project. Working on a project on your own helps you face challenges which push you forward in your career. Using new programming languages such as Scala, Go, Dart or Kotlin may be useful for the future.
How can you expand your basic skills to achieve seniority?
Programming languages are one of the fundamental tools of any developer. Consequently, you need to ensure you use them as well as you can. You need to go beyond simply learning syntax: you must learn how to use it efficiently and, most importantly, when to do it.
Can a senior programmer learn any language quickly? Naturally, this should be one of your goals. To achieve this, you need to have wide knowledge about design patterns, read Martin Fowler and his ideas about architecture with extreme care, and have strong Unit Testing foundations (any noteworthy language contains a Unit Testing framework).
The internet is a source of countless resources, from the BBVA API_Market e-books to all kinds of e-learning platforms.
Another excellent source of information is the Safari book online library and its extensive book catalog.
Images | istockphoto
Startups and existing companies in the process of digitization need a new set of digital tools to help them transform their businesses and get more in tune with their customers' needs. If possible, they should develop frictionless systems that do not create barriers to entry for the business, as occurs with some banking solutions.
A good cash flow management ultimately leads to more informed and wise financial decision making. Keeping operations up-to-date, knowing the cash flows well and discovering where there may be inconsistencies are just some of the processes that must be carried out on a daily basis to achieve this.
Taking a customer through the entire buying process until it is formalized is an arduous journey and one that faces the constant possibility of the customer leaving. However, there are ways to make the buying decision happen if you are given facilities such as agile, secure financing.