PhD Students:

At the end of a PhD the graduate should have achieved the following skills:

 

General principles for getting there:

 

In order to complete your degree:

Also consider Navneeth Mandavilli's Top Ten Idea Killers in Software Development, and keep in mind that "It can't be done" is one way of describing a research opportunity.