Personal opinion to your 2 problems:
1. Work with your teammates to figure out what is the best for the company. It may be hard, due to communication, personality, etc. But the bright side is now you get a chance to show your skill, your leadership. Maybe you are able to be the lead of the engineering team after 2 years, and become a partner of the company owner. If you feel the senior is making bad decisions frequently, talk to them, talk to their boss, talk to the company owner, WITH PROVE.
(if the company's culture is truly toxic, quitting the job is also a good option).<p>2. don't worry about test. the most popular open source project(linux kernel) do not have test code. it is overrated. When you interview for a job, nobody will ask you how good you are in writing tests. If I were you, I would prefer no test code required, so that I can focus on learning more important stuffs to grow myself: design pattern, infrastructure consideration.<p>3. about ML: you don't need degree. if you can be top 10 in kaggle, nobody cares your degree. If you truly like ML, you probably don't care about the job. How do you learn ML: google, online courses, and the most important: projects. The best case is that you can work for a company that is willing to hire you as a software engineer but then they allow you to work on ML projects. But this is kind of luck and you have to do google search to find that type of company.
But, getting a degree and naturally getting hired as a ML engineer would be safer plan if you have decided ML is what you like. But there is cost: time and money.