Mostly everyone noticed already that change and evolution of
modern IT industry are happening so quickly that it became harder
to keep up with it. Rich UI with functionality similar to operating
systems replaced static web pages. JavaScript and CSS became
omnipresent. Websites and other applications evolve more than one
can imagine because more and more people discard the use of
stationary computers in favour to mobile solutions. At least
earlier the sites could be rolled on the local computer, however,
nowadays everything’s on the cloud. And even databases they started
to progressively adopt the domain form from the table form. There
is an overflow of legends about the waterfall model, so the
majority started to use Agile development methodology. And that
happens everywhere.
So everyone at least once felt like a hamster in a wheel.
It feels like even if you’re studying all new technologies they
seem mushrooming too much. And also, the rate of appearance is
approximately equal to the disappearance of them for the majority
forever. But someone dips into them for a rather long time waiting
for the wind of change.Everything happens so quickly that if you stop to rest for a
couple of minutes, you can be late to catch up, but if one will be
in a constant tension it will lead to burning out and an overdose
of IT technologies, concepts and approaches. And everyone who feels
that would want to keep both feet on the ground.
If one will look more closely at all these things, and not some
separate stuff, some questions might appear.
The approaches in these technologies – how new are they?
Is it just me or I’ve seen them somewhere?
Why is this technology problem here solved by introducing
something new?
Why does it bring us boundaries that are hard to get rid of? And
every time something goes wrong or the problem is not solved by
this new technology you’re thrown in a cold sweat?
Is it impossible to find an answer on Stack Overflow (just don’t
tell me that you’re not looking for an answer there first of all),
and it will have to spend hours, if not days to understand how this
new tool, that consists of a dozen of old tools, works?
Looks like these are rhetorical questions.
Technologies become more complex and evolve in order to meet new
demands, and you have to deal with it. As long as technologies
don’t make a great step forward it’s possible to catch up.
And what about keeping both feet on the ground?
Well, that will be fundamental knowledge. You can easily forget
the API of some new technology, but not the basic principles and
foundation. It’s like if you know how to swim with one style then
with proper physical preparation and desire you can definitely
master any other swimming style.
And it’s not like you shouldn’t learn new products, but at least
not to spend 100% of the time on them. A small amount would
suffice. The main point is to get a grip on the basics.
And as you know there is a lot of basic knowledge. One shouldn’t
limit himself to something like knowing definitely your server
programming language, OOP, HTTP, SQL, JavaScript, HTML, CSS, the
system of your version, your IDE and so on and so forth.
It’s better to study something that is taught only in
universities like high-order math, algorithms, the law of
probability, mathematical statistics, mathematical methods of
operations’ research etc.
And while thinking about all that you can ask yourself a
question: do I need all these just to live with that everyday
routine? Just to correct some formats, fix simple bugs and write
ordinary requests into the database? Experience has shown that the
answer is no – it’s not necessary.
Then why in the interviews are you asked about things that you
so rarely meet? What need are in these logical problems and general
tasks or math and data structure questions? Is there any particular
reason why such companies as Google, Amazon or others focus on
that?
We can assume that the employer apart from you yourself is
concerned not about your memorizing ability and not even the
knowledge of all new API. In other words, it’s your mind that is
estimated: intellectual prowess or your minds flexibility meaning
whether you will be able to learn new thing rather quickly, or for
example do you have the ability to keep the apples and oranges
separate, which is very important with such a great amount of old
and new technologies.
So, what will we get from some of the basics?
Let’s do a brief review.
Mathematics: algebra and geometry will be the
first steps in logical thinking. A long time ago Aristotle
described logic foundations, and later on, it influenced a lot of
Greek philosophers and mathematicians. It’s not always that easy to
understand what has caused a certain bug or some problem in the
system, and the mathematical logics first of all help to develop
such skills.
Physics expand our general knowledge about
the Universe. Majority of nerds have heard about Schrödinger’s cat
or that a particle can turn up in any part of the Universe at any
time, but few understand what that means. Physics teaches us
critical thinking – to distinguish the achievable things from the
unattainable.
Probability theory and mathematical statistics:
it’s hard to imagine modern systems without a huge amount of
events. Big data here and there. And so with such pile of events,
there is always the need to analyze them. If the kind of normal
distribution is not the same – it’s time to sound the alarm. But if
it is just some schedule for you, then next time nobody will even
show it to you.
Data Structures: the data is everywhere, and it
needs to be stored somewhere. But we already have standard
structures like lists and maps! Experience has shown that abilities
start to be lacking at the most inappropriate moment, and to
quickly eliminate it one needs to know the alternatives, to know
where they are already being used – and all this can help at the
most unexpected moment.
Algorithms: this is the next step in logic. And
if the mathematical theorems did not assume special variants, the
algorithms on the other way introduce the concept of complexity,
the problem of a choice that would be optimal for your task. This
will help you to learn how to compare alternatives, weighing the
pros and cons.
Databases: you can quickly learn how to write
requests, but it will be significantly harder to project them. To
do it you need to be able to analyze the subject area, to know how
to link properly the facts and to create links between them. There
is a possibility that you simply won’t get such a chance if you
have not been familiar with this before and have not heard about
normal forms.
Computer Networks: we are no longer surprised
by the fact that even the simplest program requires an Internet
connection, and in general, most of our life flows there. But in
most cases, we cannot explain how our browser finds a specific
website, how the computer connects to another, and why do we need
other protocols besides http / https.
Electrical Engineering: we used to take
new technology for granted, but did anyone even think how does it
work? What interesting things can NPN- and PNP-transitions give us
and what transistors bring to our civilization?
Mathematical Methods of Operations’ Research:
to be able to search for an optimal solution is something that many
do not have; most people make decisions on intuition. But it turns
out that there are some approaches that will help you in this
difficult matter.
System Designing: everyone has heard about
GRASP-patterns, that Coupling should be low, and Cohesion – high.
But to hear is one thing, and to understand and even to do is quite
another.
Patterns/Antipatterns: like any dentist should
know all the typical methods of dentistry, furthermore, mistakes
that could be made in the process, so you should know the vast
majority of patterns and anti-patterns.
And then the next time, when there will be a need to understand
some new thing, you will look not only at the API but also in
the very essence of technology. And then you can tell yourself that
you have a better option than spending your time on it.
Lots realized only at a later age that they had been
superficially skeptical of many disciplines at university. Do not
repeat their mistakes and do not run after big money while you are
at university, but study the basics and it will pay off with
interest!
Author
Test Automation Engineer
References
- ^
Maria Kalinichenko
(strongqa.com)
Read more https://strongqa.com/blog/posts/2017/9/why-learn-the-basics