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.