1. Matematyka.
Matematyka wcale nie jest jakoś super potrzebna w programowaniu, jeśli nie mówimy o programowaniu gier i ML. Jedynie co potrzebujesz to podstawy z matmy i tyle (kompletne podstawy). Warto jest ją o tyle umieć, że pozwala ona na rozwiniecie abstrakcyjnego myślenia / innego podejścia do problemu. Do matematyki jest też multum bibliotek gotowych (takie jak np. apache commons).
2. Angielski
Nie ma innej opcji nauki angielskiego, od uczenia się jego. Musisz umieć tam x słówek po angielsku (plus ich wymowa) żeby móc wywnioskować z kontekstu o co chodzi w rozmowie. Potem jak już będziesz umiał te słówka, to oglądanie filmów / seriali, zmiana języka na telefonie czy komputerze itd. Jeżeli na początku nie rozumiesz słówek angielskich, to włącz sobie napisy (ewewntualnei oglądaj polski film z angielskimi napisami, potem możesz przejść na angielski film z polskimi, a potem angielski z angielskimi i na samym koncu bez napisów). Ile czasu próbowałeś się uczyć angielskiego z filmów? Nie licz na to, że miesiąc Ci wystarczy.
Druga sprawa jest taka, że musisz w końcu czytać dokumentację/artykuły po angielsku z informatyki/programowania, żeby nauczyć się słówek technicznych. Bez znajomości słownictwa technicznego, nie poprowadzisz rozmowy technicznej. Ale nie mówię o tym, żeby od tego zaczynać. Czytaj, jak czegoś nie zrozumiesz to zawsze możesz translatora odpalić i uczyć się nowych słówek. Bez "otoczenia" się językiem, nie nauczysz się jego. Fakt, największym problemem jest rozmowa, ale tutaj to już trzeba rozmawiać żeby się tego nauczyć.