In most of my past jobs, I had the opportunity of working with a great team! I mean those who I have worked alongside have always been some kind of awesome. All except for that one member, that I never really liked very much. In this post, I will briefly talk about my evolution as a Software developer, building software while working alone and how I became like a former colleague, I didn’t like working with.
That ONE team member
In most of my past jobs, working in a team was always heaps of fun, unfortunately every team had someone who would make a plan, have deadlines, monitor the time spent on each task, etc. Yes of course I am talking about the Project Manager. In some of my early jobs, every time a project manager asked me “how long it would take me to finish something?” one of the first things in my mind would be, “ahh dude go away, let me write code in peace”. I mean all I want to do is write good code i.e. code which is modular, follows the right design patterns etc etc, so having someone ask me about time and all was just annoying. Anyway I do believe in following rules and while I was working for someone I always gave time estimates for a tasks and complied when needed . Then I started working on my own……
…building software while working alone
I thought surely good times are here, I mean I can just sit and write code all day and I don’t have to worry about some annoying project manager breathing down my neck. Perfect situation, right?
of course yes, at least that’s what I initially thought.
One of the things that I have been working on is my iOS app, My Day ToDos for which I end up spending some time on things that are not always coding. Anyway I did have a lot of fun adding new features, practicing on some coding skills for the first six or so months…
What happened after the first six or so months?
One of the days, it just hit me, since I often spend some time on doing things that do not involve coding, I should just monitor how much time I spend on those things. I should keep track of just how long it takes me to finish those things and compare it with how long I think it would take me to finish them. For the first week it was mostly about non-coding tasks but then it moved on to coding tasks as well, I thought say if I am trying to get a contract or so, I need to be in a position to give a time budget to my potential clients. I do not want to be in a position to under or over charge any potential client. The questions that I wanted to know the answers for, were
- How long does it take me to add a new feature?
- When I learn a new technology, what is the time spent on learning it? and
- Is it worth the time investment? I mean how much time would using the new technology save me in the future?
- How much time do I loose to being distracted by social media, when I share something(blog post) on Twitter/FB/Linkedin?
I though hmm, one way in which I can try to find answers to those questions is by tracking my time when I am working on these things. So I looked at a bunch of time tracking tools and while I liked the idea of using Harvest
(used at my last workplace), I found the free version of TrackingTime
, more suited to my needs. It is a Chrome
extension and since I use Chrome on my mac, it works quite well for me.
How do I use TrackingTime
One of the things that I like about TrackingTime is that it lets you create a task with a bunch of to-dos. I love that and doing things like that way does make a lot of sense, I always tend to see every task a series of sub-tasks. Ok let me give an example of what I am talking about,
Submit the 3.0 build for the Lite version for review
- Apply the new colour scheme to the lite version for review
- Test the changes
- Generate new screenshots
- Annotate the screenshots
- Add more localisations to iTunes Connect
- Sync everything in Fastlane using the deliver download commands
- Upload screenshots with Fastlane
- Double check iTunes Connect and make sure the screenshots were successfully uploaded
One of the best things about the above approach is that, it is easy to find a logical stopping point and resume should I be interrupted while working on any task. After approaching work using the above structure for some time, I can confirm that it results in a much more productive work day for me, things tend to get done faster which results in me being more satisfied with my work.
At some point, I realised Aha! I am the guy at my workplace who I did not like very much i.e. I am my own project manager. It was one of those WOW moments when I thought to myself, “holy crap how did this happen“, however when I look back at it, I think it makes a lot of sense and almost regret why I did not do that in the first place. It is very very important to keep track of how time/resources are being spent on a project. As true as it is for a team, it is especially true when you are working alone because a lot of things end up consuming your time that that you do not really think about in the first place. I will share 2 examples of work that took longer than I thought and that which was done much faster
- Prepare 3.0 screenshots for My Day ToDos: if you see the app on the App Store, it has screenshots which are annotated with speech bubbles(text) that describe what that screen is all about. It took me 2 hours more than the I thought how long it would take me to annotate all those screenshots. Generating 5 images (screenshots) for 5 screen sizes and then annotating each one of them took some time. It was a really boring task and if I made a spelling mistake in one of the screenshots I would have to re-generate(run the app in the simulator) the screenshot and then annotate the new one. Of course by the end of this process, I found a way to make this entire process of annotating images a bit more efficient, which was reflected in my next task.
- Submit the 3.0 build for the Lite version: the same thing applies, have a look at the app screenshots on the App Store and you will see that all the images are annotated. Using some of what I learned from the initial task this entire process took 3 hours less than what I thought it would take. I annotate the images using the preview tool, I adopted a certain trick that saved me some time in annotating all the screens. The other thing that I did was to backup images before annotating them so in the event of a spelling mistake I do not have to re-generate the screenshot.
I really wish I had gotten on board the project management bandwagon earlier, it would have helped me heaps(lots), however you know what they say? it’s better late than never
so I suppose it’s good that now I realise the importance of it all. My recommendation to any software developers who feel like me when I first started working would be that, project managers do what they do for a very good reason. Try to see it all from their point of view and try to understand that from the very beginning and do not wait to have a realisation like I did.
p.s. being a huge fan of the movie, Harvey Dent’s words came to mind when I had the realisation, something along the times of “….or you just live long enough to see yourself become the villain”, because you know I have been working as a software developer for some time and I have evolved into….anyway you get the point. Ok I don’t mean to say that project managers are villains but just that I am a huge fan of Batman.
As usual, if you find any of my posts useful support me by buying or even trying one of my apps on the App Store.
Also, if you can leave a review on the App Store or Google Play Store, that would help too.