I'd plan it this way:
The specific tests that are written 'before the code' are unit tests that are written by developers just before they write the actual code.
It should only take 5-20 minutes to write a simple test. The test is written, the code is written for it and then the test is changed or the next test is written and then more unit level code is written. This happens on the time scale of seconds to minutes.
Don't get too hung up initially on writing the unit tests before the code because a) you may not be familiar enough with the approach to do it smoothly and b) sometimes its hard to do. Initially focus more on every function and block of code currently being written having tests + code when that change is added in to the master code base. Over time developers will be able to write more and more tests before the code itself.
When the feature that uses all the components above is ready (time scale of hours to days) then QA can start testing it manually and also by writing automated end-to-end feature tests.
What can QA do before the feature is ready? Plenty of things - pair on test plans with developers, learn the domain, work on test cases with the product owner, etc.
I would also modify your development tasks a little as follows:
- Write simple unit test(s) with application code to ensure that it fails (important!)
- Write working code that will then make just that new unit test pass
- Repeat above two steps until the new or changed feature is complete
- Refactor as desired
- Code review for new/changed unit tests & code by developers and QA
- Ensure that all the other unit tests still pass or go back to first step
- Ensure all tests (unit, integrated, features, performance, etc.) pass or fix them and/or the code
- Refactor as desired
- If new integrated / feature / performance tests are needed, write them
- Code review for new tests & code
- Refactor as desired
- Release
This also emphasizes that initially you are working on just the new test and code and not even running other tests until that is done.
Also consider branding the testers who write actual test code as performing QE (Quality Engineering) over QA (Quality Assurance) which tends to have more of a connotation with manual testing (only).
Approach all of this as a team. Work in the same physical space. Talk about the functionality, the design patterns, the tests and the code as a team. Make sure you don't have physical or mental walls that are separating 'testers' from 'developers'. Try using language that first defines everyone as engineers and then you can have mention of the those who focus on the testing area (especially reflecting actual users) and those that focus on the unit code and tests (traditional developer roles).
You will be looking to hire for the role SDET - Software Development Engineer in Test. You should aim to have at least one experienced engineer to lead and then you can have more junior folks
See also:
Who writes stories and tests in Agile? BA or tester?
Fitting regression testing in a Agile/ Scrum development cycle