My Specialisation
First of all, I think that it’s crucial to pick something to focus the vast majority your energy on, rather than trying to master everything, it’s humanly impossible, sure you can be good or maybe pretty good at a huge array of technologies. But in my professional opinion, it’s much better to become a master of a specific technology or a small set of technologies over trying to become highly proficient in a large array of technologies. I mean while I have experience with say Kubernetes, Docker, Azure, I’m hardly a master of those technologies, far from it, I’m not employed to be an expert in those technologies.
At this moment in time, I’m a little uncertain as to where my career will take me, so far I’ve obtained only a handful of years experience. Yet I’ve managed to obtain roles that vary from very primitive environments where there’s no need or use of a CI/CD pipeline, through to working with mass enterprise technologies. When I think about it & how I currently don’t have my degree, it’s kinda crazy, I’m not sure if it’s down to my pure passion for the industry or if it’s down to my personality, etc.
So, at this point in time I’m currently interested heavily in JavaScript, from old fashioned JavaScript, through to cutting edge front end technologies, such as webathn. But my passion for JavaScript doesn’t end there, I’m currently in the process of working on a personal/private project that’s using NestJS, which is a pretty awesome server side Node framework that natively supports TypeScript. Besides application development, I’ve been working with an array of database related technologies, including all of the major RDMBS implementations, from SQL Server through to MySQL.
In addition to my passion for JavaScript, I’ve also taken an interest in technologies including Java, C# & while I’ll possibly never use it in my professional career, I’ve begun looking into C/C++. I figure the more you know, the better, surely knowing about C/C++ concepts & the associated ecosystem, it can’t hurt, I mean implementing your own memory management can really teach you how to best utilise higher level languages. I mean like looking at JavaScript, technically there’s not straightforward way to invoke garbage collection, JavaScript currently utilises the mark & sweep algorithm, which essentially translates to when ‘x‘ is out of scope, it’s removed from memory.
Talking more about JavaScript & it’s associated ecosystem, thanks to the V8 engine & it’s awesome JIT compiler, it’ll prioritize different properties based on the device & its environment. As an example, if an Angular application is running in a browser on a cheap/low end mobile device, I’d imagine that it would prioritise resource efficiency.
One thing that I sincerely adore about JavaScript is that it’s expanding far beyond the web, not just from front end technologies, but server side technologies, desktop applications, mobile apps, etc. It’s spreading like wildfire, for me that’s great, I love the language & all of the associated technologies. Although, each area could allow for specialisation, while I may have a basic or extensive knowledge of all of the stated technologies, I’m hardly a master of all.
Just looking at JavaScript, depending on whether you’d like to focus on the front end or the back end, the skills & areas of knowledge will vary massively. An example; if you want to open a large text file, let’s say it’s ~10GB in size, you’d probably want to consider streams. Obviously, this wouldn’t be quite as straightforward on the front end. If you’re working on a front end application, you’d need to utilize technologies such as the HTML5 file reader.
Conclusion
So, personally, I’m looking to go far with regards to primarily developing REST API’s, ensuring that HATEOAS/HAL is implemented, but mostly, I’d like to focus a lot more of my energy into the JavaScript ecosystem. Sure JavaScript isn’t the best technology for all scenarios, such as machine learning or computationally demanding scenarios, or maybe data science, etc. But all round, I love it, I think for the vast majority of front end or middle tier applications, it may just be one of the best technologies to choose from. Sure, that’s a very bold statement, but at the same time, it’s simple & very easy to learn & it’s very, very capable, not to mention fast, afterall, it’s technically C++ underneath.
But my goals aside, I think that it’s clear that if one is able to focus their specialities in a very specific direction, it’ll pay off. As an example, if you’re a front end developer, it may be beneficial to focus on performance or maybe PWA’s or possibly even accessibility, etc.