Work smart(less), achieve big. After all you are an engineer.
Kaivalya Apte
The GeekNarrator Podcast | Staff Engineer | Follow me for #distributedsystems #databases #interviewing #softwareengineering
In the current world, where IT industry is booming, people often miss the bigger picture.Everyone is running, to achieve "something" which they are not sure about.This "something" is usually short term and tend to make people forget what they actually want to do. People are working hard, which is really good, but wait, working hard again to solve the same problem isn't smart.
Engineers are not born to work hard, they are born to work smart.A problem solved once (manually) should be solved by a program in future.Lets take an example to understand this better :
"One pleasant day, when you have just completed your work and have nothing to do, your manager comes to you and asks you get some data which is very critical and required urgently."
The day is not pleasant anymore.You have no idea how to get that data.Suddenly you start worrying about all the problems you might face and it's consequences.
How do I get the data?
What if I am not able to get the data on time?
What if the data is wrong ?
and many more........
Here is the problem. Do you think these are right questions to ask ?
Are these questions adding any value to the problem in hand ? I don't think so.These questions will just take you backwards and increase the chances of silly mistakes. So, what are the right questions to ask ?
Who needs this data ?
What is the expected size of the data?
What output format is expected?
Will this data be required in future ? May be periodically ?
What is the source of data ? How much load it can handle ?
Such questions will definitely help you understand the bigger picture. Once you understand the bigger picture, you will also be able to find out how quickly you will be able to get the task done.
The first kind of person,will spend a lot of time in writing some program and generate a report. Since this person doesn't understand the bigger picture, he will simple dispose the code once the job is done and leave for the day.But, what happens when the manager comes again after a week to get a similar report.One more pleasant day is ruined and this person will again end up writing some low quality code.
However, the second kind of person will not only complete the basic task (which is to get the data), but additionally he will also do the following:
1) Optimize the code (such that it runs quickly) ,make the code configurable (such that it is re-usable),include proper validations (such that data quality is good) and commit the code in a repository(such that it is not lost).
2) Write test cases to test the data.
3) If possible (and required), create a job which will be scheduled based on the requirements.
4) Additionally, even smarter would be to create a dashboard (eventually) which will make all such requests self-service.
So when the manager comes again, he can simple guide him to the job/tool and the manager can get the report whenever needed.
What do you think ? Which one is smarter ? Obviously, it depends on a lot of other factors, (mainly the deadline) but the idea here is to understand the bigger picture,work smarter. This improves the overall quality of work, you learn a lot even from a simple task and future effort is saved.
"Tasks on hand are completed by everyone, but only good quality engineers take this opportunity to innovate and make the task easier,faster and fun"
"Love what you do, such that people will love what you did."
Cheers,
Kaivalya