Software for People: Fundamentals, Trends and Best