What qualities a good developer should have in addition to technical knowledge?