I've read stories that in communist countries, at the time there was no unemployment. I guess there would be other problems, but how people were managed ?
Were people just forced to work ? How could you become an engineer ? How did they let people get better jobs ?
To address the first part of the question no people were not literally forced to work, but it was highly expected and you could expect some of form of reprisal if you did literally refuse to work.
The USSR and other Eastern Bloc countries developed large scale education systems that where different than most of the west in that your education was supposed to directly guide you to a job area. The general school system prepared you for your next level of learning (equivalent post high school) to move to a technical, military, police school or a true university. The departments of these schools was usually directly under supervision of the ministry of the field that they were tied to.
Once you completed your education you where basically given a job in the field and basically contracted to work in it for a period of time. This job could literally be anywhere in the nation and younger workers were often given less desirable jobs in rural areas or one with a lower pay. After the period of work was done you could apply or be moved to other areas or jobs, however this was not a guarantee that you would actually be getting either.
I'm assuming by "better jobs" you mean higher level jobs. The workplace was officially democratic which meant that higher level positions where elected by the group below it. However corruption in many areas meant that wasn't necessarily a true process and more of a favoritism of the elites at the period.
In Romania, after you finished high-school or university, you were given a job in the field you've studied. For example, you went to a technical high-school that had mechanical classes, you would get a job in a factory. If you would have finished the medical university, you had a job in a hospital.
Usually the jobs were located within your city, or close by. So you wouldn't have got a job in a city 500km away. Having connections and small bribes helped with better jobs.
Having a job was mandatory. If for whatever reason (not counting medical) you were unemployed for more than 6 months, the police would come at your home and take you to your assigned job.
To become and engineer you would have had to have a degree in that field. If by better jobs you mean better payed jobs, promotions happened just like they do in a capitalist economy. But the income difference was a lot less pronounced. For example, the highest payed job in education (university teacher with maxed out honors - one of the highest payed jobs in the country at that time) would have had ~5700lei, while a butcher had ~2400lei. An airplane pilot had ~3500lei and a mailman ~2000lei.
I can give sources but they are all in romanian.
As a follow up question, what would cause a person to get fired? Was there a large amount of protection for workers against upper management?
Did you have a specific country or timeframe in mind?
In communist Poland it depended on the time frame - the law from 7 th March 1950 introduced obligation (3 years) after finishing high school or university, which was abolished in '60s, but in some cases (most notably medicine) it was required through later years. For the later years there wasn't any real requirement, although if you didn't have any legitimate source of income, it would be noted in files and used against you if needed. In 1982 during martial law the similar law was passed ("ustawa o postępowaniu wobec osób uchylających się od pracy ") but is regarded as not affecting regular people's lives. (aimed at dissidents)
As for promotion - people were usually fixed on their position, you could get promotion only if there was a vacancy (which usually was rare as it was rather hard to get fired) and political key played big role here.