Providing Value as an iOS Developer
In my last blog post, I explained why independent deployment is not achievable in systems where you don’t have control over the release process, like Apple’s App Store. However, that principle extends to independent development, open/closed systems, modular design, and more that can maximize your team productivity, allow you to focus on interesting problems to solve, and cash you that full bonus at the end of the year.
It extends to being a valuable developer that can generate huge profit.
In my opinion, there’s no better way to be recognized and compensated than providing value. More value than expected. An order of magnitude more value than expected will make your career skyrocket.
What are the expectations of the industry now?
I know a lot of software that is just delightful to use. Its apparent simplicity, which I understand was carefully crafted to look so, hides a bunch of complexity and provides me immense value. There are even cases where I wish I could pay more for the service.
Sadly, that’s not the case for the majority of software out there.
Companies are still trying to figure out how to make money with their apps and we as software developers have a huge opportunity to help them achieve that and profit together.
I believe that companies that want to succeed should be looking for developers that are business-aware so they can effectively translate their needs to code. That’s a vital part of being a successful software engineer but most often that is forgotten and we end up having to be micromanaged by long hierarchies of managers so we can be in the right track.
Everybody somehow works with, depends on, or interacts with software every day and it’s easy to hear friends and family complaining about the systems they have to fight with every day. They literally call it a fight and we have a huge opportunity in addressing that.
You can achieve tremendous success and profit by, at the same time, creating delightful experiences for users and sustainable growth for the business backed by well-engineered software.
The industry needs serious and professional software development. From helping a small local shop trying to engage better with their clients and grow their business to a large company trying to expand internationally. Whatever the need of the project is.
Providing value
One of the most effective ways to produce value is to reduce cost.
For me, software is mainly about reducing cost. For example, I’m more than happy to pay $1000 for an application that will save me 6 months of development time because I know how much my hourly rate is worth and $1000 is nothing compared to that. It’s like for free. I’m happy to pay even more.
Now scale that to a company. Imagine you’re working hard in a team of 10 developers and the rate of changes imposed by the business is just too much and you can’t ever meet their deadlines and the backlog only gets bigger and bigger.
You stopped writing enough automated tests and test first sounds ridiculous to you since everything is breaking all the time so it’s better to just do it manually. You’re getting very good at solving huge conflicts when merging your branches and you hate that guy who’s always breaking the interfaces just for his convenience. You stay late every day and you are proud of that.
There are a bunch of testers hired just to prove your code is broken and it takes weeks to get passed QA and every bug fix generates more bugs. Releases only happen when the responsible for that decision are happy enough with the existing bugs and are willing to release a partially working app.
Now the business comes with this crazy idea about a new app and they’re asking you to estimate how long it would take and how much of what the team wrote in the previous app could be reused. You get really anxious and angry at the business now.
How could anyone write reusable code at that pace? You have to break things all the time to meet their deadlines. You work late every day already, and now they’re putting you in that situation where you’re going to be ashamed of your skills and have to reply “Well, it’ll be very hard to reuse any components since that was never asked and the pace we were working would make it just impossible to design such solutions”.
That’s not fair, you think to yourself. I’ve been there so I can tell.
At this point, most companies would probably think twice about their new idea, and I’ve seen many just throwing away ideas that could benefit the business just because it would be too expensive to do. They know how much they spent on the current project and the projections for the same.
And forget getting that full year’s bonus. Would you pay $1000 for a software that slows you down 6 months? I wouldn’t and realizing that made me a valuable developer.
Only a few companies can afford such situations, and, weirdly enough, they are most of the time advertising themselves as the top-notch software houses and dictating how good software looks like. If you follow that advice, they win since that’s a good way to literally destroy competition.
That may seem exaggerated to you, but I see it every day. Every single day.
I’ve heard "but it's just a client app” a lot from developers and that’s just silly. I’ve been helping companies that spent millions in "just a client app" and let me tell you, it’s not easy to recover from that financial damage.
Take some time to roughly come up with what you think is the yearly cost of the project you’re working on right now. You might be surprised by your predictions and I can assure you that it’s a very low estimation.
Is a new shiny language going to fix that? I don’t think so.
Find a way to save a company $100k then tell me what happened next.