RSS feed [root] /weblog /software_engineering



title search:


Tue Nov 29 00:10:37 HKT 2016


(google search) (amazon search)
download zip of files only

Mon Aug 28 19:17:18 HKT 2017 From /weblog/software_engineering/testing


The evil test:

1. Evil tests create a lock on how the code is implemented.
2. Cause duplication.
3. Builds uncertainty on the tests (red is meaningless).
4. Decrease productivity.
5. Discourage change.

use thread in junit -[..]blog/2007/11/05/false-positives-in-junit

Don't try to test everything -[..]ay?entry=unit_testing_avoiding_extremism

Why TDD fail? Because test is too complicate to write - ( I agree it a lot )

Hard to test something? Unreadable tests? Slow running tests? It takes too long to write a test? Some solution suggested -[..]/last-d-in-tdd-means-more-than-just.html

Comment out test so that the code compile -

A list of TDD antipattern -

And the long discussion using random in unittest -[..]rivendevelopment/message/20458?var=1&l=1
Here is an example of using random in unittest, it actually same for every new instance! -

Test abstraction smells -[..]com/2011/11/test-abstraction-smells.html

Basically, we should keep it simple, and driven the development rather than post test -[..]stteam/Posts/13-01-24/top-5-tdd-mistakes

A good list of anti-pattern -[..]2014/05/06/getting-unit-testing-to-fail/
Test rely on shell script return is difficult to maintain, say the script running at background can cause problem -[..]m/2014/01/10/another-shell-test-pitfall/

Six Things That Go Wrong With Discussions About Testing -

(google search) (amazon search)

Tue Aug 08 22:57:56 HKT 2017 From /weblog/software_engineering/SCM


Why merge often -[..]/cgi-bin/cmwiki/view/CM/BranchYesMergeNo

A lot of resource here -[..]i-bin/cmwiki/view/CM/BranchingAndMerging

At my company, we tag each CVS module and we use those tags to build releases. That way, we know exactly which code versions each deployment has. Also, developers can check in code at any point while controlling when they release it.

Branches are a major headache, which I avoid whenever possible. You have to worry about maintaining and testing each branch, along with merging changes. I prefer to release the latest and greatest code to each customer. If different customers require different behavior, if statements and configuration files are a lot better than CVS branches.

Branches do make sense if you want to release a minor change to an old release, but upgrading the entire code base is risky. However, high-quality code and testing should reduce that risk.[..]arent=16312&ixDiscussGroup=3&cReplies=11

Subversion branching technique and tips -[..]version-best-practices-branching_01.html[..]version_tips_dealing_with_branches.html/

Another discussion -

Branch visualization -[..]07/05/linus-torvalds-on-git-and-scm.html

One way of manage branching and merging, the summary is, frequency create new branch for pre-merge instead of one time big merge -[..]old-you-about-svn-branching-and-merging/ My colleagues suggest subversion merge tracking can solve the problem without that pre-merge, but I am not sure how that can work...

No branch?[..]-of-code-in-a-single-repository/fulltext[..]s/2017/08/How-Google-build-Web-framework

(google search) (amazon search)

Mon Jul 03 01:03:21 HKT 2017 From /weblog/software_engineering


Painless Functional Specifications -

How to write a project specification -

(google search) (amazon search)

Sun Jun 11 19:36:25 HKT 2017 From /weblog/software_engineering/SCM


Suggestful github project -

GIT to SVN command guide -[..]vs-svn-commandline-syntax-reference.html

pretty cool guide -[..]e-to-an-ioke-dev-env-from-source-part-1/[..]rticleId=240160261&siteSectionName=tools[..]&siteSectionName=architecture-and-design

Some comments about possible issues -[..]an-streamline-your-writing-projects.html

Several ppl blog about why GIT better than SVN -[..]tages-of-git-over-subversion-svn-a-brief[..]03/09/its-time-to-stop-using-subversion/

A suggested branching model -

Some advantage of GIT over Mercurial -[..]hy-i-switched-to-git-from-mercurial.html

#undo last commit
git reset HEAD^

