Supporting experiment, observation, and theory, numerical simulations play a decisive role in research and development today, for both Academia and the industry. High-Performance Computing (HPC) deals with the most demanding simulations, that cannot run on a laptop and need a supercomputer to provide reliable scientific data. In this presentation, we will present the landscape and trends in HPC, and discuss programming techniques to harness supercomputers from a user point of view. These techniques will be briefly exemplified with two particle-in-cell codes WarpX (LBNL) and PIConGPU (HZDR).