Hmmm I am a freelancer and also a co-founder in multiple startups so my roles are along the lines
- Technical Lead
- Team Lead
- Consultant
- Developer
- Administrator
- Project Management
- Software Architect
Which basically cotains these parts:
- I write PoCs for companies (Message-bus-systems, Consumer-Producer patterns, Filter application, Market places, HA, blabla...)
- I plan projects (Time, Money, Teams, Externalities, Velocity, Sustainability, Market analysis, Price-Research, A/B Acceptance Testing ...)
- I sit in meetings (Basically trying to comprehend what the others want as far as it is possible for me)
- I update and maintain the infrastructure (I have several servers of customers which I try to keep secure and up to date)
- I build UI and try to stay up to date (patterns, design principles, layouts, technology, javascript, react, angular, etc)
- I build backends and try to stay up to date (patterns, architecture, languages, protocols, ....)
- I build the infrastructure for the backends and try to remain up to date (Virtualizations, Containers, Servers, loadbalancers, CPU architectures ....)
- I 'lead' a team of developers in one company and try not to screw up to much.
- I try to create test-setups and do some DevOps
- I write finance plans
- I hire people
- I review code
- I discuss code
- I explain code
- Currently one of the startups I co-founded is working with a university and I have to create an algorithm
I think that's basically it.... it can be a bit much esp. jumping languages and technologies a lot ... on the other side I love learning .... Still the last 3 days were 14h meetings + administration and only 4 hours of coding ... this is not my favorite part. :)