#show files in a given commit
git show --pretty="format:" --name-only rev_number

#remove untracked files and directories
git clean -f -d

#track remote branch
git branch --track branch_name origin/master

# given you created a new local branch 'branch_name'
# pushes 'branch_name' to 'origin/branch_name', creating the remote branch for you
git push origin branch_name

#delete remote branch
git push origin :remote_branch_name


Some more suggested workflow -

Move from SVN, experience of JIRA -[..]from-subversion-to-git-and-the/240009175

Merge or Rebase?[..]13/10/git-team-workflows-merge-or-rebase[..]ntial-tips-for-git-and-github-users.html

change-default-git-commit-message-template -[..]nge-default-git-commit-message-template/

Git cheat list -[..]re-development/git/git-commands-tutorial

(google search) (amazon search)

Thu Mar 30 14:47:41 HKT 2017 From /weblog/software_engineering/testing

test data

Suggestion of how to manage the test datas -[..]citcon-melbourne-2008-managing-test.html

Difference Pattern of managing test datas -[..]damentals-of-data-testing-setup-and.html

How to get the data feed and design automated test trading system -[..]m/2011/02/16/trading-system-testability/

False assumption about time -[..]alsehoods-programmers-believe-about-time

Create your own clock -[..]3/12/the-virtual-clock-test-pattern.html

Just change the return of Calendar -

Discussion about creating test data -[..]est-data-builders-and-object-mother.html[..]r-data-access-code-unit-tests-are-waste/

Dummy, fake, stub, spy and mock -[..]

Generation of test data -[..]/tools/open-source-test-data-generators/

Using test container, and compare it with other test data solution -[..]28/database-testing-with-testcontainers/

(google search) (amazon search)

Tue Mar 21 14:31:55 HKT 2017 From /weblog/software_engineering/team


Recently I help the company offshore some work to CN developers, many difficulty I've encounter, most difficult one is it is hard to share the vision and big picture to CN developers.

This article mention a few good notes , the one I think I am lacking is having short meeting with them often. I will see if we can have video conferencing so that we are easier to meet.

The other tips here -[..]_id=45367&asrc=EM_NLN_1439070&uid=703565 but I think the tips list is too long and probably only apply to large enterprise

Tips of communication with offshore team -[..]on-in-software-development-projects.html

(google search) (amazon search)

Sat Feb 25 18:26:46 HKT 2017 From /weblog/software_engineering/testing

best practices

Consider the risk of not being tested -[..]sting-on-toilet-risk-driven-testing.html

Fidelity, Resilience, Precision -[..]testing-on-toilet-effective-testing.html

Attributes that unit test should have: Functionality, Accuracy, Instant, Locator -

Isolation -[..]/2012/04/is-your-unit-test-isolated.html

Tips of keeping unit tests running fast -

Testing Patterns -

Continuously to break thing so that we know our system is solid -[..]11/04/working-with-the-chaos-monkey.html

First rule -[..]08/10/01/nothing_is_too_trivial_to_test/

Test first/last is not important? Unit test either? What do you think?

* The name of the test should describe the requirement of the code
* There should be at least one test for each requirement of the code. Each possible path through of the code is a different requirement#
* Test the goal of the code, not the implementation[..]AppQuality&asrc=EM_NLN_761453&uid=703565[..]og/2007/08/how-not-to-run-beta-test.html

The teaser: Fast, Isolated, Repeatable, Self-validating, and Timely. -[..]es/2007/08/02/not-a-task-but-an-approach

Corner cases -[..]s/2007/02/testheuristicscheatsheetv1.pdf

One of the targets of TDD coding -[..]e-code-is-about-managing-complexity.aspx

Design for unit test -[..]es/content/DesigntoUnitTest/article.html

Push and Pull approach -

When not to test -

Test the story, rather than the implementation -[..]ving-to-scenario-based-unit-testing.html

Test the configuration -[..]TSS10ctqa&asrc=EM_NLN_8746433&uid=703565

Feel the deep synergy of design and test constraint -[..]athers_blog/2007/09/the-deep-synerg.html

Another set of principles for automated testing -[..]of-principles-for-automated-testing.html

