software skills required for civil engineering