What is the optimal workflow?

So I’m at the point where I can get basic things done, but it appears I’m either doing repetitive work or doing things in the wrong order.
Yesterday I tried to model a keyboard. I decided to make all the concave first, and later put the keys into the concave. I kinda used shift+D to duplicated through the process. But when it came to making the surface of the keyboard, I found I would have to select all the edges between these concave and press F to fill in the gaps, because if I simply selected the edges at the outermost and press F the concave would be covered. It ended up pretty tedious work. But I couldn’t come up a better way to do it.

Then today I tried to model the iphone 5s. I wasn’t sure but I decided to model all the geometry on the phone first, and I would ctrl+B bevel the edge of the phone at last. After I added all these holes for USB and earphone plugs using Boolean modifier, I found the result of bevel is flawed. Since there were already edges and vertices crossing here and there around the corner, the bevel was made according to these geometry. It would appear to be really quirky like it was dropped on the floor. I ended up fixing the geometry at every corner by merging and pulling vertices.

I learnt modeling by following a udemy blender tutorial. It taught me a lot by guiding me through a few examples. But how can I get to learn the optimal workflow, so I can avoid doing repetitive or extra work?
Many Thanks for helping!

Attachments



for a keyboard i would make one key, and use array modifier

I think it comes down to just learning what tools and methods are available to do certain things easier. You learn that by reading through threads on web sites like BlenderArtists and watching tutorials, even if you don’t think it would help you. This helps expose you to new tools and methods. After you do a project, you may realize that you did it the hard way. That is not bad. It is good that you now know how to go faster. So, pay close attention to how you could possibly approach things easier. Topology is something that you could probably never see enough of.

To build on the keyboard construction…
For the keys, you would need more than one array modifier due to how they are offset. I suggest using linked duplicates (ALT+D) in addition to the array modifier. I also suggest using a single material for all of the keys. You could use a texture coordinate driven by a single empty or a texture projected from another object.