I think I may be reaching a bit of an inflexion point, regarding programming, both as professionally, and also as a hobby.
A lot of factors have contributed to this. But I'd say the main ones are the big changes I've had in my role at work over the past few years, my feelings about technology and software changing, and also some thoughts on my professional future.
I've been at the same company for just over 6 years now, and my role has changed massively. When I was first hired, I was the sole iOS developer, and my primary tasks were to rewrite an existing app in Swift and build another from scratch. (Both of them being clients for financial services).
However, that lasted just over 2 years. It feels pretty weird to say actually. I've long thought of myself as an "iOS developer" first, that also has interests in other areas.
Nonetheless, I haven't really developed for iOS professionally for around 4 years.
I first switched "temporarily" to a big project for the PSD2 regulation changes. That meant a lot of Java (SpringBoot APIs), but I also started working on things like our deployment pipelines, and our infrastructure. It was a sudden change, but I found it pretty interesting.
As you may have guessed, it wasn't as temporary as expected. Because I continued with various Java projects for quite some time after. The only change was after a takeover, which meant us changing our entire tech stack to something completely in-house. That meant more Java, but instead of REST APIs, it meant switching to internal applications that interacted externally via REST endpoints, but internally via RPC calls.
That has essentially carried on until the start of this year. Which is when I really started wondering about my career in programming, where I want to end up, and figuring out what I need to focus on next. Because I have to say, I'm not the biggest fan of Java. I really didn't want to think of myself as a Java developer.
Sure, I've been working on my own projects in the meantime. Them being apps for Apple platforms in Swift, various websites, blog engines, and blog themes. But I was still writing Java nearly every weekday. So I was becoming a Java developer whether I liked it or not.
One problem I had with it, was that I would be in a weird situation if I were to look for a new job. I haven't professionally worked on iOS for some time, and I also don't have the deep knowledge of Java that I would need for a new Java role. I started feeling like I'd either have to quickly get out and focus on iOS again, before finding a new job doing app development, or I'd need to completely pivot and do something new.
That is why I've been experimenting a lot this year. Disregarding working on small things like my blog, the projects I've worked on in my personal time this year have involved Node.js, Python, Swift, a bit of Rust, and also I'm starting to have a look at Go. I definitely haven't been making this easy for myself.
Weirdly, it's been pretty similar in my real job as well. I've been given a few projects to work on by myself, one of which, I was in complete control over (It was essentially data manipulation) and I chose to write Python, and another is what I'm working on now, which is an integration for the NetSuite ERP platform in SuiteScript (JavaScript).
We've got a relatively small development team locally, and it appears that I'm becoming the guy that does the various bits of work that no one else wants to do. When the idea of writing an ERP integration in JavaScript came up, most people seemed pretty put off by the idea. Because "they weren't JavaScript developers". I personally saw it as an opportunity to try something new. Which right now, seems like a pretty good idea. Since I have no idea what I want to do long-term.
I actually joked with someone at work recently about seeing how many programming languages I can use in my job this year. So far it's been Java, JavaScript, and Python, as I mentioned earlier. But I have my sights set on a target of 5.
We have a lot of work that requires work on our website, and because my team is essentially a bunch of Java developers (minus me), that means dealing with a team in another international office. However, my angle is that I think we should be able to make "small" changes locally. My boss seems to like this idea. So I think it's quite likely that I will be doing something related to that this year, which means React/TypeScript would be added to the list.
The fifth one I'm not totally sure about. Although, I do want a bit of a challenge, so I may try to push for something like Rust or Go. Either way, I think I better start laying some groundwork soon.
Hopefully, at the end of this year of experimentation, I'll be a bit closer to figuring out what I want to do professionally. Do I want to really focus on something new like Python or Go? Do I want to lean into Java more? Or possibly do I even try and stay working on as many technologies as I can?
As for right now, I still don't know the answer to the question in the title of this post. What sort of programmer am I? I'm certainly not just an iOS developer anymore. Am I full-stack? Or haven't I done enough front-end for that? Is a weird mix of skills what's now referred to as a software engineer?
I'm starting to think that I'm just a "programmer". No fancy specifications (or limitations), just someone that writes code in order to get things done.