Priority for tester -[..]

A lot of links -[..]-links-biased-toward-exploratory-testing[..]nit-tests-5-principles-for-unit-testing/

Some information and suggestion about setting up a local integrated testing environment -[..]

Virtual Panel: Code-to-Test Ratios, TDD and BDD -

A test is complete when its body contains all of the information you need to understand it, and concise when it doesn't contain any other distracting information. -[..]ting-on-toilet-what-makes-good-test.html

Discussion about naming the tests -[..]14/03/17/getting-junit-test-names-right/[..]ting/writing-clean-tests-naming-matters/[..]esting-on-toilet-test-behaviors-not.html <- Test behaviour, not method. This will make your tests more resilient since adding new behaviors is unlikely to break the existing tests, and clearer since each test contains code to exercise only one behavior.

Tips on having better assertion or cleaner test -[..]ur-test-code-with-custom-assertions.html[..]-friday-most-internal-dsls-are-outdated/[..]ertions-with-a-domain-specific-language/

Good to prevent setup and tearDown?

#1 Treat Test Code as Production Code
#2 Use Test Patterns to achieve great readability
#3 Avoid Unreliable Tests
#4 Test at The Appropriate Level
#5 Do Use Test Doubles[..]insights/blog/write-better-tests-5-steps[..]om/core-java/junit/junit-best-practices/

Document ‘Why’, specify ‘What’, automate ‘How’ -[..]/agile/2016/05/24/large-test-suites.html

(google search) (amazon search)

Tue Feb 21 17:42:46 HKT 2017 From /weblog/software_engineering/team


Servant Leadership -[..]t-be-my-style-of-servant-leadership.html , similarly, what a leader should do is helping other to do better, not to be the best of the team -[..]/03/onthings-manga-taught-me-leadership/[..]what-do-you-look-for-in-a-servant-leader

Mentorship -[..]entorship-in-software-craftsmanship.html

Keep focus, or lose -[..]0/how-steve-jobs-influenced-googles.html

The anti-pattern and suggestion about new joiner -[..]-you-will-face-as-a-software-team-l.html

Believe me, the objective was not to make decisions, but to create the right environment so that the right decision would be made.

A nice set of questions to ask for a leader -[..]3/questions-on-influence-and-growth.html

In short, don't put your shoes on others' foot -[..]earned-in-the-army_Printer_Friendly.html

4 types of leadership style, well, I think he model leadership a little too simple -[..]s-the-best-leader-for-the-software-team/

Your experts are spending all their time mentoring novices. Therefore:

Put one expert in charge of all the novices, let the others develop the system. -[..]010/2/25/organizational-pattern-day-care

What is the key Characteristics of great team -

This is very insightful obversation, in many time we look into something work in short term but not really solve the problem, a discussion about why so many people like micromanagement even if they know it is bad -[..]m/2011/01/programmers-and-micromanaging/[..]best-thing-you-can-do-for-your-team.html <- is provide required information, probably more transparent.

Don't make me think... but you have no business not allowing me to think if I choose to. -[..]allow-me-to-think-just-dont-make-me.html

How To Lead Clever People, actually I am double about this, let's see -

How to grow the leadership -[..]og/mpd/2012/11/nurturing-leadership.html

他在公司的名言是「When you give, you get」。他在上海成立科研中心,大方讓上汽參與,他認為各懷鬼貽的氣氛不可能做出成績。合資公司理論上是獨立個體,合資公司員工應把合資公司利益放到最前,而不是自己原屬公司的利益,但很少人做得到。慢慢下來,上汽也逐漸對墨菲產生尊重。


10. 永遠記得,做出決定前要先綜觀全局。

9. 否定別人跟切換開關一樣容易。但你最好拼死抵抗這種衝動,因為你也曾經做過蠢事。你做過爛決定,然後學習、成長,別人也一樣。

8. 掃地、擦桌、關燈。哪裡有漏洞要補就去補——即便那很瑣碎、沒人會注意。你必須做這些事去造福你的產品、你的公司,以及所有你們團隊共同打造的,令眾人驚艷、神奇的事物。

