Really good cooks have experience around cooking dishes and know that they can substitute somethings, they can cut down on the butter and it will taste just fine, or that it needs a bit more ginger than the recipe asks for.
Really good chefs can be handed a recipe and transpose it to use different ingredients or meet different needs (Vegan? no problem! Gluten free? Gotcha!, Etc.) They know their transposition will work because they understand the chemistry that is creating the texture and flavor of the dish they are preparing.
I tend to think if software engineers as the folks who understand the principles behind computation, data structures, and languages which informs their choice of algorithm, or their effort to transpose an algorithm to meet the current need.
I think of coders as the folks who understand how the code they are looking at works and can adapt it to their needs, as long as those needs are not too far different than the original purpose the code was written for. In that case they go out and search for a different chunk of code to start from.