This paper explores the nature of software and software development, discusses the importance of specialization in software development, and infers that separation of design and implementation is beneficial to software development. It proposes that roles can be taken as a new mechanism to separate design from implementation. It presents an exciting innovative perspective of software development, i.e., role-based software development. Finally, it shows the most difficult and important tasks of role-based software development.