I'm not a developer anymore, am I?
Sorry to interrupt your hard work! I just want to share my unexpected recognition about what I really do nowadays. I wonder if anyone of you feel the same.
Let's start with the conclusion: I became a user or tester or whatever but a developer. Everybody around me including my employer thinks I am an senior dev but honestly, I do something else day by day. Please do not tell them the truth! I need my high salary! :D
I started this profession 20 years ago. I learnt about algorithms, structures, design patterns, languages, optimization techniques, data modeling and more. As a junior dev I started to use that knowledge along with many languages. Then I became a senior suddenly and I was able to solve any type of problems using my theoretical knowledge and my experience.
Meanwhile, I never forget to learn new things. So I know pretty much about new techniques including no-sql, js fws, cloud services, ci/cd etc.
Today I had a new task. It was pretty simple and I thought I can solve it in one hour max. Then I saw the package I'm using doesn't support what I have to implement. I spent few hours with checking the SO, the vendor's page, the manual, the api documentation, the issue list, then the source code.
Then I realized if I want to keep the package then I need to find a way to hack it somehow. I didn't want to drop all functionalities of it but it was really hard to achieve my goal. It doesn't support my need in the core.
Finally I solved the problem but I don't really like it.
Then I started to think about this stuff I did today and I realized it wasn't a real dev work. Then I realized most of my work is all about using third party packages/services/platforms, learning how to use them (version by version!), testing each functions of them, searching for temporary solutions for all known and unknown bugs in them.
It means I am a user and a tester of all high and low quality software to me. I don't really do any dev work anymore. All I do is nothing more than put already existing pieces together and sell the result under a new name.
Where is the need for the algorithms, structures, design patterns, languages, optimization techniques, data modeling and more? These are already built in those packages. Or you can find a new package for any of them.
I don't know if this is good or bad. I really don't know. It think it is good if you can sell what you were able to quickly put together. But it is bad if you found a bug or an incompatibility issue in any package which affects many parts of your app.
What do you think?
Learn Something New Everyday,
Connect With The Best Developers!
I was in a conversation with some friends yesterday and we were literally talking about this topic. He was lamenting how his interview was all about algorithms, structures, design patterns, data modeling and more but after getting the job, he really doesn't use these things more often but rather does the actual work.
I still have friends who still prefer to write their own package and loathe relying on other packages (The so-called "10X"), it's more of a personal preference but using other packages daily to do your actual work is not a bad idea and shouldn't make you feel less of a dev.
If you feel "less of a dev" because of this, try doing some personal projects that'll require fewer packages and you writing more "devy" code and let's see how it goes, in the long run, you're doing the dev work and still using packages at work.
I'm using many packages and I'm usually happy with them. The problem comes when something is wrong with one or more packages and you have to fix/hack them manually. How can check the quality of any package when the most popular ones still have many known issues?
You were talking about JS. This is the most dangerous space of the dev universe :) A typical js project built with one of the most popular fw and extended with many third party packages. So I think every js project is basically same as when any regular user is working with the Excel. Put values into the appropriate cells, apply some built-in functions, use third party macros, generate fancy UI diagrams and so on. Therefore we are users and not developers. But we have no fancy UI to work with just this ugly text editor ;)
BTW, I also know this is exactly same when a car is being built. It contains lot of already existing parts, third party units and the entire stuff built on a common platform which is also used by another type of cars.
So I also think this is good. Until your car is burnt down in the middle of the highway just because there was a bug in one piece of it.
I think it all boils down to what kind of development you're working on.
If its web development as in building web apps then you'll find yourself using A LOT of third party libraries because it's the best, cheaper, and faster way to go.
In the Ruby on Rails scene, I don't imagine myself building my own Devise(a gem for auth) for every project. Authentication is a known and solved problem by that gem which has been working so nice for many years, is open-sourced, well tested, etc.
Without Devise having the signup/login feature for a web app would take months to have right. Using this package it takes less than half a day.
My point is, if the software you build runs in a web browser, then most probably you'd be better using third libraries UNLESS you have the time to build your own implementations.
Other Not Too Strong Related Web Development
Now, if you want to use design patterns, more algorithms, optimization techniques, implement your own data structures, and those things that are very computer science, then you should look for a place to work on medium to low-level stuff.
For example, if you try to code for tools or utilities or stuff like:
- A web browser(Firefox is built in Rust)
- A web framework
- An HTML to PDF converter
- An image processor
Notice how these things are USED by developers. Build by some devs to be used by other devs.
You Are a Dev
At the end of the day, the kind of code you produce does not qualify or disqualifies you.
I used to think that those people working in Space X, Tesla, NASA are the real devs. They are just devs in another business.
A family doctor IS doctor no matter if she doesn't practice neurocirugies :)
Nice read, I understand how you feel.
I started myself 15 years ago, but I have the chance to not have to use so many APIs or libraries.
The main projects we have are done in-house and we usually have the option to write the libs ourselves, because it's better for maintainability.
I remember that lib I made, to support vertical writing in Chrome for Japanese.
The same CSS couldn't be used because Microsoft is the only one supporting vertical text correctly. (what a surprise! really!)
I handled different browsers and versions (iPad, Safari, Chrome) and made so you could even display tables (by recreating them while rotating all the cells).
All in JS and with a bit of CSS.
It was hard, but it was fun, it's in prod for many years now, and we add features to it from time to time.
That is the part of my job that I like the most.
I believe that you have answered your own question. You are a tester and not a developer, also you have the title of a senior developer. That's pretty much it, administration "error". But:
In my community there is saying (roughly translated): you are a developer if you are getting things done. Eather that be by some copy/paste of some code, asking a friend to do it and then you submit it... whatever it takes, just make it work.
Reinventing things are not time/cost- efficiant. If there is a solution on the net, we use it. Doing those algorithms coding challenges are now done at home and mostly for fun.
On the note of the bugs. Trade-off. Writing your library where you know how things work is slow, but you can debug them. Using other code is quick but.. you get the point. Luckily, we don't work alone and any bug is fixed by us, or we ask someone to fix that for us.