double entry accounting for software engineers