Hi all,
I've been in the industry 11 years. 1st few were in internal tools for a well known company. Anything from SysAdmin, Scripting, Lite Java dev, to using Docker and Apache Mesos.
Then I spent a year working on a web application product for another well known company focused on performance and scalability (Some Java and Javascript development, Analysis and defects). Then 2 years working with customers on that application and providing enhancements, primarily through JavaScript scripting.
Last 3 years, I had an idea and on the side created a new product for my company from ~scratch using Java, Spring Boot, React, Hibernate, Liquibase. I've put 1000's of hours into it myself and this has been an awesome opportunity as learned everything from server-side, client-side security, etc. Sold it for ~700k to couple customers and applies directly to many of our other customers
It started off as a prototype (monotholic on-premise app due to the nature of our customers that I turned into product. Developed most myself until this last year, when I ran a team of 10 engineers and QA members to take it from the Alpha state I created it to a full 1.0 version. Everything from requirement specifications, architecture decisions, development, and people management. Operated really as a tech lead.
Downside of this short schedule is it was more a startup style operation, so we didn't have time for practices in place for proper Unit Testing, although I'd like to rectify that. Did set up basic CI/CD using Jenkins. Any technical hurdle I came to I solved it. Was a great experience in learning how to learn and whereas previously a massive codebase I worked on seemed larger, finally understood that it just comes down to identifying the problem, and keeping moving to the next part and a resolution will come.
My strengths are:
*Leading others, people enablement and fostering a collaborative team and encouraging growth of others
*Planning, extremely detail oriented
*Working with customers, deriving requirements, etc.
*Strong critical thinking
*Extremely hard worker and driven
*Generalist, good *nix skills, SQL skills, learning a new technology quickly, and figuring out what needs to be done next and crafting a plan for it.
*Java developer
**Need a better testing focus, I've done unit testing light-weight, and did tutorials on Mockito/etc acceptance tests - it's not hard, just need a chance to apply it again in my next project. I love process and being thorough, so don't see any issue with this.
*Spring Boot and React (70/30 backend to frontend)
I've been offered the role of a Tech Lead of a small team that works on a much larger Django (It's not Django, but for the purposes of staying somewhat anonymous) application.
Since Django isn't too modern, they don't require anyone starting to know it, and know it's something to be picked up on the job.
The team's former tech lead has 5 years of industry experience and is now the manager of the team. The other team members have 2, 2, and 4 years of experience respectively. They are planning on hiring two new team members of similar or more experience.
It's a primarily monolithic Django app that hopes to move some components to microservices. It's in the Cloud but is primarily a monotholic app that uses Kubernetes for some deployments.
My team is focused on implementing new features for the high-value customers, and looking at the app from an organization wide to be focused as a Tiger/Team on improving the application as a whole (whether thats for the other development teams, or addressing pain points that affect the application whether it's scaling related, or new features, etc).
I'll sit it on Architecture meetings as well.
I've accepted the position but still have an offer for a general Principal Java Engineer for a medium sized fintech company that would not be in a lead position but would provide me the cloud experience that I'm missing.
If I go with the Tech Lead position, it'll be better career wise. I'm not sure the Prinicipal Java Engineer would make me much more ready for this position if I did it for two years. It'll probably help my best practices skills slightly as I'll get a chance to focus more on TDD and maybe some more developer confidence, but that's it.
I wasn't apprehensive with the Tech Lead position until meeting with the manager yesterday and had some apprehension come up when he mentioned onboarding 2 new developers and sitting in on architecture meetings.
I've done this at a larger scale of 8 to 17 engineers this whole past year though with no issues and was great at it - especially the team management and planning aspects and working through my own on-premise architecture issues. However, it was for something I wrote from the ground up. If I ran into any issues, I looked into it and solved it. Confident I could do the same though. I learn quickly, and have planned to write a Rails app before I start, with a focus on proper testing and best practices. I've already done the Grokking the System Design course and am purchasing Designing Data-Intensive Applications.
Should I continue with this job? Or go with something "safer" being the Principal Java Engineer position?