7. 你無法做所有的事。閉上眼睛,向後仰倒,學會信任。

6. 顯然有某種更為有效的方法能處理你正在做的事。是什麼呢?在每天回家的路上反覆思考吧。

5. 找出總是在依賴你的人,想想要怎麼做才能協助他們,讓他們自力更生。或許你覺得當個壟斷市場的鮭魚供應商很重要,但如果小鎮的所有人都學會捕魚,便能將你解放出來去做別的事。像是學習種小麥,或是如何馴服那些可愛的小狼。

4. 別說任何對當下討論沒有貢獻的話。你的聲音並非悠揚到絕對必須被聽見。

3. 做得出最好的決定比不上處在得以確保做出更多最佳決定的流程。

2. 就像你經常發表意見那樣,多說感謝和鼓勵的話語。

1. 最重要的是:永遠要掃除障礙物。那怕只是玩玩手指、看看窗外的雲,也別讓你那愚蠢、幼稚的自我阻礙團隊前進的腳步。[..]oftware-leadership-6-read-every-checkin/[..][..]op-5-mistakes-for-first-time-tech-leads/

How to lead with diplomatic -[..]how-to-be-both-assertive-and-diplomatic/

Dr. Nico Rose cites research that finds that happy people tend to be more effective leaders. -[..]-your-money-managing-your-life-part-one/

(google search) (amazon search)

Fri Jan 06 22:08:55 HKT 2017 From /weblog/software_engineering/team


Discussion toolkit -[..]YCOLUMN&ObjectId=12875&objecttype=ARTCOL

Other tips -

Appreciation inquiry, a communication tool helping adopting new thing -

A lot of engineer will silence when under stress, how do you communicate with them that time? Here are some suggestions -[..]048&elq=1C1DC5420DC8451CB08AEBA44D4F6BC7

There are five dangerous faults, which may effect to a software engineer:[..]/the-five-faults-of-a-software-engineer/

Benefit of whiteboard over software, communication! -

How to communicate with difference type of learners
Active versus reflective learners: "Active learners tend to retain and understand information best by doing something active with it--discussing or applying it or explaining it to others. Reflective learners prefer to think about it quietly first."
Sensing versus intuitive learners: "Sensors often like solving problems by well-established methods and dislike complications and surprises; intuitors like innovation and dislike repetition."
Visual versus verbal learners: "Visual learners remember best what they see--pictures, diagrams, flow charts, time lines, films, and demonstrations. Verbal learners get more out of words--written and spoken explanations. Everyone learns more when information is presented both visually and verbally."
Sequential versus global learners: "Sequential learners tend to gain understanding in linear steps, with each step following logically from the previous one. Global learners tend to learn in large jumps, absorbing material almost randomly without seeing connections, and then suddenly 'getting it.'"[..]/03/rich-communication-in-real-life.html

How to handle tough discussion -[..]iscussing-the-undiscussable-book-review/

Good message structure underlies all forms of effective workplace communication -[..]ood-message-structure-underlies-all.html

A methodology to test the feeling of the team -[..]2/12/web-discussions-flat-by-design.html

It is the most important skill for programmer -[..]/the-most-important-skill-of-programmer/ and also there are pointer of how to improve your communication skill

Slack is good? -[..]per-day-on-slack-29f8b08c0d82#.l27wrcft0

(google search) (amazon search)

Tue Nov 29 00:10:37 HKT 2016 From /weblog/software_engineering


“Introduction of Lean Project Management” -

Applying Kanban -[..]s/applying-kanban-to-it-processes-part-2[..]-and-kanban-for-it-operation-kanban.html

Deming’s 14 Points, obvious and theoric, but still a good reading -[..]ng-lean-thinking-to-software-development

Free Online Kanban Tools -

(google search) (amazon search)

Tue Nov 15 16:56:18 HKT 2016 From /weblog/software_engineering/testing


Being proactive! -[..]to-be-first-class-citizen-as-tester.html

Well, of course it say yes...... -[..]6/27/software-testers-need-learn-coding/

(google search) (amazon search)

