Changeset 2476eba for content


Ignore:
Timestamp:
Oct 14, 2022, 3:10:27 PM (2 years ago)
Author:
w96k <w96k.ru@…>
Branches:
master
Children:
11914cd
Parents:
de4a3db
Message:

Apply fixes from Andre

File:
1 edited

Legend:

Unmodified
Added
Removed
  • content/en/posts/web-stacks.org

    rde4a3db r2476eba  
    55* Technologies of web development
    66#+BEGIN_abstract
    7 In this article I'm going to categorize languages, frameworks, libraries
    8 and software by a criteria of usage such technologies at hired work. The
    9 article might be biased and irrational, be aware.
     7In this article I shall categorize languages, frameworks, libraries and
     8software by a criteria of usage such technologies at hired work. Be
     9aware that opinions expressed in the article might be biased and
     10irrational.
    1011#+END_abstract
    1112
    1213I work in the IT field as a web developer for many years, but cannot
    1314proudly claim myself as a professional. I don't know many things, I
    14 don't like to work in general, I don't like corporate IT culture and I
    15 don't like web development in particular, but I have an experience in
    16 that field, and it is much easier to dive into web development to earn
    17 money for a living than other IT fields or other professions at my
    18 location. I hope this text will be useful for someone who is outside of
    19 the field of web development to get a grasp of technologies to learn.
     15don't like corporate IT culture and I don't particularly like web
     16development. Still I have an experience in the field, and it is much
     17easier to dive into web development to earn money for a living than to
     18devote my time to other professions at my location. I hope this text
     19will be useful for someone who is outside of the field of web
     20development to get a grasp which technologies to learn.
    2021
    2122* What is tech stack
    2223#+BEGIN_abstract
    23 The tech stack is the mix of technologies (software, frameworks,
    24 libraries) that the project uses to implement a planned set of features.
     24A tech stack is a the mix of technologies (software, frameworks,
     25libraries) that the projects use to implement a planned set of features.
    2526#+END_abstract
    2627
    2728Knowing everything from your tech stack is not the only key to
    2829success. It can sound obvious, but social skills can play a more
    29 important role than your programming skills. Programming is a very
    30 social activity, everything you are going to use is built by other
    31 people, sometimes something breaks and you need to contact people that
    32 provide you the software you use, it is also important to communicate
    33 with your company's team and not bring yourself into conflict
    34 situations. And don't be that guy (or me), who hates something technical
    35 so much, that people get annoyed by you, it won't help you in any
    36 way. It can be seen as a suppression of your ego, but the truth is that
    37 hired work is more about collectivism than individualism.
    38 
    39 Next, I present the list of technologies you should know to work as a
    40 web developer. The list is not mandatary and you are not required to
    41 learn it on an expert level to get your job offer.
     30important role than your programming skills. Programming is a social
     31activity as most of what, everything you are going to use is built by
     32other people. Sometimes things break and you need to contact them. It is
     33also important to communicate well with your company's team to avoid
     34conflicts. And don't be that guy (me!), who hates something and gets
     35verbal about it in such a way. This doesn't help you in any way. It can
     36be seen as a suppression of your ego, but the truth is that hired work
     37is more about collectivism than individualism.
     38
     39Next, I present the list of technologies you should be comfortable with
     40to work as a web developer. The list is not mandatory and you are not
     41required to learn it on an expert level to get your job offer.
    4242
    4343* Technologies to learn
     
    4545familiarize yourself with them anyway. What I've discovered, is that
    4646most knowledge of some tech is transferable to other techs. For example,
    47 learning one web-framework helps you to learn other ones.
     47learning one web-framework helps you to learn others.
    4848
    4949** Text Editor
     
    5252
    5353*Most popular choices*
    54 - [[https://gnu.org/software/emacs/][Emacs]] / [[https://www.vim.org/][Vim]] (I recommend them for a long run)
     54- [[https://gnu.org/software/emacs/][Emacs]] / [[https://www.vim.org/][Vim]] (I recommend them in the long run)
    5555- Jetbrains IDE (proprietary)
    5656- VSCode (proprietary) 
     
    6262
    6363Proprietary means that source code is not available and probably it
    64 costs money to use and you as a user don't have control over it. You can
     64costs money, so you, as a user, don't have control over it. You can
    6565learn more why it is important on the [[https://gnu.org/philosophy/][GNU website]]. Such an important
    6666tool as a text editor should be free as in freedom for everyone.
     
    8888Each tech stack provides ORM. ORM allows you to operate your database
    8989"objects" as your programming language code without writing or
    90 minimazing writing raw SQL. It is quite rare, when you need to work with
     90minimizing writing raw SQL. It is quite rare when you need to work with
    9191pure SQL or the project doesn't use ORM at all. ORMs might be something
    9292from the list:
     
    141141** Unix-like OS
    142142You will probably work on Linux, variants of BSD systems, or macs. You
    143 need to familiarize with the system you use, different tasks require
    144 different degree of that skill, but knowledge of what you are using
     143need to familiarize with the system you use as different tasks require
     144different degrees of that skill, but knowledge of what you are using
    145145every day will be handy.
    146146
     
    148148your machine and learning it along the way. I recommend to starting with
    149149[[https://debian.org/][Debian GNU/Linux distribution]]. You can read [[https://www.debian.org/doc/manuals/debian-faq/][FAQs]], manuals about
    150 [[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
    151 will be present in your filesystem you can read them by jumping into
    152 /usr/share/docs folder or running ~info~ and ~man~ commands. I recommend
    153 reading it and exploring the Debian website. Also for learning Linux
    154 Arch Linux wiki is a good source of knowledge (Slackware and Gentoo
    155 wikis are good as well).
     150[[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
     151are will be present in your filesystem so you can read them by jumping
     152into /usr/share/docs folder or running ~info~ and ~man~ commands. I
     153recommend reading it and exploring the Debian website. Also for learning
     154Linux, Arch Linux wiki is a good source of knowledge (Slackware and
     155Gentoo wikis are good as well).
    156156
    157157[[[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]]]
     
    163163tool is to let your team quickly get the same environment as you. The
    164164point of docker as a deployment tool is to deploy the same environment
    165 that you developing in, it is important to have a reproducible
    166 production environment because catching bugs in 3 different environments
    167 (dev, staging, prod) suck a lot.
     165that you develop in. It is important to have a reproducible production
     166environment because catching bugs in 3 different environments (dev,
     167staging, prod) sucks.
    168168
    169169[[[https://en.wikipedia.org/wiki/Docker_(software)][Wikipedia: Docker]]]
     
    172172You need to be able to deploy your application to the production
    173173server. Good practice is to use a CI/CD pipeline. The CI/CD pipeline
    174 runs checks of your project in docker container and only if tests are
     174runs checks of your project in a docker container and when the tests are
    175175successful, the code deploys to production.
    176176
     
    192192computer science than OOP.
    193193
    194 Not everyone will degree with my definition, but patterns are needed to
     194Not everyone will agree with my definition, but patterns are needed to
    195195express by your programming language object system, which is impossible
    196196to express otherwise, because of some language limitations. It is very
     
    216216that you would make a mistake and will not understand what is going on,
    217217or where is an error. In that case, you will need a debugger. The
    218 debugger is usually can be part of your text editor environment and it
    219 is usually included in your programming environment alongside your
    220 interpreter / compiler. Some languages don't include a debugger, so you
    221 need to download it separately.
     218debugger is usually part of your text editor environment and it is
     219included in your programming environment alongside your interpreter /
     220compiler. Some languages don't include a debugger, so you need to
     221download it separately.
    222222
    223223The debugger allows you to step through your code and see the values of
    224224stack and heap, basically you get access to everything evaluated by your
    225225interpreter/compiler. It is very common practice to use such a thing
    226 when errors happen and I think, that it is a great way to learn how your
     226when errors happen and I think that it is a great way to learn how your
    227227language of choice works internally.
    228228
     
    261261providing ready to use graphical elements such as buttons, menus, lists,
    262262grids, tables and so on. Often you don't need to know CSS so well, it is
    263 okay to know just CSS framework.
     263okay to know just a CSS framework.
    264264
    265265CSS Frameworks:
     
    273273**** SASS/LESS
    274274CSS3 added some computing abilities introducing variables, calc and
    275 other features. Before that and because lack of some other features for
    276 better css code reuse people have made CSS preprocessors. The point it
    277 to write css-like code that compiles to real css, so you write less
     275other features. Before that and because it lacked some other features
     276for better css code reuse people have made CSS preprocessors. The point
     277it to write css-like code that compiles to real css, so you write less
    278278things twice. SASS is being used in many css libraries such as Twitter
    279279bootstrap.
     
    433433* Most popular programming languages
    434434Your choices are quite limited here. More jobs available, more chances
    435 to get that job. there will be different results in different areas. I
     435to get that job. There will be different results in different areas. I
    436436think that in most areas you will have a choice between Java, Python,
    437437and maybe PHP or Ruby. If you want to end up insane, there is also
     
    567567there to the official documentation of the thing you want to learn.
    568568
    569 When it comes to programming in general I recommend learning it doing
     569When it comes to programming in general I recommend learning it by doing
    570570test projects or just playing with the code. You can also use services
    571571like [[https://exercism.org/][Exercism]] or [[https://codewars.com/][Codewars]] to practice pure programming solving
     
    595595or other nonpopular in the industry mostly academic languages) is that
    596596mainstream programming on your job can feel very restrictive and less
    597 expressive. Also, you will probably learn, that many mainstream
    598 languages have lots of quirks or bad design decisions.
     597expressive. Also, you will probably learn that many mainstream languages
     598have lots of quirks or bad design decisions.
    599599
    600600* Conclusion
     
    609609way to get a job if you are just starting even tho it has a lot of
    610610downsides too, but that's a topic for another article.
     611
     612* Errata
     613- *<2022-10-14 Fri>* Typos are fixed, sentences have been
     614  rephrased. Thanks to Andre Gomes for proof-reading and editing.
Note: See TracChangeset for help on using the changeset viewer.