Academic Versus Real World Development

I think I've decided to take a break from my graduate course work at Auburn. I had a terrible time with the class I took last Fall (Formal Methods for Software Engineering) and this has discouraged me from continuing with school.

Not that I needed a big push, on the one hand: it's hard to work a regular job and have the discipline to come home and watch classes during the week, do regular homework and class projects, take exams, etc. And it can seem difficult to try to push yourself to learn seemingly abstract concepts that might not be directly applicable to the current technology you're using at work.

However, hopefully I'm not being lazy and whiney. The formal methods class I took was about logically proving programs to be correct. In it, we learned a specification language called "Z" and tried to prove, using logical axiomatic systems, trivial programs that took many hours of thought and many pages of notes to prove. This is an interesting concept, but currently it seems not to be held as a very useful thing in software engineering practice. There are only a handful of mostly specialized examples of applications that I came across while taking the class, and I didn't really find any modern tools that use this in practice. Given this probably biased description of the class, it's probably easy to see the friction I felt while doing my course work at night, and trying to solve "real world" software engineering problems in the day at work.

Coincidentally, I saw several blog entries pop up in my feed reader towards the end of last year that seemed to express this same sentiment. Famed blogger Joel Spolsky, in a talk given to the computer science department at Yale, had this to say about the best course in computer science he ever took:

I worked on that problem for hours and hours. I had her original proof in front of me, going in one direction, which, upon closer examination, turned out to have all kinds of missing steps that were “trivial,” but not to me. I read every word about Dynamic Logic that I could find in Becton, and I struggled with the problem late into the night. I was getting absolutely nowhere, and increasingly despairing of theoretical computer science. It occurred to me that when you have a proof that goes on for pages and pages, it’s far more likely to contain errors in the proof as our own intuition about the trivial statements that it’s trying to prove, and I decided that this Dynamic Logic stuff was really not a fruitful way of proving things about actual, interesting computer programs, because you’re more likely to make a mistake in the proof than you are to make a mistake in your own intuition about what the program “f := not f” is going to do. So I dropped the course, thank God for shopping period, but not only that, I decided on the spot that graduate school in Computer Science was just not for me, which made this the single most useful course I ever took.

ASP.NET developer and blogger Phil Haack related an experience he had in college solving math problems with the importance of testing in software practice versus provability:

...trying to prove the correctness of computer programs is a lot like trying to solve a set of partial differential equations. It works great on small trivial programs, but is incredibly hard and costly on anything resembling a real world software system.

And, most recently, .Net developer Oren Eini also commented on the appropriateness of using academic knowledge in the field:

Finding a path in a graph? Design a compiler? Analyzing an image? Choosing a search algorithm? Selecting appropriate data structure for a task?

For each of those I would head for the academia, directly. Those are technical issues, and I want the academic proofs and experience there. I want the mathematical foundation for the solution.

Designing a maintainable system? Building a usable framework? Creating the domain model?

For those I am going to not going to go to the academia. I am going to go to the real world practitioner. They guys (and gals) that have been burned in the field and learned from their mistakes.

I don't think the graduate level CS courses are totally useless, by far, and I might even get the urge to continue my degree later, but for now, I'm going to focus on learning more practical technologies and drinking gently from the fire-hose of new languages, frameworks, and tools that are constantly being churned out of the interwebtubes.

Comments

January 15. 2008 19:44

Chris Williams

I had a long comment, but decided to just put it on my blog since I never post anymore.

Chris Williams

January 16. 2008 02:07

pingback

Pingback from crestien.com

Chris Williams » Blog Archive » Response/Reaction To Derek M’s Recent Post

crestien.com

January 18. 2008 16:36

Daniel Meeks

Amen brother! I can't even imagine what the work must be like at the graduate level, but I can tell you right now that I'm terrible at math... but I like to think I am a fairly good programmer. Somehow academia correlates these 2 subjects though. I'm good at programming so I must be good at high level math. wrong! I hope more colleges remove the math minor thats required for a CS degree in the future.

Daniel Meeks

