Sunday, April 11, 2010

Should I Get a Graduate Degree in Software Engineering?

I recently decided to go back to school to get a degree in software engineering from the University Of Texas at Austin attending the executive format offered by the engineering department. Is it worth it? What is it like? You can read more on the UT website, but below I will give you my personal perspective, the answers to the questions I had when deciding whether to pursue the degree.

First question: Are the topics covered relevant?  I am a consultant software developer working for Catapult Systems working on enterprise software development. Am I going to learn things which I can apply? I don’t want academic fluff. I am a working professional and need real application. I am currently in my first semester and so far the material has been very interesting and I have been able to apply much of the material learned to my current projects at work. I’ve even integrated some of the code written for projects into projects at work. Below is a list of the courses offered. Here is a course list on the CLEE site. Of the 16 courses offered, students will be able to take 8 courses over the two year program. I have some detail on the first two classes since those are the two so far that I have taken.

  • Computer networks
    • Learn how the Internet works from the lowest layers, up to the applications you use on a daily basis including DNS, TCP, the OSI model, Shannon channel theorem (determines the bandwidth of a wire).
  • Software Validation
    • Formal methods for verifying software. I honestly have not enjoyed this class as much as my computer networking class, but it has given me exposure to Java, Alloy, JPF and several other diverse languages which is interesting since I have lived mostly in the Microsoft/Visual Studio world for the last 9 years.The quizzes involve writing code with a pencil and solving algorithms which leaves my head hurting but it is good practice to write keyboardless code.
  • Security
  • Distributed Systems
  • Mobile computing
  • Software Architecture and Software Engineering Processes and Requirements Engineering
  • Data engineering and Data mining
  • Methodologies for Hardware/Software Co-design
  • Real Time Systems

 

Second Question: What is the Format? The executive format executive degree classes meet once per month on Friday and Saturday for a total of 16 class hours per month. One four hour class in the morning from 8am-12, and one four hour class from 1-5PM with 3 breaks in each class. I live in Dallas so I drive down to Austin once per month which works well. I looked at the SMU and UTD and several online degree offerings.

Which School Should I Choose? I researched several schools and I attended a class at UTD, SMU and a class at UT. I noticed that the demographic at UTD was younger and the class was less interactive. The demographic at UT was more similar to my own: experienced professionals. The class asked many questions and made comments based on their experience which were as interesting as the comments of the professor. SMU was my 2nd choice, but UT has a better national ranking as is well known nationally. It is worth the extra 3 hour drive.

What is the Work Load Like? A full load in the executive program is two classes for a semester. Right now I have a Network Communications and a Validation class. For example, in March 2010 I had this workload. One professor said that expected work load outside of class per hour of class is 3-1. So for 8 hours of classes per months students would spend 24 hours outside of class.

  • One networks homework assignment with 12 problems. – 3 hrs
  • Two chapters in my networks book to read. – 8 hrs
  • One validation homework assignment using Java JPF which generated unit tests.  - 3 hrs
  • One 12 page paper to write on a technical networks topic. - 7 hrs
  • One networks quiz to study for. - 3 hrs
  • Group report and presentation for my validation class. We are building a validation framework called easyval.  - 6 hrs

 

For April, I have this work load:(this is the last month of the semester.)

  • Individual research paper on a networking topic of my choice and a presentation to prepare for. (I am going to build a simple browser for my project and measure where the bottlenecks are in web applications.)
  • Group report for my validation class.
  • One networking quiz to study for.

 

What Are the Benefits? If you’ve read Seven Habits of Highly effective people then you’ve heard the phrase “Sharpen the Saw”. One of the most valuable thing we have as programmers is our algorithm solving capability. Grad school keeps you on your toes. It expands your mental ability to solve algorithms because you are required to solve many difficult problems in homework and quizzes. Being tested so frequently expands your mental capabilities just like a hard workout expands your muscles and VO2.

Also, a graduate degree gives you a broader perspective of the software development world because of the variety of languages, and technologies that you get exposed to. But my favorite part of grad school is talking to my classmates and learning about what interesting software projects they work on. There are so many interesting companies represented: Samsung, IBM, FreeScale, Verizon Wireless, ATT, Oil and Gas, National Instruments, etc. It is a chance to rub shoulders with some of the best software developers around. Today at lunch I learned about the robots used in making flash memory at Samsung which has the largest microprocessor fabrication plant in the US here in Round Rock TX. He told a story of a programming error a couple months ago that caused erroneous wafers to be sent down the pipeline costing Samsung 10 million dollars and as a result no one in the Austin fab site got a bonus that month. Ouch, I'd hate to be the guy that wrote that bug. Yesterday at lunch a guy from National Instruments told us about developing Zigbee devices and using tools which detect conflicts between Zigbee devices at 3.4 MHz and Wi-Fi also in that same band. He showed us a cool graph of all the spectrums being broadcast. It is amazing how much invisible electromagnetic broadcasts are in the air around us. He explained some of the National Instruments products (which I used in my college Physics class). They use C, C++ and are now looking at using C#. Even though C# is 10 years old, they are just now starting to use it!

For myself, a graduate degree in software engineering is particularly useful because I am currently a non-formally educated software developer. My undergraduate degree was in Economics with a minor in Physics. This degree is giving me a feel for what an undergraduate software engineering degree is like and helping to fill in the gaps.

I must say that my current employer Catapult Systems has been very supportive, which is great. It is a bit of sacrifice for them since I don’t have as many overtime hours to work. I hope it is a good investment for Catapult as much as I think it will be for me personally.

If you are a software developer that wants to fundamentally improve your knowledge and understanding of software engineering and you are tough enough to handle the extra hours, I definitely recommend an executive format degree. It is not easy, you’ll give up a lot of free time and your load at work will not get any easier, but it is worth it. I see it is a 2 year investment with a 30+ year return. It is also an item I can mark off my bucket list.

SSD Performance Test

I’ve been running an SSD as my primary drive for a few weeks now and it performs quite well. Outlook doesn’t hang, and Visual Studio build times are cut way down. Boot up and shut down are much better. Total cost: $260 + $50 = 310.

Using winsat tool:

  • Patriot Torqx SSD 64 GB, as primary drive in laptop
    • Sequential read: 116 MB/s (3 x faster)
    • Random read: 39 MB/s (35 x faster)
    • Sequential write: 90 MB/s (2.5 x faster)

clip_image002

  • 7200 RPM 100 GB in expansion slot:
    • Sequential read: 40 MB/s
    • Random read: 1.11 MB/s
    • Sequential write: 34.7 MB/s

image