Mon Oct 10 00:25:13 HKT 2016 From /weblog/software_engineering


(google search) (amazon search)

Tue May 10 23:07:56 HKT 2016 From /weblog/software_engineering


How to produce damn good software -

Recommendation of managing bugs -

Collecion of link about software engineering -[..]01/selection-of-successful-software.html

The Big Ball of Mud and Other Architectural Disasters -

1. – Have a clear development process.
2. – Understand the vision and goals of the project.
3. – Use iterations.
4. – Transparency.
5. – Commitment.
6. – Leadership
7. – Customer focus.[..]echnical-tips-to-deliver-great-software/

If it aint broke, don't fix it; vs continue improvement - , one good question asked is, what mean broken? Bug? or Quality? What is Quality?

The Mythical Man-Month Revisited -

Story from QuickBooks -[..]rticleId=240003694&siteSectionName=tools

How long did the source code live? -[..].uk/2016/02/24/longevity-of-source-code/[..]arn-from-real-examples-how-to-avoid-bugs

(google search) (amazon search)

Thu Feb 18 11:12:52 HKT 2016 From /weblog/software_engineering


Examples of stories -

Introduction to story point -[..]in/2011/03/questioning-story-points.html

Imperative vs Declarative Scenarios in User Stories -[..]clarative-scenarios-in-user-stories.html

Turn good story to great
1. Get your story right
2. The unwritten rule of what goes inside
3. Choose your words carefully
4. Use acronyms sparingly
5. Convention over OVER-complication


Checklist for user story -[..]hecklist-for-effective-user-stories.html

See the picture in your backlog. -[..]012/03/how-to-create-user-story-map.html

INVEST mnemonic to describe the characteristics of good stories:

Independent: the stories can be delivered in any order
Negotiable: the details of what's in the story are co-created by the programmers and customer during development.
Valuable: the functionality is seen as valuable by the customers or users of the software.
Estimable: the programmers can come up with a reasonable estimate for building the story
Small: stories should be built in a small amount of time, usually a matter of person-days. Certainly you should be able to build several stories within one iteration.
Testable: you should be able to write tests to verify the software for this story works correctly.

Story Mania, User Incognito, Disastrous Details, Story Handoff, Criteria Crisis -[..]er-stories/5-common-user-story-mistakes/

Define Motivations, Don't Define Implementation -[..]replacing-user-story-with-job-story.html

Why large team is not suitable to use user story to collect requirement -[..]/07/user-stories-dont-work-for-most.html

How to split stories -[..]tting-user-stories-the-hamburger-method/

Visually mapping story to backlog -[..]ping-visual-way-building-product-backlog

(google search) (amazon search)

Thu Feb 18 11:12:10 HKT 2016 From /weblog/software_engineering/testing


UnitTest DB, check if proper index applied -[..]og/2012/09/test-driving-database-indexes[..]an-integration-testing-with-junit-rules/[..]ust-say-no-to-more-end-to-end-tests.html

(google search) (amazon search)

Wed Jan 13 18:42:54 HKT 2016 From /weblog/software_engineering


Here is one way of how people estimate percent of completion -

I believe the general practice in my company is to take your estimate and triple it. Noone EVER complains that a project was completed too quickly. -[..]iscussTopicParent=15151&ixDiscussGroup=3

McConnell: 25% isn't necessarily a bad number. What's bad about it is that the average project is something like 100% late and 100% over budget at the time it's shut down. With better development approaches, a lot of those projects would get shut down when they've used 20% of their budgets rather than 200% of their budgets.

Schedule chicken , someone leave the responsiblity to other sliencely -[..]ion=edetail&ObjectType=COL&ObjectId=7923

If you need to deliver software in 9 months, you could make a plan to deliver software in 9 months and hope it works. Or you could start delivering software every week. Maybe in the first week you aren't so good at it but after four weeks you and the rest of your team will be better. I call it the reduce risk by practicing technique. I can't believe how many people line up against me on this, even quality experts. - Ward Cunningham

Estimate via experience -[..]mating-software-feature-development.html

