summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorw96k <w96k.ru@gmail.com>2022-10-14 15:10:27 +0400
committerw96k <w96k.ru@gmail.com>2022-10-14 15:10:27 +0400
commit2476ebaf83cc65b0575710e8769447ba74d61db0 (patch)
tree963d1ff3700bc5730f28f893a568c906100ccd67
parentde4a3db2ce50c2d0151bdac36fd6e835a9e8a8b2 (diff)
Apply fixes from Andre
-rw-r--r--content/en/posts/web-stacks.org112
1 files changed, 58 insertions, 54 deletions
diff --git a/content/en/posts/web-stacks.org b/content/en/posts/web-stacks.org
index 7033197..d0bc638 100644
--- a/content/en/posts/web-stacks.org
+++ b/content/en/posts/web-stacks.org
@@ -4,54 +4,54 @@
* Technologies of web development
#+BEGIN_abstract
-In this article I'm going to categorize languages, frameworks, libraries
-and software by a criteria of usage such technologies at hired work. The
-article might be biased and irrational, be aware.
+In this article I shall categorize languages, frameworks, libraries and
+software by a criteria of usage such technologies at hired work. Be
+aware that opinions expressed in the article might be biased and
+irrational.
#+END_abstract
I work in the IT field as a web developer for many years, but cannot
proudly claim myself as a professional. I don't know many things, I
-don't like to work in general, I don't like corporate IT culture and I
-don't like web development in particular, but I have an experience in
-that field, and it is much easier to dive into web development to earn
-money for a living than other IT fields or other professions at my
-location. I hope this text will be useful for someone who is outside of
-the field of web development to get a grasp of technologies to learn.
+don't like corporate IT culture and I don't particularly like web
+development. Still I have an experience in the field, and it is much
+easier to dive into web development to earn money for a living than to
+devote my time to other professions at my location. I hope this text
+will be useful for someone who is outside of the field of web
+development to get a grasp which technologies to learn.
* What is tech stack
#+BEGIN_abstract
-The tech stack is the mix of technologies (software, frameworks,
-libraries) that the project uses to implement a planned set of features.
+A tech stack is a the mix of technologies (software, frameworks,
+libraries) that the projects use to implement a planned set of features.
#+END_abstract
Knowing everything from your tech stack is not the only key to
success. It can sound obvious, but social skills can play a more
-important role than your programming skills. Programming is a very
-social activity, everything you are going to use is built by other
-people, sometimes something breaks and you need to contact people that
-provide you the software you use, it is also important to communicate
-with your company's team and not bring yourself into conflict
-situations. And don't be that guy (or me), who hates something technical
-so much, that people get annoyed by you, it won't help you in any
-way. It can be seen as a suppression of your ego, but the truth is that
-hired work is more about collectivism than individualism.
-
-Next, I present the list of technologies you should know to work as a
-web developer. The list is not mandatary and you are not required to
-learn it on an expert level to get your job offer.
+important role than your programming skills. Programming is a social
+activity as most of what, everything you are going to use is built by
+other people. Sometimes things break and you need to contact them. It is
+also important to communicate well with your company's team to avoid
+conflicts. And don't be that guy (me!), who hates something and gets
+verbal about it in such a way. This doesn't help you in any way. It can
+be seen as a suppression of your ego, but the truth is that hired work
+is more about collectivism than individualism.
+
+Next, I present the list of technologies you should be comfortable with
+to work as a web developer. The list is not mandatory and you are not
+required to learn it on an expert level to get your job offer.
* Technologies to learn
Some things you will use in most of your projects, so you are better to
familiarize yourself with them anyway. What I've discovered, is that
most knowledge of some tech is transferable to other techs. For example,
-learning one web-framework helps you to learn other ones.
+learning one web-framework helps you to learn others.
** Text Editor
Not sure if I need to write it, but you need a development environment
where you will write code, run tests and compile your project.
*Most popular choices*
-- [[https://gnu.org/software/emacs/][Emacs]] / [[https://www.vim.org/][Vim]] (I recommend them for a long run)
+- [[https://gnu.org/software/emacs/][Emacs]] / [[https://www.vim.org/][Vim]] (I recommend them in the long run)
- Jetbrains IDE (proprietary)
- VSCode (proprietary)
@@ -61,7 +61,7 @@ where you will write code, run tests and compile your project.
- other editors and IDEs
Proprietary means that source code is not available and probably it
-costs money to use and you as a user don't have control over it. You can
+costs money, so you, as a user, don't have control over it. You can
learn more why it is important on the [[https://gnu.org/philosophy/][GNU website]]. Such an important
tool as a text editor should be free as in freedom for everyone.
@@ -87,7 +87,7 @@ the complexity of writing and running SQL.
*** ORM
Each tech stack provides ORM. ORM allows you to operate your database
"objects" as your programming language code without writing or
-minimazing writing raw SQL. It is quite rare, when you need to work with
+minimizing writing raw SQL. It is quite rare when you need to work with
pure SQL or the project doesn't use ORM at all. ORMs might be something
from the list:
- [[https://hibernate.org/][Hibernate]]
@@ -140,19 +140,19 @@ have limitation to implement such functionality, for example PHP.
** Unix-like OS
You will probably work on Linux, variants of BSD systems, or macs. You
-need to familiarize with the system you use, different tasks require
-different degree of that skill, but knowledge of what you are using
+need to familiarize with the system you use as different tasks require
+different degrees of that skill, but knowledge of what you are using
every day will be handy.
There are many ways to learn it, but I recommend trying to install it on
your machine and learning it along the way. I recommend to starting with
[[https://debian.org/][Debian GNU/Linux distribution]]. You can read [[https://www.debian.org/doc/manuals/debian-faq/][FAQs]], manuals about
-[[https://www.debian.org/releases/stable/amd64/index.en.html][installation]] and [[https://www.debian.org/doc/manuals/debian-reference/][how to use the system]]. Docs are very useful, they are
-will be present in your filesystem you can read them by jumping into
-/usr/share/docs folder or running ~info~ and ~man~ commands. I recommend
-reading it and exploring the Debian website. Also for learning Linux
-Arch Linux wiki is a good source of knowledge (Slackware and Gentoo
-wikis are good as well).
+[[https://www.debian.org/releases/stable/amd64/index.en.html][installation]] and [[https://www.debian.org/doc/manuals/debian-reference/][how to use the system]]. Docs are very useful and they
+are will be present in your filesystem so you can read them by jumping
+into /usr/share/docs folder or running ~info~ and ~man~ commands. I
+recommend reading it and exploring the Debian website. Also for learning
+Linux, Arch Linux wiki is a good source of knowledge (Slackware and
+Gentoo wikis are good as well).
[[[https://en.wikipedia.org/wiki/Unix][Wikipedia: Unix]]] | [[[https://en.wikipedia.org/wiki/Linux][Wikipedia: Linux]]] | [[[https://en.wikipedia.org/wiki/Linux_distribution][Wikipedia: Linux distribution]]]
@@ -162,16 +162,16 @@ both). You might want to get your project working in a container for
better accessibility by your team. The point of docker as a development
tool is to let your team quickly get the same environment as you. The
point of docker as a deployment tool is to deploy the same environment
-that you developing in, it is important to have a reproducible
-production environment because catching bugs in 3 different environments
-(dev, staging, prod) suck a lot.
+that you develop in. It is important to have a reproducible production
+environment because catching bugs in 3 different environments (dev,
+staging, prod) sucks.
[[[https://en.wikipedia.org/wiki/Docker_(software)][Wikipedia: Docker]]]
** CI/CD and Deployment
You need to be able to deploy your application to the production
server. Good practice is to use a CI/CD pipeline. The CI/CD pipeline
-runs checks of your project in docker container and only if tests are
+runs checks of your project in a docker container and when the tests are
successful, the code deploys to production.
There is also an old approach with logging into your server via a small
@@ -191,7 +191,7 @@ working with many people. If you ask me, I would say that [[https://en.wikipedia
[[https://en.wikipedia.org/wiki/Modular_programming][Modules]] are much more game-changing tech improvements that happened in
computer science than OOP.
-Not everyone will degree with my definition, but patterns are needed to
+Not everyone will agree with my definition, but patterns are needed to
express by your programming language object system, which is impossible
to express otherwise, because of some language limitations. It is very
true for very static and not expressive languages like PHP or Java and
@@ -215,15 +215,15 @@ You have a chance to work with others people's code, so you have a
chance to get confused by a lot of stuff going on. Also, it is possible
that you would make a mistake and will not understand what is going on,
or where is an error. In that case, you will need a debugger. The
-debugger is usually can be part of your text editor environment and it
-is usually included in your programming environment alongside your
-interpreter / compiler. Some languages don't include a debugger, so you
-need to download it separately.
+debugger is usually part of your text editor environment and it is
+included in your programming environment alongside your interpreter /
+compiler. Some languages don't include a debugger, so you need to
+download it separately.
The debugger allows you to step through your code and see the values of
stack and heap, basically you get access to everything evaluated by your
interpreter/compiler. It is very common practice to use such a thing
-when errors happen and I think, that it is a great way to learn how your
+when errors happen and I think that it is a great way to learn how your
language of choice works internally.
[[[https://en.wikipedia.org/wiki/Debugger][Wikipedia: Debugger]]]
@@ -260,7 +260,7 @@ CSS is to make your html layouts pretty, to make your buttons beautiful
and the grid is clear. CSS frameworks help you to write less css by
providing ready to use graphical elements such as buttons, menus, lists,
grids, tables and so on. Often you don't need to know CSS so well, it is
-okay to know just CSS framework.
+okay to know just a CSS framework.
CSS Frameworks:
- [[https://getbootstrap.com/][Twitter Bootstrap]]
@@ -272,9 +272,9 @@ CSS Frameworks:
**** SASS/LESS
CSS3 added some computing abilities introducing variables, calc and
-other features. Before that and because lack of some other features for
-better css code reuse people have made CSS preprocessors. The point it
-to write css-like code that compiles to real css, so you write less
+other features. Before that and because it lacked some other features
+for better css code reuse people have made CSS preprocessors. The point
+it to write css-like code that compiles to real css, so you write less
things twice. SASS is being used in many css libraries such as Twitter
bootstrap.
@@ -432,7 +432,7 @@ classes and don't make them leak memory that much.
* Most popular programming languages
Your choices are quite limited here. More jobs available, more chances
-to get that job. there will be different results in different areas. I
+to get that job. There will be different results in different areas. I
think that in most areas you will have a choice between Java, Python,
and maybe PHP or Ruby. If you want to end up insane, there is also
Javascript, but it is not as mature for the backend as other
@@ -566,7 +566,7 @@ workshops, most information is available for free for everyone. Just
read the Wikipedia links I provided in the article and follow the links
there to the official documentation of the thing you want to learn.
-When it comes to programming in general I recommend learning it doing
+When it comes to programming in general I recommend learning it by doing
test projects or just playing with the code. You can also use services
like [[https://exercism.org/][Exercism]] or [[https://codewars.com/][Codewars]] to practice pure programming solving
problems. Also, there is a great web resource for complete beginners
@@ -594,8 +594,8 @@ There are many free sources to learn you just need to invest your time
into them. The downside of learning LISP (or let's say SML and Haskell
or other nonpopular in the industry mostly academic languages) is that
mainstream programming on your job can feel very restrictive and less
-expressive. Also, you will probably learn, that many mainstream
-languages have lots of quirks or bad design decisions.
+expressive. Also, you will probably learn that many mainstream languages
+have lots of quirks or bad design decisions.
* Conclusion
It is also possible to get a job with a less popular stack, but if you
@@ -608,3 +608,7 @@ and then going to the docs of your web framework/library.
Demand for web developers is huge and in my opinion, it is the easiest
way to get a job if you are just starting even tho it has a lot of
downsides too, but that's a topic for another article.
+
+* Errata
+- *<2022-10-14 Fri>* Typos are fixed, sentences have been
+ rephrased. Thanks to Andre Gomes for proof-reading and editing.