One of the big struggles of being a developer is often just figuring out “what to do next”. There is a vast network of options for a developer where one can dig deeper into their current knowledge, they can move forward, or they can move sideways and in all kinds of ways. But at all times, there’s a moment when you have to choose what to do and where to go.
For me, that moment is now. I’ve worked solely with Angular for over a year and I’ve worked mostly with NodeJS for almost two. That means that I haven’t touched much code that used PHP, that used KnockoutJS (my former expertise), or pretty much anything else. In a way, this is a good limit. This means that I’ve kept up with a ton of JS conventions, upgraded my toolkit to include ES6 and Babel. I’ve started to use Browserify, and have even gotten a dose of NodeJS C++ extensions. All of that is super awesome. I loved digging deep into JS and learning about it.
It’s been fun but over the past couple of months, there has been a question on my mind, “What next?”. At first, I thought it was C++. I needed to use C++ for work in order to take full advantage of a tool that I’m forced to run in CLI mode via Node. The problem was that C++ knowledge doesn’t come over night and my limited time with C++ meant that I just could not get into it. Plus, there have been time constraints that have disallowed me from really getting into it.
Then, I thoguht it was React. I wrote a neat ReactJS guide while I was learning the framework but in the end, I lost interest in it. Partially, it was because I had work to do and partially, it was because I kept getting side-tracked with the “next best thing”.
So, in the spirit of Agile development, I decided to institute 2-week sprints that tackle my top 7 current interests. Every 2 weeks, I’ll switch my focus and write a quick article about my experience. So, without further ado, here is my list of topics, and why I chose them:
Golang looks a lot like C++ to me. It’s a nicely strong-typed language that’s open source and can be used for webdev. One of the things that attracts me to Go is the fact that its tooling is so modern. I’m used to Node where I can specify a
package.json and with every
import get what I need. When I started working with C++, the most frustrating part was the fact that there was no defacto package manager which made the entire experience a bigger hurdle than it should have been.
Go is also a general-use programming language meaning that its usage is not limited by webdev. The webdev part is what makes it easier for me to jump into since I have ideas for projects there and have some drive to finish them.
On top of that, Go has a sweet-looking concurrency model. Can’t wait to try it!
NativeScript / ReactNative
But this isn’t Go, this is NativeScript and ReactNative. I want to pick up one of these and make a few apps, see how it is out in the mobile dev world as it’s not really that different from webdev in the first place.
I’ve heard excellent things about NativeScript and it’s been around a little longer so I’m heavily leaning toward it but ReactNative is promising as well, especially because it’s React.
React + Flux
It’s been on my list for over a year to learn Flux. I’ve been slowly developing a pretty cool Flux app but I’m having a tough time answering the “Why” question when it comes to using Flux. I’m traditionally an MVC person. It shows in all of my code. Looking at Flux, I see a lot of needless misdirection and a good deal of “Where the fuck do I put this” when working with it.
I’m currently maintaing a pretty big AngularJS codebase and figuring out where to stuff code is pretty easy. With Flux, I’m like…”what?”
But I know that there is value here. I’ve seen the diagrams, I’ve seen people migrate to Flux architecture after working with Angular, and I understand their reasons because they’d be the reasons why I’d leave. The problem is that I never got to the point of using Flux where I had that eureka! moment when everything fell in place.
I heavily use ES6. I absolutely love ES6. Everything just looks cleaner from using fat arrows, to using
import statements and everything else, the language is clean and beautiful.
But so is TypeScript. TypeScript is a pre-requisite for my next venture (Angular 2.0) so I’d like to dive into TS and see what it’s about. Lately, it’s been making more rounds than any other compile language. I love the idea of having ES6-like language with a type system and I love the fact that TS is being actively developed which means that new features come out all the time, and bugs are fixed, too.
Sigh, this is a natural progression. I’m already used to using Angular 1.X, and I love it. I used to hate it, and I used to love it and I’m back to loving it again. The reason is simple: it’s comfortable. You know where shit goes and once you learn “best practices”, you’re not caught in the
$scope issues that everyone complains about.
In fact, the reason that I like using Angular right now is the reason I want to learn Angular 2.0. Especially since the release of ngUpgrade which facilitates an easy transition from version 1 to 2. The fact that it has top-of-the-line support for TypeScript with its plethora of features makes it even better for me. (Note: I might merge this and the previous topic together)
Application / Web Security
Security has been one of my top interest for the year. In fact, I have an article ready to be published discussing patching up common application holes from how they can be exploited to what you need to do to fix it.
The best part of web security is the fact that it can be applied to any project and right away. Just knowledge of CSP can make your application a 100x more secure (I exaggerate…but possibly?).
Can’t wait to dive more into this one!
Probably unknown to most of my readers, I have some neat DevOps skills but they’re getting outdated. It looks like the field is starting to move at the pace of webdev which is terrifying for anyone learning DevOps as more of a hobby.
Both Terraform and Docker has matured considerably since I last ventured into this rabbit hole which makes learning more about them more exciting than ever.
I want to write an article of my experience for each. My idea was to spend 2 weeks with each topic and see how far it gets me, and then write about it. What I liked/disliked and what I struggled with or what surprised me.
This means that for the next 14 weeks, I have my work cut out for me!