Lesson Learned at Work

Lesson Learned at Work

Here, I would like to write down the lessons I learned at my work.
Hope I can learn something, bear them in mind, and won't repeat similar mistakes twice.

Misleading API - Calendar.before
The parameter of Calendar is Object, so I mistakenly pass a Date object, and it just always returns false.
public boolean before(Object when)
Lesson Learned:
Ensure to use Calendar as the parameter for these operations.
These before, after APIs in Calendar are really bad.
Design your API wisely.
Add a new field DaysToExpire to User Class.
This value is calculated dynamically at server: Its formula is like this:
DaysToExpire of user = Expiration days of system password setting - {current time - the user's last password change time}

Simple? But there are several things that must be considered.
1. DaysToExpire of user < 0, what value it will show to user?
A value like -30 may confuse user.
2. What if Expiration days of system password setting is 0, means password never expires, what value it will show to user?
3. Compatibility issue
As this value is newly added, we must consider what will happen when client and server are in different version: old client - new server, new client - old server.

Especially, in new client - old server, as old server doesn't include this field, client would always get 0 for DaysToExpire? Is this suitable? If not, what value should be displayed?

Learn and know common problems/issues.
Think and consider more, things are always not easy as they appear.
Event: Innovation Idea Presentation
Need Improve Presentation Skills and Public Speaking Skills are important.
Improve the skills to Speaking without Notes

Improve English Listening and Speaking Skills
Need Improve Time management Skills
Give more time to important thing.

Make well preparation for the important stuff.
Take your time and effort to do important thing.

Be brave and take responsibility
Answer the question as possible as you can.
Lesson 1
We use Google WindowTester Pro to automate UI test for our Eclipse RCP test.

It runs well in my laptop, but can’t run in my colleague computer.
The UI test can be started, but it doesn't replay mouse click event.
We dug it for a while, and at last my colleague brought up that this may be because his left and right mouse buttons was swapped, so we tried to change it back, and it worked.

We both knew the fact he has changed the left and right mouse buttons.
But it took us a long time to realize that it may be the root cause of this problem.

Lesson learned:
Reason logically, and think.
For this kind of problem, think and compare what's the difference between my and his environment, consider all possible reasons, and guess, and exclude them one by one.
Run simple unit tests first
When debug and run unit test for your change, usually multiple test-cases should be covered, design your test cases carefully, categorize them and consider all cases.

And run unit tests that are simple, quick, safe and easy first. After they are passed, run the tests that are slow, hard or even danger later.

Use correct jdk in your project; otherwise you may use java methods that don’t exist in JDK used in production environment.

No comments:


Java (161) Lucene-Solr (112) Interview (64) All (58) J2SE (53) Algorithm (45) Soft Skills (39) Eclipse (33) Code Example (31) JavaScript (23) Linux (22) Spring (22) Tools (22) Windows (22) Web Development (20) Nutch2 (18) Bugs (17) Debug (16) Defects (14) Text Mining (14) Troubleshooting (14) J2EE (13) Network (13) Tips (12) PowerShell (11) Chrome (10) Problem Solving (10) Design (9) How to (9) Learning code (9) Performance (9) Security (9) UIMA (9) html (9) Http Client (8) Maven (8) bat (8) blogger (8) Big Data (7) Database (7) Google (7) Guava (7) JSON (7) Shell (7) System Design (7) ANT (6) Coding Skills (6) Lesson Learned (6) Programmer Skills (6) Scala (6) css (6) Algorithm Series (5) Cache (5) Continuous Integration (5) IDE (5) adsense (5) xml (5) AIX (4) Become a Better You (4) Code Quality (4) Concurrency (4) GAE (4) Git (4) Good Programming Practices (4) Jackson (4) Life (4) Memory Usage (4) Miscs (4) OpenNLP (4) Project Managment (4) Review (4) Spark (4) Testing (4) ads (4) regular-expression (4) Android (3) Apache Spark (3) Distributed (3) Dynamic Languages (3) Eclipse RCP (3) English (3) Happy Hacking (3) IBM (3) J2SE Knowledge Series (3) JAX-RS (3) Jetty (3) Mac (3) Python (3) Restful Web Service (3) Script (3) regex (3) seo (3) .Net (2) Android Studio (2) Apache (2) Apache Procrun (2) Architecture (2) Batch (2) Bit Operation (2) Build (2) Building Scalable Web Sites (2) C# (2) C/C++ (2) CSV (2) Career (2) Cassandra (2) Fiddler (2) Google Drive (2) Gson (2) How to Interview (2) Html Parser (2) Http (2) Image Tools (2) JQuery (2) Jersey (2) LDAP (2) Logging (2) Software Issues (2) Storage (2) Text Search (2) xml parser (2) AOP (1) Application Design (1) AspectJ (1) Chrome DevTools (1) Cloud (1) Codility (1) Data Mining (1) Data Structure (1) ExceptionUtils (1) Exif (1) Feature Request (1) FindBugs (1) Firefox (1) Greasemonkey (1) HTML5 (1) Httpd (1) I18N (1) IBM Java Thread Dump Analyzer (1) Invest (1) JDK Source Code (1) JDK8 (1) JMX (1) Lazy Developer (1) Machine Learning (1) Mobile (1) My Plan for 2010 (1) Netbeans (1) Notes (1) Operating System (1) Perl (1) Problems (1) Product Architecture (1) Programming Life (1) Quality (1) Redhat (1) Redis (1) RxJava (1) Solutions logs (1) Team Management (1) Thread Dump Analyzer (1) Visualization (1) boilerpipe (1) htm (1) ongoing (1) procrun (1) rss (1)

Popular Posts