To me, memorizing relationship between modules to make sure my test cases cover most commonly used combinations is the hardest. And I'm still figuring out better solution.
The hardest part is planning what you are going to write; that is, identifying the most important of the possible things to test. The writing itself should be fairly straightforward.
How are you identifying important cases to cover right now? I rely on QA and she uses TestRail to manage but it's still common to miss out some important flow.