It has been about a year and a half since I got my first real job, and I have learn a lot since then. I still remember back then, I don’t really have a clear goal on what do I want in a job, but just follow my gut feeling and something that looks cool and hip. Now, I realized that in order to grow faster, I need to be more specific on what am I looking for in my next career, and what do I ultimately want to achieve. The possibility of just randomly picked the perfect job for the rest of my life is next to impossible, so I need to be more specific about everything.
Android is here to stay
First, I think I will stay as an Android developer for now. It is true that I don’t see myself still doing this in like 10 years, but I also don’t think randomly switching career path is a good idea. I don’t want to be a master of none, and being a good at making Android apps seems like the most logical choice:
- I’m already on my way there
- It’s a safe(-ish) career for the foreseeable future
I would definitely need to expand my horizon to more fields in the future (especially if I want to move up the career path, or maybe start my own company at some point), but at this point it makes more sense to do that in my personal time. I need to spend less time on reddit anyway.
I need guidance from real professionals
So far all of my job experiences involves mostly self-learning and experimentation, because there isn’t really any mentor that I can learn from. Sure I got to talk to other more senior developers, but since we all work with different technologies, I feel like our discussion never really go very deep. We also spent more time having discussions on operation and management stuff, less on the technology stuff. Those discussions have been very useful, but now I really feel like my lack of actual technical skills is having a bigger impact on my performance, which then leads to communication issues with my coworkers, and things go south from that point on.
As the result, I would really like to work with other Android developer(s), so that I can learn from him/her/them. And it would also be great if there are junior developers as well, because I strongly believe that being able to make someone else understand something is the best way to see if you actually understand it.
I still very much enjoy being the only Android developer in a team, which allows me to play around with little to no restrictions. But technically speaking, I can do that anytime I want by doing side projects. And if someone is asking me to join their newly formed startup (again), they got to have something really attractive besides “the opportunity to explore and learn” (e.g. high salary, doing iOS/backend/data science, or even product stuff).
Work in/with/for/on open source
I think this bit is just a little bit of my personal philosophy: I would like to write codes that others can benefit from. I think that as a species, we can achieve so much more if we can actually get our shit together and work together in the most efficient way, and I believe that not having to re-invent the wheel (unless it is necessary) should be a bigger part of the equation. So far I’ve seen a lot of those qualities in the open source community, and I’d like to contribute to it as well. I’ve only contributes to extremely minor bug fixes and adding new resources to some projects, and I want to be part of something greater. More and more companies are starting to realized the potential of open sourcing and sharing, but in the start-up community, I feel like secrecy still plays a bigger role.
Better team work for better efficiency (for the greater good)
One of the common thing I hear from everywhere is that processes lower the efficiency, just look at literally (read: figuratively) any government, and that’s why startups almost never have a clear structure (read: we have a flat hierarchy). However, I don’t agree on that, because I think that is actually not an accurate comparison. What they are complaining is more about the implementation. For example, to apply for Blue Card, there are so many things that I need to prepare, and without German speaking people it gets pretty confusing real fast. However, if you just list out the big steps, it’s just
- Get multiple things that proof your identity
- Give those information to the right people
- Those people will pass all those info to different places so that all of them can verify and be aware that there is 1 more person working in the country
- Pick up your card for future reference
The worst part of it is the details, like how there is no clear indication on which building you need to go to, what paperwork do you actually need, etc. If we plug those kind of complaints into a work place scenario, it’d be like “Using snail mail to report bugs to the bugs team sucks, we should not report bugs at all!”.
Finding a good work flow for the team is gonna take time, and it will evolve a lot of iterations, but from my (limited) experience, those trade off would have been absolutely worth it just in a span of a few weeks. Of course, this approach of team work is NOT going to scale well at all. Can you imagine having 100 people to talk about how they would like to work? It’s gonna take forever! I don’t know how big companies do that (yet), and I would really like to find out. And for pretty much any operations, you will need some standard communication channels, and for tech companies, project planning, retrospective, some bug reporting pipe line, documentations (that people can read AND understand) are pretty standard (for good reasons). And obviously the team needs to find a balance between rigidity and agility to keep everyone happy (enough), so everyone needs to be open minded about it. Ultimately (and realistically) money, success, and fame are going to make people happy, and we are just trying to have a process that is for the greater good. It should never be personal, and we have to be able to learn from our mistakes.
Product Transparency -> motivation
The last thing that I am looking for is more in the people side: one of the thing that I find myself keep asking on a monthly basis is “Why are we implementing this?”. As a developer who is also kinda into product and stuff, I would really like to know more about each features, their priorities, and everything related to it. Knowing what I build actually matters gives me a lot of motivation to keep me working, because I know that what I build is meaningful, and there is a higher chance that users are going to enjoy that as well. And when no one know why a feature is being implemented, there are usually 3 possibilities:
- Communication is broken, cannot reach people who made those decisions
- Decision people just pull it out of their asses
- Decision people deliberately hide it from their minions
For possibility 2 & 3, from my experience, they are actually not that distinguishable. If you know the product people personally, you might be able to guess which category they fall into, but if you don’t know them, the only way to tell the 2 apart is to be an excellent human lie detector, in order to tell if “Trust me, I know what I am doing” is a lie or not. These kind of situations not only applies to product owners and management, it applies to developers as well. It’s just that usually it would be more obvious, since we are already somewhat experienced in what they are doing, and it would be easier to smell the bullshit from it.
I think that if a team of people are willing to be transparent and open, we can all benefit from each other: managers can have more understanding on why some features takes more time then others; developers can tell why some features are more important than others; and product people can collaborate with other teams to refine the product according to the organization and the reality of the business.
I understand that the world is chaotic and unpredictable, and everyone have very different goals, priorities, and interests. I am definitely not saying there is a right or a wrong answer to “what kind of opportunities you are looking for”, and these are just what I feel works best for me, that other people might benefit from. And if you have any opinions, leave a comments down below. After all, I am still very inexperience, and I would love to learn more from all of you!