Unnecessary complexity
I've spent the weekend, when I wasn't playing with my daughter, watching the news, cooking and cleaning up the house, finishing up Stephen Grider's TypeScript: The Complete Developer's Guide on Udemy. I have one hour and 45 minute long section left, which should be the highlight of the course; TypeScript with React and Redux. I've found, the deeper I go into TypeScript, the more it centers around object-oriented programming. As you would know if you work with React, you do not use object-oriented programming at all. It used to be that components built in React were class-based components, because that was the only way to inject state into those components. But, with the advent of hooks in React, that is no longer a concern. Now, I avoid building class-based components at all costs. The reason I avoid them is that it adds a lot of syntax that is just difficult to reason about. The "this" keyword makes its way into everything and the way you have to structure methods on the class is just different from what I'm used to now. When I first started learning React, I didn't learn it with hooks, and almost everything I wrote was class-based. It seems that some of the courses on React are still a little outdated, and I also think it's important to understand the old way of doing things and be able to compare it to the new way. Luckily, all of the code we write at work is using the cutting-edge concepts in React, and literally only one component in the last project I worked on was class-based, and only due to a library used that wasn't compatible otherwise.
In the last couple of sections, the focus has been on some of the really interesting advanced features that relate to classes in TypeScript. While this is great to know, and it may become more important in my next job, it will not be anything I will have to work with for the foreseeable future. Like I said, absolutely nothing we write is class-based, and we will never be using anything like decorators on classes, or abstract classes. Because I know it's not something I'm going to be using, I can tell my interest is much lower, and this is one of the things that is interesting about actually having a job as a software developer. Before, I had no idea what I might need to know, so my full attention was given to absolutely everything I learned. This got to be exhausting, not to mention it's impossible to retain everything. I ended up filling my head with a lot of things I wouldn't be using and had no guidance as to what I needed exactly. Now, when I approach a course like this, there are things that are more important than others, and they will get more attention than the sections like the ones I just finished on decorators and using TypeScript with Express. Such is definitely the case with the upcoming section on React and Redux, and I'm really excited to crack into this section. I suspect I will learn quite a bit in the coming hours.
This was a 24 hour course, and I started this course, I believe, last Saturday night, or maybe Sunday. To be able to finish this course in a little over a week is quite an achievement. I think part of my motivation is that the course was paid for by my work. As soon as I get that certificate of completion, you better believe I will be passing that on to my CTO, to show how hard I'm working outside of work hours. I don't know how much weight it will have on my future at the company, but I think it shows a lot of drive to be able to finish a course like this in a week. I will also be letting him know about my next course in line, and looking for reimbursement for that as well. I think this is a great perk of the job, and I'm going to try my best to take full advantage of it. As for what that course will be, I'm still trying to figure that out. There are a lot of ways I could go on this. Maximilian Schwarzmueller has a course on TypeScript, which would be really good while it's still fresh in my mind. His courses are usually a lot tougher than Stephen's, so I suspect I would learn quite a bit from this. Or, I could go back to Stephen with his advanced React and Redux course. The other options are to open a new page by learning PHP with Laravel, C# with ASP.net, or taking a SQL database course. These would all be helpful to me in my job, but may not be things I would be using right away. They may help to lighten the burden on my neighbor, since right now he's having to do a lot of the backend work with these technologies, linking up the front end that we build together or I build on my own. I have a list of about 15 courses that I plan to take in the coming months, exploring all these topics and more, including a couple on CSS which I could definitely use some work on, but I guess I won't know which way I go until I make that decision.
Until tomorrow!