This is the mail I have shared internally with product engineers working on the product. But later though of sharing it with larger audience.
Though we are working hard on product and trying to meet timelines, I thought of sharing what are expected from you guys as product engineers in Qilo/Qlique. But rather then verbally telling you every day what needs to be done, I thought of sharing it with you through this mail.
Why its required:- because we should not do same mistakes which we had done in last 45 days.
Attributes of Good Programmer
1) Their first priority is to understand what needs to be done from business perspective. And try to visualize and understand all business cases before starting with coding.
2) They declare variable names, function name, file name which are meaning full. They avoid declaring variable with name “i” or ”j”.
3) They prefer code re-usability.
4) They write optimized code. Every server side API written should give results in less than 1 second. Every UI page should be rendered in max 3 seconds.
5) They Unit test code properly before confirming to manager that functionality is done from their side.
6) They are focused on writing code which other programmer can understand.
7) They communicate and discuss with fellow programmers before updating their code.
8) They are always focused on learning new ways of writing better code. They read a lot on software architectures, blogs of successful programmers. They remember which code of their was written poorly or needs improvement and do required improvements.
9) When functionality/code they have worked on is NOT working, they do NOT blame fellow team-mates or say it’s working on my local environment.
10) They are always focused on how they can improve their productivity. Which tools can help them in achieving that or at what time of day they are productive? Remember, coding need a lot of focus.
Attributes of Bad Programmer
- They write code which needs rework again and again to achieve the desired functionality.
- They DO NOT unit test the code properly.
- They write code which takes minutes to load UI page or API to respond.
- They don’t think while writing code that what will happen when my code will be used by 10 thousand, 1 lakh or 5 lakh people.
- They write same lines of code in every file. I mean they duplicate code.
- They keep thinking about how to achieving the functionality rather than just getting their hand dirty with coding.
- They expect some 100 page document on required before starting with coding. Waterfall model days of development are over. Product needs to be shipped fast to customers.
- They are not good team players. By this I mean they don’t talk before editing code of fellow programmers. They avoid talking to manager about the problems they face. They want to solve all complex problems on their own rather then discussing and taking help from fellow team-mate.
- They give estimates on new feature or enhancement without properly understanding how it will be achieved or in what shape current code is.
- They become arrogant and egoistic once they master one skill/programming language. They start believing that organization or company is running because of code they have written. They stop learning.