Nobody ever tells you enough: you need to know the fundamentals. Ok - what am I talking about? I would rather limit myself to talking about computer science, something I really do not know about.
As this blog says, I’m an IT guy, and I reiterate that…I do not know anything about computer science. It is of course a fault of mine, at least in part, but I think it is also due to the time we live, the opportunities that surround me, the needs of the market, an endless amount of statistics about the world, the number people who live, the kind of people who are gone, the people who govern, the people who don’t, the available types of work, the new laws, the old laws, the borders, netflix-facebook-twitter-snapchat-telegram-instagram-pinterest-reddit-batman, certainly also because of Tweedledum and Tweedledee, and so many others things. I think I will go through some of the reasons that I feel are the most important ones to explain why I feel a lack of knowledge and why I am disappointed about it - more in general, about the global lack of fundamentals.
What fundamentals include in my opinion? It depends on the role you have in IT, but basically it concerns the knowledge of basic concepts and ability to use them to solve complex problems (networks, algorithms, data structures), the interest in updating (don’t do the same thing equal two subsequent different times), the passion for the subject (don’t be superficial and interested trying to understand things in depth), the ability to write code - whatever type it is, from application’s to infrastructure’s - that is legible and respects strict syntactic formalisms (don’t take anything for granted). This type of characteristics is normally accompanied by the ability to participate actively in open source projects, to write avalanches of open source code, to find people who can help you recover lost fundamentals and learn new best practices: in the end, I believe it is difficult to find these characteristics, and more than one time I realized I do not have them all. For instance, I recently discover this repository meant “for new software engineers or those switching from software/web development to software engineering (where computer science knowledge is required). If you have many years of experience and are claiming many years of software engineering experience, expect a harder interview. If you have many years of software/web development experience, note that large software companies like Google, Amazon, Facebook and Microsoft view software engineering as different from software/web development, and they require computer science knowledge.” In that readme you can find a lot of source of what I means for fundamentals.
Let’s start with this assumption: computer science - I mean, a simple f***ng consumer pc with text editor and stop, available for people and not nerds in a garage - was born after the birth of my parents. There where no internet for them, no wikipedia, no *chat* at all - because they hadn’t cell phone or smartphone in their teenage years - foundamentally, none of what is almost necessarily part of our lives today. I often find myself asking “what the hell! how did you survive?!?” mostly because today I can’t live without all of this stuff, and I would be cut out of any set I belong to - besides the fact that I would be without a job. I think that the answer lies in the same time they lived: fourty years ago there wasn’t almost anything in my field - and in so many others because (again) I’m in IT - so that people was pushed to study, work, approach themselves, engineer themselves, invent themselves, sell themselves in a totally different way from what happens today. Some time ago a guy told me this story: he studied Computer Science at University and he followed a class called Operating Systems. The final project was writing an operating system1. So it was in many other fields: the final project for obtaining a diploma as an electronic expert was building a radio or a set of strobe lights, in both case starting from nothing or just a book and some savings to buy components. Only God knows what was required to obtain a specialization in Medicine and Surgery2. They tried, even without hope, because they had no alternative. They succeeded - I like to believe - because they were forced to deal with the fundamentals in their respective fields of study. The point is (almost) all the (smart) people of the previous generation, with respect to mine generation, are able to do things by themself, without delegate goals to others; I am upset about this, I really envy them, not so much because they didn’t have all the comforts and tools I studied / grow up / played with, but mostly because they had no choice! I truly think this helped them a lot. Fourty here ago, experts had fundamentals: they got an enormous amount of information, and study a lot to fix the fundamental concepts in memory. Today this is not true anymore: today, an expert is someone who can filter the informations, which are redundant and often wrong. These key concepts are literally buried under layers of complex research, evolutions, tools, opinions, articles and books. In the end, you are an expert if you are able to pass the witness in the case you have no time to fill your lack of fundamentals in a particular field.
In a sense, having fundamentals implies having ability to get things done, without asking to many others. Let’s move one step forward. I am from Italy, so I don’t want to talk bad about Italy - I know it’s a very Italian move (n.d.r.) and I am proud to be Italian (I am more an IT guy than a complete ITalian guy XD): I’d prefer to stay neutral. But, I feel I am not the only one who don’t have enough key concepts, there’s a global lack in the air. In fact, from a working perspective, even if you can find opportunities to grow up from a technical point of view, you have to deal with requirements and this is a huge problem. The requirements for a professional are often 1) too high 2) too low, and this is a problem in both case. I remember a conversation with a friend of mine “Look at this job post: to have experience with all this technologies you have to be a bicentennial, and even in this case you woudn’t be able to be a master of all of these technologies”. I read - more then one times - impossible requirements to satisfy, such as “working experience with technology A 10+ years” with A a technology that is, for instance, 4 years old. I believe this happens because there is no a capillary knowledge of those basic concepts necessary to filter the huge amount of information and technology around the most recent and modern things. The point is: if you are a professional who is tired of reading these kind of job offers, sooner or later you have to fill your lack of fundamentals.
Back to job post requirements, I told about two different scenario: too high and too low. Let’s talk about that. In the first scenario, I think recruiters and/or companies know about this boring fundamentals story and want professional able to handle really complex questions. This often happens for positions and selection in big companies, who have to deal with a huge number of resumes and find nice to say: “ok, you don’t have sufficient key concepts, please study to acquire them, then return back to us if you want to have an opportunity”. The problem in this scenario is that lots of talended professional have to be excluded because a big efforts are required from them to meets - too high - requirements: these places around the world prefer professional already up and running, I think mainly because they have no time to lose - but I prefer thinking because they have always a lot of choice. In the second scenario, more priority is given to the ability to learn than skills you already have (really cool if you learn fast) but…almost everytime, this is done without a full awareness about the importance of fundamentals. More in detail, the world is often ultra-professional: if I look for someone who knows / is able to use a technology, it seems almost obvious that he has fundamentals in its cultural background. Nothing more wrong, I say. The recruiters and companies that do not require inbound technical skills, haven’t a clear vision of the lack of fundamentals inside: this, referring to the when-paragraph, implies that the key concepts are not necessary and therefore that the company is not really able to move independently. It seems there is no solution to select a pro with fundamentals, because if you ask too much, you end up exluding talended professionals and if you don’t ask at all, it means you don’t provide a place to learn from, and thus means a lack of knowledge that will not attract talented professional. However, this confirms that if you are a professional, you have no choice: you need to know the fundamentals.
To summarize, from a company perspective seems that looking too much for fundamentals implies accepting the risk to lose talended professionals, and don’t check at all for the lack of knowledge suggests that, besides not having the fundamentals (and thus accepting the fact the company is not indipendent in what is doing), it doesn’t provide a place to learn from, so it is not attractive for talented professional. Let’s move one step forward. Since I started working, but even during my years of studies, I realized that any organization of any type, at some point, need to be more innovative. What is different across different place I work is the number of hoops that a person have to jump through to get innovation done. I simply don’t want to be a long-suffering and patient diplomat in order to get a potentially creative new product developed: I don’t want to manage this kind of stuff - I mean, I have already to deal with my f***ng lack of fundamentals. This kind of effort often takes a combination of tenacity and political skills that most professional… just don’t have: I think that often management processes work against the company’s interests themself. Why this point is related to the lack of fundamentals problem? Because, again, I believe there’s no a full awareness about the process needed in a company to let employees follow and explore their idea, test key assumptions and realize a successful products. I believe that management lacks the fundamentals: I think this inability is linked to the importance given to funds, priorities, goals, objectives, all elements the leads to incorrect assessments if the key concepts are missing. You don’t have to be courageous or intelligent to make innovative decisions: you only have to fill the lack of fundamentals.
Thank you everybody for reading!