Not sure when reviewing code became a habit, but it is now part of routine before deploying new code to production.
Git diff is really helpful and lets me know of the new code being pushed.
It always surprises me that during review I notice conditions or logging methods that I missed adding to the code. There are less surprises and errors in production environment.
I use Beanstalk to deploy code to production and would highly recommend using this, if you are still deploying code via drag n drop using a FTP client.
My research on successful professionals underscores that this experience is common: As you become more valuable to the marketplace, good things will find you. To be clear, I’m not arguing that new opportunities and connections are unimportant. I’m instead arguing that you don’t need social media’s help to attract them.
Quit Social Media. Your Career May Depend on It. - NYTimes.com
I have been thinking of quitting Facebook for a while and the article makes some valid points.
My facebook usage has gone down considerably. Too many articles / memes being shared rather than facebook answering the question of what my friends are upto.
Programmers are often said to be optimistic about how long a feature / software takes to develop. I am constantly reminded of how true this is.
This week I thought a lot about time estimates and why I am often wrong with my time estimates.
It comes down to the need to please the person asking for the estimate. The expectation that the person on the other end wants it done as soon as possible and giving a short enough time would make them happy. An approach I am going to rethink from here onwards.
In larger organisations, a project manager is usually involved in arriving at the final time estimate which includes some breathing room the programmer forgot to budget for. But even then most enterprise projects spill over time and over budget.
Here are some ways I am going estimate time from here on:
- Understand the scope of the feature / software you are asked to develop.
- List down all the small components of the feature / software to be developed.
- Is there a third party company involved? Budget for extra waiting time for when you need some information from them.
- Is there a new language/ tool you need to learn to get the work done? Budget for time to learn and for those moments when the new tool just refuses to work.
- Budget for life in general.
- Are you working on multiple projects? Budget for time when one project takes up a lot of your time, leaving you less time to work on the other project.
Scope changes are part of software development lifecycle. When there is a change in scope, communicate this with person on the other end about how it affects the previous time estimate rather than trying to get the extra work done in the same amount of time.
Working on a new feature is always a good learning experience. One of the learnings today was the need to set better default values.
Could the user accidentally stop a timer before 1 minute? Not many would want to record time less than a minute. Rather than display an error message, it would be better to automatically update the timer entry to a minute.
The default theme, font, text size and so many other decisions you take when building your product end up making a big impact on end user experience. Not many would look under settings to change these values. Good to have an opinion about the default choice you decide on.
Does your product make it cheaper, faster or easier for our customers to make progress in their lives?
Des Traynor - CO-FOUNDER & CHIEF STRATEGY OFFICER, INTERCOM
This post is worth a read. Your product is already obsolete
Life is Short. Work Smart. Have fun.
That’s the slogan of Brightpod, a project management system for digital marketing agencies. If you are looking for a online product to manage your projects, give Brightpod a try.
I have been thinking about Work Smart part of the slogan this week. What does it mean to Work Smart? Do you have a process in place on how you achieve your work? Do you use smart tools to get work done? Do you not juggle between projects when working?
Working smart for me is having a fixed list of tasks I need to complete each day. I set priorities for things I want to get done on a given day, leaving room for small new additions to the schedule. Things on lower priority can move on to the next day, but no further than 3 days from when it got added to the list.
Working smart also means setting boundaries for what you say yes to in a given day / week.
What does Work Smart mean to you?
P.S: Happy Birthday Amol!
The first few months and years of running an online business is really exciting. Designing new features, programming and improving the software based on customer feedback is great fun.
Usage is like oxygen for ideas. You can never fully anticipate how an audience is going to react to something you’ve created until it’s out there. That means every moment you’re working on something without it being in the public it’s actually dying, deprived of the oxygen of the real world.
Matt Mullenweg, founding developer of WordPress, in 1.0 Is The Loneliest Number
You have plans for version 1, 2 and 3 and the year’s go by really fast. Time does fly when you are having fun. But what next?
How do you keep yourself motivated to work on the software after it has all the features you wanted it to have. After 95% of the issues are resolved and the software is relatively stable.
I wish more software companies spoke about this on their blogs or during conference talks.
If you live in India, demonetisation of Rs 500 and 1000 notes is what everyone has been talking about. A move to curb black money has affected the common people, who now have to bear the consequence of governments decision.
In the long term, this is a really good move. But what about the situation now? There are long queues outside every bank. Almost every ATM machine is out of order. The common man is indeed suffering.
I have received SMS from my bank about how I can use my debit / credit card to make payments. Online transactions now makes it easy to pay bills and pay for groceries. But not everyone has a bank account / credit / debit card. Some people who do have a debit / credit card are scared of using it. From what Google tells me internet penetration in india is at 34.8%.
A temporary phase, things will get better soon. I hope more merchants start accepting debit / credit cards. Where’s the Square alternative for India?
Come across something which does not seem right? The first reaction is to complain about it on social media. Thats the easiest thing to do.
The difficult thing, the one which takes time and require some amount of dedication is to be part of the solution.
Don’t like the software you use? If it’s open source, help contribute to improving it. If you don’t write software for a living, then write to them with suggestion on what you think can be improved. Don’t like the newspaper you read? Write to them with suggestions on how to improve it.
Its easy to complain. Takes less than a minute. Creating something or helping improve something is much better. Choose the latter.
When I started learning how to write software, the apps I built were really simple. Page hit counter, guestbooks and a way for me to add articles to a blog. None of these required a lot of code to be written.
Over the years the apps that I have written have increased in complexity. Now there are more than 15-20 features to look after, each with its own set of sub features. The front end code base is now as big in size as the backend code base demanding its own set of tests.
Writing tests for your software is good. As your app grows in complexity, it makes it easy to ensure that all the features still continue to work, after the most recent change you made. And if they don’t your tests should tell you that.
I did not part take in Test Driven Development till last year and now that I understand the process(still learning) and its benefits, I would recommend it to everyone who writes software for a living.