So this is it. My last post here as a member of the team. This company is certainly one on the most interesting I had the chance to work for. I’m thankful for all the experiences I had and for the people I met.
Of course it wasn’t always like riding the unicorn of wisdom on the rainbow of joy. But even (I should say “especially”) the unpleasant experiences and the not-so-kind people made me learn a lot of things.
So please, allow me to use this last post to give my 2 cents of advice. It goes without saying that those advices are about mobile development. For any other things, please go browse StackExchange. Or Quora. Or whatever fits you 🙂
It’s nobody’s fault.
Of course, you can `git blame` on the line causing a given crash and point out one of the developers. But is it really his/her fault ? Why was the `CoreData` stack implemented this way ? Why add a specific behavior in the root `Activity` ?
The real root of a bug can be much more subtle than what your SCM might say. So blaming at first sight isn’t really smart. Neither is to neglect the rigor needed to produce solid, clean code. Thus leading to the next point.
The most important work is the most boring one.
You may be able to optimize DB fetching and JSON parsing by 2048%, like a kung-fu master. You are able to deploy new technologies in the existing code base in less than 3 minutes. Using only one hand. And you are constantly keeping in touch with HN, /r or experienced programmers on Twitter. Nice for you. But what about the team ?
You will gain much more time from an easily-extensible parser that a fast-and-furious one. Your day-to-day work is more about adding/updating UI than implementing HoloLens-like features in your code.
So practice your skills, perfect your arts on the most mundane tasks, the most boring one, because those are the ones you will interact with most of the time. So they will be the biggest source of bugs.
All that glitters is not gold
You know that new hot language (*cough* Swift *cough*) or that new CI server (*cough* Xcode Server *cough*) ? Meh. Why ? Not enough perspective. When you have to deliver, you cannot be a beta-tester at the same time. So stick with the plain old well-proven boring things. And keep all your newness for your side projects.
I’m not saying you should not try the new kid on the block. Of course you should. But as a side project. You still want to make it happen on the team’s product ? No problem: get everybody onboard and make weekly meetings to learn about this so-cool new “\(insert whatever here, nevermind, it will change in 6 months)”.
This is one of the best job in the world.
Even if you have to code mind-numbing users stories all sprint long, if your PO cares more about using peculiar animations than accessibility, even then, you have one of the best job in the world.
Only because there is such a high demand for mobile developers, you can quit without worrying too much about the bills. That is f****ing awesome. You can do it. Quit right now if you are tired of your job.
But, whatever the challenge given to you, even the aforementioned mind-numbing ones, you can learn from it. How to make it faster, cleaner, with more tests or using MVVM, React, ReactiveCocoa or anything that is glittering right now (be careful, I’m not refuting the previous point, just adding a little bit of subtlety).
Our trade is the one looking the most like magic. We can, and we do, use the tools of our craft to change them. And this very act of updating our tools is also improving our understanding of the technology. We can auto-improve our mind any single time. Any. Single. Time.
Nobody is perfect.
There will be bugs, delays, missing documentation, lousy implementations … You will be responsible for some of them. So accept that you are a human being working with human beings. And as you try to understand why they are the way they are, try to make them understand why you are the way you are.
It has been a long ride, with pleasant and also harsh times. And if you want to give you a treat, looks at a real, inspiring, last lecture. Thank you and farewell.