Explain what is Velocity in scrum -[..]2008/01/understanding-your-velocity.html

Concern about estimation -

Test Effort Estimation -[..]mation_approch-bid-00oQI1TW93593159.html

Reducing focus on estimation, I think it is good move, as estimate always inaccurate -[..]se-for-reducing-focus-on-estimation.html[..]ng-budget-instead-of-estimates-in-agile/

Discussion about noestimates-software-contractors -[..]2016/01/noestimates-software-contractors[..]2015/12/noestimates-software-contractors

(google search) (amazon search)

Thu Dec 03 23:56:46 HKT 2015 From /weblog/software_engineering


Developers working in Production. Of course! Maybe, sometimes. What, are you nuts? -[..]developers-working-in-production-of.html

(google search) (amazon search)

Thu Oct 15 15:28:11 HKT 2015 From /weblog/software_engineering/project


Semantic Versioning 2.0.0 -

(google search) (amazon search)

Sun Sep 27 17:24:51 HKT 2015 From /weblog/software_engineering/team


Stop Demotivating Me! -

The key takeaways are a number of tools that you can use to try to help yourself or help others follow through on their goals. One key takeaway is that whenever you want to help somebody follow through on a goal, one thing you should do is actually prompt them to think about exactly when and where and how they will accomplish that goal. -[..]at-make-a-big-impact-on-achieving-goals/

(google search) (amazon search)

Thu Jun 11 11:41:22 HKT 2015 From /weblog/software_engineering


The crucial bridge between theory and practice is called execution -[..]l/2012/2/22/importance-of-execution.html

Analysis for Continuous Delivery: Five Core Practices

1. Start with a minimum viable product (MVP).
2. Measure the value of your features.
3. Perform just enough analysis up front.
4. Do less.
5. Include feature toggles in your stories.

Discussion about various issue when thing change -[..]ankensystems-half-strangled-zombies.html[..]-patterns-in-development-and-operations/[..]/06/08/deadly-sins-software-project.html

(google search) (amazon search)

Thu Apr 09 12:10:12 HKT 2015 From /weblog/software_engineering/testing

GUI test

How to write unit test for RCP application in eclipse -

and functional robot tester -[..]ame/2007/12/18/announcing-swtbot-01.html

A lot of links of tools -

CI for eclipse RCP -

Don’t write E2E tests instead of UI tests. Instead write unit tests and integration tests beside the UI tests.
Hermetic tests are the way to go.
Use dependency injection while designing your app.
Build your application into small libraries/modules, and test each one in isolation. You can then have a few integration tests to verify integration between components is correct .
Componentized UI tests have proven to be much faster than E2E and 99%+ stable. Fast and stable tests have proven to drastically improve developer productivity.

(google search) (amazon search)

Wed Mar 18 16:30:39 HKT 2015 From /weblog/software_engineering


> I followed this thread for a while and I've a question. What is an
> average number of "good" sloc a developer can produce daily?

> I know it depends on language, developer skill etc. but you, with your
> experience, how many good sloc will write today?

Today so far I deleted more than I wrote.[..]/group/extremeprogramming/message/140866

Why pushing unreasonable deadline is bad -

Software is about discovery -[..]covery-when-i-grow-up-i-want-to-be-jeff/

Improving Happiness at Work: Positive Practices and the Power of the Positive Question -[..]-the-power-of-the-positive-question.html

Some tip to improve productivity -[..]/10/boost-up-your-development-speed.html

20 Things Developers Should Stop Saying -[..]/20-things-developers-should-stop-saying

Why deadline is useful? It help focusing on a small target -[..]90%E7%9A%84%E5%8A%9B%E9%87%8F/index.html

The golden cycle of sustainable management, and why we doesn't able to achieve that -[..]m/the-golden-broken-management-approach/

Caffeine is a Zero-Sum Game -[..]need-to-stop-doing-to-be-more-productive

(google search) (amazon search)

Thu Feb 26 16:04:04 HKT 2015 From /weblog/software_engineering


Practicing refactoring -[..]ticles/refactoring-external-service.html

One new refactoring for making interface change -

(google search) (amazon search)