Wednesday, January 1, 2020

Community Culture


This year we are ending a decade of profound transformations in the IT&C industry. On the one hand important software tools like .net Core and React have been listed under the MIT license, on the other hand well-known companies have reshaped their business models (Alphabet, Facebook) or have been acquired (Red Hat, Tableau etc.).

It looks like the big guys are diversifying their personnel and processes in order to offer better services, and are trying to adapt themselves to a rapidly changing economic context.

In the meantime a great number of IT startups are doing their best to attract classic investors,  crowd-funding or even venture capital, and stuck companies with experienced engineers are trying to reinvent themselves by taking over the clients switching from classic hosting to managed cloud hosting.

As a freelancer I'm up to date with the changing list of roles outsourced by companies in hi-tech countries. While in the first part of the decade numerous digital agencies and small telcos were looking for cheap, generalist workforce in order to preserve their competitiveness, for a couple of years the senior specialists (full stack developers, QA team leads, infrastructure engineers) have been more and more in demand.

This decade I've learned that the software tools, just like the hardware and all other products are evolving towards diversification and specialization. While 30-40 years before a software developer used to be considered really good when mastering a single programming language, nowadays the companies are looking for professionals with T-shaped skills.

This decade the biggest cloud hosting companies have learned that they have to offer multiple operating systems and tool sets, because the "Linux vs Windows" dispute is just ridiculous from the point of view of system integrators.

In a world where system software, programming and scripting languages are all just tools with their pros and cons, the project requirements are driving the right mix of hardware and software to be used.

Emotional debates about why a particular software is "good" or "bad" are missing the point: for what?  A startup with around 200 hits per hour does not always need a middleware with support for asynchronous operations, or a (No)SQL engine ready to scale horizontally.

When having a well modularized software project architecture, there is possible to change step by step the middleware, the database, the client apps.

The real problem is choosing between comparable tools like C# and F#,  Java and Scala, Python and Ruby etc. What I've learned during my 15+ years spent around open-source tools is that the community culture is what matters the most.

If you can identify yourself with the decisions, results and working style of the community leader(s), and you are feeling happy with the communication channels, then chances are that their project is a good fit for your product or service.

As always, while your job skills are enhanced, you are appreciated at work, by family and friends, the community is good for you. When you are experiencing persistent communication problems, infrequent updates, quality degradation, there are two main possibilities: try to change the negative trend to positive by contributing, or research and choose a different open-source project.

It can happen that your requirements have changed, or you have an opportunity to take your career to the next level - then again, be grateful for the good moments and for your growth, and follow your calling.