January 20. 2008 15:19

Josh Pritt

I think Mr. Humphrey sums it up best in his book, "PSP A Self-Improvement Process for Software Engineers", in the chapters that talk about design reviews and code reviews. As long as you get most of your defects out before you actually start writing the code you should be alright. And by alright I mean not four years past the due date on a project. Another way to keep from getting so far past a project's due date is to eliminate scope changes by creating a design the customer can agree on and sign off on where any changes they make later can be charged with extra payments or they sign off on changing the due date.

Josh Pritt

January 19. 2009 06:48

pingback

Pingback from derek-morrison.com

Back To School

derek-morrison.com

July 7. 2009 20:47

club penguin cheats

I can't even imagine what the work must be like at the graduate level, but I can tell you right now that I'm terrible at math... but I like to think I am a fairly good programmer. Somehow academia correlates these 2 subjects though. I'm good at programming so I must be good at high level math.

club penguin cheats

August 21. 2009 15:58

the ridges homes

Daniel, the problem with me was same as well. I wasn't good at mathematics but was really good in Physics. Getting great marks in Physics while poor marks in mathematics where they both do connect to each other in some way.

Derek, You're probably right at some point that what happens to the academic theories with the real world development, while I stress that Academic studies are the most important one and lays the foundation and opens the door towards applying it practically. Since theories when designed are for everyone and cannot cover the experience of everyone, theories give us the basic knowledge and idea about what we do and then our real world development and experience makes us better to harness what we learned. You see in fields, there's a lot of value for experience and a person with 10 years experience might be preferred over the candidate who has just finished his masters, not because his theories are wrong or he's incapable but because the person with 10 years experience has harnessed and polished everything from his own view whatever he read in the theory at college.

the ridges homes

September 26. 2009 06:09

Tiffany Bracelets

Pingback from crestien.com

Chris Williams » Blog Archive » Response/Reaction To Derek M’s Recent Post

Tiffany Bracelets

September 29. 2009 19:52

Timberland boots on sale

To do whatever needs to be done to preserve this <a href="http://www.topsalelist.com/">timberland" rel="nofollow">http://www.topsalelist.com/">timberland boots</a> last and greatest bastion of <a href="http://www.topsalelist.com/specials.html">timberland" rel="nofollow">www.topsalelist.com/specials.html">timberland roll top</a> freedom .We cannot always build the future for our youth <A href="http://www.topsalelist.com/timberland-mens-6-inch-c-1.html">timberland" rel="nofollow">www.topsalelist.com/...-1.html">timberland men's 6 inch</A>, but we can build our youth for the future Where there is a <A href="http://www.topsalelist.com/timberland-mens-chukka-c-5.html">timberland" rel="nofollow">www.topsalelist.com/...-5.html">timberland men's chukka</A> wil , there is a <a href="http://www.topsalelist.com/">cheap" rel="nofollow">http://www.topsalelist.com/">cheap timberland boots</a> way . http://www.topsalelist.com/


Timberland boots on sale

September 29. 2009 21:50

timberlandboots

The supreme happiness of timberland men's 6 inch life is the conviction that we are sale timberland loved.There is nothing permanent except change timberland classic There is no such timberland boots uk thing as darkness; only a failure to see. No man is happy cheap timberland boots who does not think himself so. http://www.timberlander.com/

timberlandboots

September 29. 2009 21:57

ugg classic boots

When one ugg classic cardy loves one ugg classic mini art no service seems too hard .Don gild the lily. I can live for two months on a good ugg boots on sale compliment.The decline of literature indicates the decline of a nation ; the two cheap ugg australia keep in their ugg bailey button downward tendency. http://www.uggshow.co.uk/

ugg classic boots

September 29. 2009 22:03

Designer handbags

When the fight begins luxury handbags on sale within himself, a man's worth something jimmy choo handbags.If a bottega veneta jewel falls into the cheap handbags mire, it remains as precious as before; and though dust should ascend to chanel handbangs heaven, its former worthlessness will not altered. http://www.supershandbag.com/

Designer handbags