Changeset 2476eba for content/en/posts/web-stacks.org
- Timestamp:
- Oct 14, 2022, 3:10:27 PM (2 years ago)
- Branches:
- master
- Children:
- 11914cd
- Parents:
- de4a3db
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
content/en/posts/web-stacks.org
rde4a3db r2476eba 5 5 * Technologies of web development 6 6 #+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. 7 In this article I shall categorize languages, frameworks, libraries and 8 software by a criteria of usage such technologies at hired work. Be 9 aware that opinions expressed in the article might be biased and 10 irrational. 10 11 #+END_abstract 11 12 12 13 I work in the IT field as a web developer for many years, but cannot 13 14 proudly 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 I15 d on't like web development in particular, but I have an experience in16 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 oftechnologies to learn.15 don't like corporate IT culture and I don't particularly like web 16 development. Still I have an experience in the field, and it is much 17 easier to dive into web development to earn money for a living than to 18 devote my time to other professions at my location. I hope this text 19 will be useful for someone who is outside of the field of web 20 development to get a grasp which technologies to learn. 20 21 21 22 * What is tech stack 22 23 #+BEGIN_abstract 23 The tech stack isthe mix of technologies (software, frameworks,24 libraries) that the project usesto implement a planned set of features.24 A tech stack is a the mix of technologies (software, frameworks, 25 libraries) that the projects use to implement a planned set of features. 25 26 #+END_abstract 26 27 27 28 Knowing everything from your tech stack is not the only key to 28 29 success. 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. 30 important role than your programming skills. Programming is a social 31 activity as most of what, everything you are going to use is built by 32 other people. Sometimes things break and you need to contact them. It is 33 also important to communicate well with your company's team to avoid 34 conflicts. And don't be that guy (me!), who hates something and gets 35 verbal about it in such a way. This doesn't help you in any way. It can 36 be seen as a suppression of your ego, but the truth is that hired work 37 is more about collectivism than individualism. 38 39 Next, I present the list of technologies you should be comfortable with 40 to work as a web developer. The list is not mandatory and you are not 41 required to learn it on an expert level to get your job offer. 42 42 43 43 * Technologies to learn … … 45 45 familiarize yourself with them anyway. What I've discovered, is that 46 46 most knowledge of some tech is transferable to other techs. For example, 47 learning one web-framework helps you to learn other ones.47 learning one web-framework helps you to learn others. 48 48 49 49 ** Text Editor … … 52 52 53 53 *Most popular choices* 54 - [[https://gnu.org/software/emacs/][Emacs]] / [[https://www.vim.org/][Vim]] (I recommend them for along run)54 - [[https://gnu.org/software/emacs/][Emacs]] / [[https://www.vim.org/][Vim]] (I recommend them in the long run) 55 55 - Jetbrains IDE (proprietary) 56 56 - VSCode (proprietary) … … 62 62 63 63 Proprietary means that source code is not available and probably it 64 costs money to use and you as a userdon't have control over it. You can64 costs money, so you, as a user, don't have control over it. You can 65 65 learn more why it is important on the [[https://gnu.org/philosophy/][GNU website]]. Such an important 66 66 tool as a text editor should be free as in freedom for everyone. … … 88 88 Each tech stack provides ORM. ORM allows you to operate your database 89 89 "objects" as your programming language code without writing or 90 minim azing writing raw SQL. It is quite rare,when you need to work with90 minimizing writing raw SQL. It is quite rare when you need to work with 91 91 pure SQL or the project doesn't use ORM at all. ORMs might be something 92 92 from the list: … … 141 141 ** Unix-like OS 142 142 You will probably work on Linux, variants of BSD systems, or macs. You 143 need to familiarize with the system you use ,different tasks require144 different degree of that skill, but knowledge of what you are using143 need to familiarize with the system you use as different tasks require 144 different degrees of that skill, but knowledge of what you are using 145 145 every day will be handy. 146 146 … … 148 148 your machine and learning it along the way. I recommend to starting with 149 149 [[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 are151 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 re ading it and exploring the Debian website. Also for learning Linux154 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 151 are will be present in your filesystem so you can read them by jumping 152 into /usr/share/docs folder or running ~info~ and ~man~ commands. I 153 recommend reading it and exploring the Debian website. Also for learning 154 Linux, Arch Linux wiki is a good source of knowledge (Slackware and 155 Gentoo wikis are good as well). 156 156 157 157 [[[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]]] … … 163 163 tool is to let your team quickly get the same environment as you. The 164 164 point of docker as a deployment tool is to deploy the same environment 165 that you develop ing in, it is important to have a reproducible166 production environment because catching bugs in 3 different environments 167 (dev, staging, prod) suck a lot.165 that you develop in. It is important to have a reproducible production 166 environment because catching bugs in 3 different environments (dev, 167 staging, prod) sucks. 168 168 169 169 [[[https://en.wikipedia.org/wiki/Docker_(software)][Wikipedia: Docker]]] … … 172 172 You need to be able to deploy your application to the production 173 173 server. Good practice is to use a CI/CD pipeline. The CI/CD pipeline 174 runs checks of your project in docker container and only iftests are174 runs checks of your project in a docker container and when the tests are 175 175 successful, the code deploys to production. 176 176 … … 192 192 computer science than OOP. 193 193 194 Not everyone will degree with my definition, but patterns are needed to194 Not everyone will agree with my definition, but patterns are needed to 195 195 express by your programming language object system, which is impossible 196 196 to express otherwise, because of some language limitations. It is very … … 216 216 that you would make a mistake and will not understand what is going on, 217 217 or 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 it219 i s usually included in your programming environment alongside your220 interpreter / compiler. Some languages don't include a debugger, so you 221 need todownload it separately.218 debugger is usually part of your text editor environment and it is 219 included in your programming environment alongside your interpreter / 220 compiler. Some languages don't include a debugger, so you need to 221 download it separately. 222 222 223 223 The debugger allows you to step through your code and see the values of 224 224 stack and heap, basically you get access to everything evaluated by your 225 225 interpreter/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 your226 when errors happen and I think that it is a great way to learn how your 227 227 language of choice works internally. 228 228 … … 261 261 providing ready to use graphical elements such as buttons, menus, lists, 262 262 grids, tables and so on. Often you don't need to know CSS so well, it is 263 okay to know just CSS framework.263 okay to know just a CSS framework. 264 264 265 265 CSS Frameworks: … … 273 273 **** SASS/LESS 274 274 CSS3 added some computing abilities introducing variables, calc and 275 other features. Before that and because lack of some other features for276 better css code reuse people have made CSS preprocessors. The point it277 to write css-like code that compiles to real css, so you write less275 other features. Before that and because it lacked some other features 276 for better css code reuse people have made CSS preprocessors. The point 277 it to write css-like code that compiles to real css, so you write less 278 278 things twice. SASS is being used in many css libraries such as Twitter 279 279 bootstrap. … … 433 433 * Most popular programming languages 434 434 Your choices are quite limited here. More jobs available, more chances 435 to get that job. there will be different results in different areas. I435 to get that job. There will be different results in different areas. I 436 436 think that in most areas you will have a choice between Java, Python, 437 437 and maybe PHP or Ruby. If you want to end up insane, there is also … … 567 567 there to the official documentation of the thing you want to learn. 568 568 569 When it comes to programming in general I recommend learning it doing569 When it comes to programming in general I recommend learning it by doing 570 570 test projects or just playing with the code. You can also use services 571 571 like [[https://exercism.org/][Exercism]] or [[https://codewars.com/][Codewars]] to practice pure programming solving … … 595 595 or other nonpopular in the industry mostly academic languages) is that 596 596 mainstream programming on your job can feel very restrictive and less 597 expressive. Also, you will probably learn , that many mainstream598 languageshave lots of quirks or bad design decisions.597 expressive. Also, you will probably learn that many mainstream languages 598 have lots of quirks or bad design decisions. 599 599 600 600 * Conclusion … … 609 609 way to get a job if you are just starting even tho it has a lot of 610 610 downsides 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.