I have read many stories of software engineers that are happy working at a company where they barely do anything. Not having to work makes them happy. Where being the forgotten employee is their dream come true. I have seen it with my own eyes. For me, i loathe being bored.
Before i continue, i would like to add that i am coming from working at a startup point of view here, but a lot of the information can also be applied to working at large companies, and also to other mobile, non-android, developers.
Many times, even when we love our jobs, love the company we work work, and wouldn’t trade our current job for another, we all get bored at work sometimes. This is life, there are always ups and downs, and as a mobile developer is very easy to fall into the “i have no idea what to do now that the product is live” scenario.
Now, don’t get me wrong, after an app goes live, there are always many additional features that are usually held back for the next few releases. Usually the business team/managers try to find a way to add new features every so often for the next, for examples sake lets just say, year or two. But once that time is done, and all the bugs have been fixed that came back from implementing those features, the business team needs to go out and sell these new features to new/existing clients or come up with new things to add to the app, and while this happens the development part tends to get a code freeze sort of state.
For mobile developers like me, that hate being bored, a complete code freeze is very tough to get through. There are many types of code freezes, but i will be talking about the “no new feature” code freeze specifically where the developers can still make code changes if the changes have been proven to be worthwhile and necessary, as long as no new features have been introduced.
For android developers, it gets to a point where after a while, there are no new features and no new meaningful/worthwhile bugs either. This discourages many people, and makes them to either look for a new job or for a new career path.
So as Android developers, what should we do? How can we get past this state, give back to our employers, while learning to be a better engineer. Many people like to just hang out, watch movies, or work on side projects, but personally i feel that if i am being paid good money for my time, then the right thing to do, in my opinion, is return the favor to my employer, while learning. But how?
There are many ways to keep productive and better yourself, but here the 3 main things I like to do when I start feeling bored at work, to keep productive, better my self in the long run, AND benefit my employer as well.
1. Refactor
You read that right. Refactor your code! Get the rest of your team to refactor as well. No code is perfect, i mean just take a look at the Android source code (both old and new). Many software engineers have the “don’t fix what isn’t broken” mentality, and this is just bad. As a software engineer you should know that software is NEVER perfect, and it can always be improved. A great, and recent, example is the Uber app. They just re-wrote their entire Android application because it just wasn’t perfect the first time around, and they have 100+ Android developers.
It can be architecture, the code may not be very object oriented (yes this happens a lot, even in Java), it can be the strings.xml file, your layouts, internationalization, accessibility, or many other things, but there will always something that can be done better/added.
Talk to the IOS team and try to figure how they are doing things and maybe learn from each other.
Personally, one thing i do is try to find the biggest God Object and try to figure out ways to refactor it. If you dont have any, see if there is over abstraction somewhere, theres always something to fix.
3 great resources for refactoring are
- Clean Code book by Robert C. Martin
- Refactoring Improving the design of existing code by Martin fowler
- and this awesome website. You’re welcome.
A great resource for ideas on how to improve your Android application is the official documentation starting from here. I guarantee you will find more than one improvement from this link alone, that you can apply to your “perfect” Android application.
2. Innovate
By “Innovate” i mean to innovate at work. Innovating outside of work is also a great idea. But while you are at work try to think of ways to make your current product better. Help the design team and the business team come up with ideas for future releases, new features that can be added, removed or replaced.
Talk to your design team, they may not be fully aware of all the material design guidelines, or what the standards are for Android UX. A few years back, i worked with a design team where the design team gave us a mixture of Android and IOS designs. They thought because it looked nice in IOS that it would be Ok for Android as well.
Get involved, and bring ideas to the table. The worst thing that can happen is that your ideas get rejected. But so what. You wont get fired or get looked down upon for trying to make things better, in the contrary, other developers may even notice and try to do the same.
Talk to your QA team. Figure out how you can help them do their jobs better. Not all QA engineers are software engineers. You may be able to help them out by creating a hidden testing menu just for them in the app, where they can do many things available only to them. Or you can build a custom android app to help them test a functionality in various scenarios that are hard to get into without the right tools.
3. Grow
What do i mean by grow? Become a better software engineer, not just a developer. Learn the science behind it all, dig deep. Become good enough where Google, Uber, and Microsoft should be companies that would hire you.
Why? Instead of answering this, already asked many times before, question my self, i will link you to 4 places of the best links that answer this question and one aimed for Android developers specifically.
- How important is studying algorithms and theory is to becoming a great programmer?
- For a good Android developer do I need to learn data structures algorithms as well?
- Will a good grasp of data structures and algorithms be beneficial for an Android developer?
- If advanced algorithms and data structures are never used in industry, then why learn them?
So, do you want to be a mediocre developer, or an expert software engineer?
Read a lot. If you are asking yourself what to read? Read medium, or the android docs as your builds run, even if you don’t finish the article you started reading. Just do it. This goes a long way.
and here is a list of books and a list of places to get your read on as an android developer.
Books:
- Effective Java by Joshua Bloch
- Head first design patterns by Eric Freeman & Elisabeth Robson
- Code complete 2 by Steve McConnell
- Refactoring Improving the design of existing code by Martin fowler
- Clean code by Robert C. Martin
- Design patterns Elements of Reusable Object-Oriented Software(or the Gang Of Four book) by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides
- Cracking the coding interview by Gayle Laakman McDowell (This book is not only helpful in getting a great job at a dream company, but also teaches you what you should know be a great software engineer. Highly recommended.)
Newsletters/URL’s and podcasts and instead of listing these again you can go to this post that has a list of 100 places to become a better android/software developer and for some podcasts as well you can see some of my go to places as well.
By doing these things, you will guarantee better software to your current, and future employers.
NOTE: The points above, should probably not be done at the office. Not every employer allows this kind of thing. If yours does then you are lucky.
Last but not least in the grow section is, go to meetups. I my self have not been very good at this, so this goes for me as well, but meet more android developers. Get out once in a while, enjoy the outdoors while learning and making connections. This will be helpful in the long run.