For people, asking questions is as natural as breathing. Some of them may be world-changing, some are mundane. We, the IT people, are no different. There are a lot of question marks but two of them are always current: what are the main problems in the IT industry and how to solve them? And though it’s impossible to write all of them down, we decided to pick a few and address them from our standpoint.
Security of computer systems
Sure, it’s a trendy topic nowadays, and the Internet is awash with it, but that doesn’t mean it isn’t serious. And I’m not even talking about advanced exploits – programmers are consciously creating various kinds of backdoors to make testing and debugging easier. Having superusers and uber-admins with full access to everything is like begging for data leaks, which are like one of the Egyptian plagues lately.
We use ready-to-go solutions, libraries and frameworks more and more often, and even if your own code is secure, we can’t be sure that the external libraries are too. On the other hand, there is a problem with low awareness of the people using our systems. It has long been known that the biggest problem that we – as programmers – may encounter is that moving, organic element between the chair and the computer, which is thoughtlessly typing on the keyboard.
It’s difficult to eliminate the risks connected to the security of our computer systems completely, but I am sure that we can take concrete steps to minimise it.
Firstly, we could create a separate unit within a company that would be responsible for security, software audits, processes and preparing standards for security purposes. What’s more, that unit could also create some kind of a whitelist of libraries which are relatively safe to use.
Secondly, we could perceive security problems as non-functional requirements or acceptance criteria from the perspective of functionalities or tasks done by a programmer.
Thirdly, we could conduct internal training seminars, presentations and knowledge exchanges, or even cooperate on this matter with other companies from the IT industry.
It’s hard to count the computer systems that have been, are being and will be created. There is a whole heap of software functions which must be maintained properly. Unfortunately, in the IT industry, such products as software age rapidly. Five or six years is a gigantic gap in IT.
Outdated solutions usually require older versions of computer systems, browsers, etc., and on one hand, this prevents their development and competitiveness, and on the other, creates problems regarding system security.
There is also another side to it – we, as programmers, would like to work on new, ambitious projects using the latest technologies. And this is simply not possible in the case described above.
Meanwhile, recruiters use all the newest and the trendiest terms and technologies in advertisements thoughtlessly, but in reality, we end up fixing some old stuff. It is not without reason that most programmers change their job because of an outdated project and a lack of space for self-development as a developer. At least for me, this is the biggest problem.
But someone has to maintain that old code, right? So… what can we do about that?
The first thing is systems’ architecture – creating solutions which are as modular as possible. Thanks to this, their particular elements may be replaced by newer ones over time. However, sometimes this is not possible – in such a case, it would be great to have a well-planned product or project lifecycle. Remember about forecasting the saturation stage and replacing the old solution with a new one. Of course, this should be done in advance – not when everything has collapsed and is no longer repairable.
It would be preferable if the programmers working on such a project were rotated out more frequently. Also, it’s a great idea to give them other development opportunities within the firm and during working hours. You guessed it – our SoftwareHut Speaking project is an example of that!
The problem expressed in the heading may be perceived in many dimensions. On one hand, the IT industry lacks specialists, and this situation is getting worse and worse. But on the other hand, specific companies find it hard to hire programmers who will provide added value. And keeping them aboard over time is even harder.
The easy yet not so simple solution? We need more programmers. But what does that look like in practice? Of course, we may encourage young people to study computer science in a different manner, but it’s not possible to persuade just anyone to make that hard decision.
We may ask ourselves: does a programmer really need a computer science degree? There are a lot of courses, training seminars and boot camps out there, and for sure, this is some kind of a solution. But in my opinion, it’s hard to call the people who complete these courses “specialists”.
Another solution? Automation. More and more tools are helping us to create computer systems without programming skills through friendly interfaces, i.e. e-commerce platforms, platforms for creating simple mobile applications. This trend will stay strong in the future, and these platforms will be more complex.
No, I don’t mean replacing programmers with artificial intelligence, because this idea is ridiculous.
What can we do about problems with hiring new programmers? It may be because of the methods of approaching them – sending offers everywhere through LinkedIn or cold e-mails will yield a rather low conversion rate. Instead, it is much better to engage in the life of the local community or organise initiatives like hackathons, contests or meetups.
All right, we approached them, but how can we encourage them to work for us? It is easy to find job offers that include “perks” like table football or game consoles as magnets for programmers. Is it enough? Well, I doubt that.
In my opinion, it’s better to show a portfolio of interesting projects done in the past or development opportunities at the company. What’s more, a well-organised internal community is a must for building a strong employer brand – organise integrations, lectures, courses, workshops, etc.
Oof, that’s all for now, but stay tuned for the next part, which will be published soon.