Hi,
No you are right. What you can do is use the async attribute on the first task.
So then the process will be started, and the start event will be processed and the first sequence flow will be taken. But when the first task needs to be processed, it will do it asynchronously.
So you get the process instance back from the startProcessInstanceByKey method before the process engine will execute the first task.
Best regards,