Over the past two years I have had the opportunity to teach university students from all over the world about software architecture design and quality analysis. During this time I have received repeated questions on what to study to become a successful professional in the field of software engineering. Often a follow up question is: Should I learn this technology/library or this other competing one.
Here’s a summary of my answer to those students.
- Study and learn many different technologies, algorithms and programming paradigms
- Acquiring new tools and techniques is a must to get ahead and stay ahead.
- Study many different real systems
- Study and learn from the widely acknowledged successful sw. architectures.
- Especially, understand the principles applied, the context of application, the constraints of the domain and the value created
- Tinker and experiment
- Play around with as much projects, products and technologies you manage to get hold of, if only for a little while.
- It does not have to result in a completed show-off project, in fact, it does not have to result in anything other than you having a bit of fun, with stuff you never tried before.
- Learn some basic economics
- Enough to understand investment calculus, ROI, net-present-value, book-keeping basics like cost and payment, income and revenue, profit and loss.
- You need this to become a bridge builder between stakeholders, in the end you need to understand and express the value you create to make all stakeholders aware.
- Engage in situations where you lead other people, and seek to work for the best leaders around.
- observe and understand what the leaders you work for are concerned with
- observe leaders and act lika a leader yourself
- With seniority your accomplishments will be through others, both technical and non-technical persons.
- Build your network in both software and other domains
- The future is full of higly competent people that knows software,
- Get ahead by having a broad knowledge of many domains and deep knowledge in a few
- Write lots of real production code and maintain it for some time
- There are no shortcuts around this.
But above all these, is to stay curious and to search for new insights.Every day, …Every week,Every monthEvery fall and springEvery year