This was me exactly. I started a Ph. D. simultaneously with two other students and our supervisor had us working on separate aspects of a common overall problem, each of which required a lot of software development, in C, because we were chasing performance. The supervisor had an academic background and all of us had only just graduated. Needless to say this was a total disaster and we never even managed to complete our separate parts let alone integrate a usable system. I bailed out and got an M.Phil for my efforts, but on the basis of the experience managed to get the job that I wanted, so it wasn't a complete write-off.
As soon as I encountered some actual software engineers in a well structured research department, I realised how bad our approach in Uni had been. My job involved a similar problem area, and using better tools (Common Lisp on a Lisp machine) I managed to build in about six months what I had failed to do in three+ years in academia.
My thoughts on the feudal nature of the Ph.D system at my Uni are a whole separate post!