ZTM: JavaScript Advanced Concepts
Good morning,
My journey as a developer began in Jan 2022. I was, kinda, forced to make a “career switch†since my Cuban diploma as master in sociocultural anthropology has little value in The Netherlands. I could choose to do poor qualified job my whole life, payment is alright, enough to pay the bills and help a little bit my parents in “The Rock†(Cuba is ruled by a totalitarian regime)
Many people have done that... unavailable to exercise their profession... no shame in that. To get a qualified job could be a true challenge in the Netherlands. If you are located outside the “randsteden†(important cities like Amsterdam, Rotterdam, Utrecht and The Hague), it would require to master Dutch language in order to have a real chance to compete for a middle class job... and even speaking Dutch at native level does not secure you a job. They will look very close at your education path and work experience... if you are Cuban, whatever you did back in the Island, counts for nothing!
So I was facing this dilemma... I decided to become a web developer. I have always been fascinated by computers. I checked out some online tutorials and somehow I came across “Winc Academyâ€. They seemed to be good. I made the call and enlisted in the full-stack course.?
Becoming a developer was a wise decision even though I am still struggling to get a job. Enroll in Winc Academy was not! At least by the time I was studying, their lessons sucked... it was quite frustrating for the students ( I am not the only one who shared this view) because the exercises were very complex and you will not be able to solve them just with the poor explanation provided. You need to research on your own. To develop research skills is good but that was too much, they were charging more to draw a road map than actually to teach. Also the attention of the mentors was deficient.... On top of that, school fees were really expensive. It was a great effort for us to meet the payment so I was truly angry and disappointed after my first job interview and they said I was unqualified. I felt ripped off... since I am Cuban (we don't stay quiet when these sort of events happen to us) it didn't take long before I got in an argument with the Winc Academy board.
For a while I kept learning on my own until I bumped into ZTM academy. I was impressed by the tutorial I watched but at the same time I didn't trust much of what I saw... I did a lot of reading on ZTM background and I realized that I should enroll in their program if I want to become a good developer. Another factor was that ZTM price was, literally, 10 times less than Winc Academy!
So I started the ZTM backend developer course in September 2023. I was challenged at the beginning because of all these fundamental concepts. Days passed and I saw not much progress nevertheless the patience paid off. Once I started to code, pieces started to fall into place.
First part of the course was to learn Nodejs. It was quite complete. It was not only Nodejs-Express. Also Authentication, GraphQL and Sockets for Nodejs as extra bits. This module teach us to make an API, serve a client (frontend) from the API, integrate other API to our own, Testing, Improve performance, NoSQL database (MongoDB), Continuous Integration/Continuous Delivery and Deploy using Docker and Amazon (AWS). This part I did it twice, there was a lot of information, I took a lot of notes, it feels like I have written a book!
Second part: database (postgres)
Third part: System Design and architecture
Fourth part: DevOps-Linux. This part broaden my understanding of Command Line Interface (CLI)
Part fifth: Javascript Advanced concepts (topic of today)
Part sixth: Junior to Senior Developer (next article... coming soon)
Part seventh: Cybersecurity Bootcamp (last one... still to do...)
Javascript Advanced concepts course drives you through the fundamentals of Javascript which I must admit, I ignored. This module has 10 chapters which I will describe:
Chapter 1 (JavaScript Foundation I) and chapter 2 (JavaScript Foundation II) is a deep dive in javascript, essential to understand native JavaScript and libraries like React and View.?
Chapter 3. Types in JavaScript are very good to understand bugs (errors) and how to avoid them. Especially the lesson: Dynamic vs Static Typing.?
Chapter 4. The 2 Pillars: Closures and Prototypal Inheritance. When I got to this part, I could understand how poor prepared I was in that first interview. Of course I had no clue what “closures†and “prototypal inheritance†were so I could not understand what was to write “dry†code and use memory efficiently... now I know... at least I think so...hahaha
Chapter 5. Object Oriented Programming. This is one of the two pillars of JavaScript. This brought me to familiar code that I have seen in the past but not quite understood. The explanation of Object.create() vs Class is excellent, understanding that “class†is a syntactic sugar because, unlike python, it does not really exist in Javascript. Classes were very important in the earlier version of React. There is also the explanation of “this†keyword (4 ways). This is one of the most difficult topics to grab!
Chapter 6. Functional Programming. This is the second pillar of JavaScript and, I think, the most used one!
Chapter 7. OOP vs FP. It consists of the comparison between Object Oriented Programming and Functional Programming. Props and Cons of each pillar
Chapter 8. Asynchronous JavaScript. This was really good. Fetch data is crucial in a modern app. Understand Promises, “then†method, asynchronous functions.
Chapter 9. Modules in JavaScript. This chapter could be a little bit too much for those how are starting in programming nevertheless it is a nice approach to understand npm packages
Chapter 10. Error Handling. There again, deep dive, well-explained topic. This was one of my weak spots in coding. There are so many methods out there and sometimes I copied codes, it worked but I didn't even know how... It was like trying to cross my fingers and hoping to work. This has changed. I am very confident in my coding skills at the moment!
Below I list the chapters and topic of ZTM: JavaScript Advanced concepts.?
# Chapter 1. JavaScript Foundation
- Javascript Engine
- Interpreters and Compilers
- Writing Optimized Code
- WebAssembly
- Call Stack and Memory Heap
- Stack Overflow
- Garbage Collection
- Memory Leaks
- Single Threaded
- Javascript Runtime
- Node.js
# Chapter 2. Javascript Foundation II
- Execution Context
- Lexical Environment
- Hoisting
- Function invocation
- arguments Keyword
- Variable Environment
- Scope Chain
- Function Scope vs Block Scope
- Global Variables
- IIFE => Immediately Invoke Function Expressions
- this Keyword
- call(), apply(), bind()
# Chapter 3. Types in JavaScript
- Javascript Types
- Array.isArray()
- Pass By Value vs Pass By Reference
- structuredClone
- Type Coercion
- JTS: Dynamic vs Static Typing
- JTS: Weakly vs Strongly Typed
- JTS: Static Typing In JavaScript
# Chapter 4. The 2 Pillars: Closures and Prototypal Inheritance
- Functions Are Objects
- Function are First Class Citizen
- Higher Order Functions
领英推è
- Closures
- Closures and Memory
- Closures and Encapsulation
- Prototypal Inheritance
# Chapter 5. Object Oriented Programming
- Object Oriented Programming definition
- Factory Functions
- OOP2: Object.create()
- OOP3: Constructor Function
- OOP4: ES6 Classes
- Object.create() vs Class
- this - 4 Ways
- Inheritance
- 4 pillars of OOP
# Chapter 6. Functional Programming
- Functional Programming Introduction
- Pure Functions
- an Everything Be Pure?
- Idempotent
- Imperative vs Declarative
- Immutability
- Higher Order Functions and Closures
- Currying
- Partial Application
- MCI: Memoization
- Compose and Pipe
- Arity
- Amazon exercise to apply functional programming
# Chapter 7. OOP vs FP
- Composition vs Inheritance
- Object Oriented Programming (OOP) vs Funtional Programming (FPs)
# Chapter 8. Asynchronous JavaScript
- How JavaScript Works
- Promises
- ES8 - Async Await
- ES9 (ES2018). Object spread operators
- ES9 (ES2018) - Async:for await of
- Job Queue
- Parallel, Sequence, Race
- New feature for async: allSettled(), any()
- Threads, Concurrency and Parallelism
# Chapter 9. Modules in JavaScript
- What Is A Module?
- Module Pattern
- Module Pattern Pros and Cons
- CommonJS, AMD, UMD
- ES6 Modules
- ES2022 Top Level Await
# Chapter 10. Error Handling
- Errors In JavaScript
- Try Catch
- Async Error Handling
CONCLUSION:
I can not stress enough to new developers to be wise about which course they choose. As I read in a blog a long time ago, it is possible to become a developer just by studying yourself, there are a lot of free online docs... nevertheless without a road map and a developer community for support, that could become a great challenge... my recommendation is to enlist in an online course like ZTM, take your time and check the reviews... do not make the same mistake that I did!
I Hope this text is helpful somehow
Tot volgende keer,
Carlos