Because of its design, a blockchain is deterministic. This means that if you want to take the entire history of the blocks and replace it locally, you must end up with the same state as all the other nodes. This prohibits calls to external APIs, where the answers may change over time, or according to the caller.
Block chains are walled gardens. You can execute a contract from the outside world, but a contract by itself cannot require information from a source outside the block chain. If a smart contract needs external information, someone should put it on the blockchain first. There are efforts to facilitate this work through a concept called Oracles. But Oracles needs a system of reputation and governance. So much for fully automated contracts and disintermediation.
In the real world, very few applications work in isolation. All the applications we've built in the last 3 years rely on external APIs - for identity management, payments, live data sources, image processing, storage, etc. The limited capabilities of smart contracts make them useless in real-world situations.
To start a career the most used languages are in Solidity which has been as javascript and the development of new blockchains in C++, Rust and Golang for the management and creation of intelligent contracts.