Going back to school...
-
I've decided to go back to school and finally finish an Undergraduate's degree. I've been accepted to WGU's College of Information Technology and plan on getting their B.S. in Software Development. The curriculum will include the Network+, Security+, Project+, Oracle Certified Associate Java SE 7 Programmer, and Oracle Certified Professional Java SE 7 Programmer certifications. While I could really care less about the certifications, it is a nice add-on at no additional cost. I'm mostly doing this out of personal interest and to fill in any holes that might exist in my experience; but I also believe it will be directly beneficial in my current position and future prospects. I like the idea of building a DevOps-like skillset and being able to do both development and infrastructure management.
I'm currently working as a SysAdmin for a small (but growing) engineering firm. We get the opportunity to work on a lot of really interesting projects for a wide range of clientele. (Mechanical/Electrical/Software Engineering working with robotics, wireless proximity detection systems, high speed cameras, etc...) Aside from managing the infrastructure I hope to have the opportunity to directly contribute to some of the future projects that involve software development. I've already been given the opportunity to build a small one-off tool in BASH that replaced an older slightly dated piece of software that was being used for managing an aspect of an ongoing project. I really enjoyed the work and it was part of what pushed me to go ahead and enroll for the WGU program.
I enjoy working with BASH and use if fairly regularly for writing scripts. I also have a little experience working with Python. I'll be picking up Java from my future studies, and I plan on adding in Ruby/Rails as I find time.
What else would you recommend that might be helpful when moving forward with courses that are specific to programming/development? Thoughts on the curriculum? How about additional skills to look into picking up along the way for career development? Depending on how these courses go I may move more toward the software development side of things and less toward systems administration in the future. Are there any other things I should be doing now or in the near future that might be beneficial?
(I thought about putting this in the Careers forum, but thought this might be slightly more relevant home. If I'm wrong please feel free to move it)
TL;DR: I'm going back to school for software development and I am looking for informed criticism of the degree program I've chosen, advice on other skills to look into for career development, and/or any other helpful criticism/commentary.
-
How much criticism do you want? Is the program and the school set in stone and the question is how to tweak within that context? Or are you looking for larger direction that might include reconsidering the curriculum or school?
-
School and degree program is pretty much set in stone. It is super flexible on time, affordable, and should work well with my current workload. I know the curriculum (as far as development goes) is centered around Java specifically. I'm kind of looking at what I need to do personally, aside from what is included in the degree, to round out my studies. As a developer what other tools should I seek out?
If I understand things correctly, most application development is web-based now. Working with languages like Python/Ruby and frameworks to quickly develop applications that are OS-independent. I have a feeling that I will not get a lot of direct experience in these technologies with a lot of the coursework that is outlined in the degree program. Any suggestions on what to supplement it with, and what resources to use to educate myself and gain experience with the suggested material.
-
Well, having done a degree like this, what I found and what I've found from every degree like this is that what you will need to learn outside of school is.... programming. It is very, very rare for a software development program to actually teach you how to program. Oh sure, there is a little here and there, but the amount they teach is generally less than you would hope you would need to know going in, let alone coming out.
Learning Java is good and a very useful language that is still widely used today (the most widely used) and it has all those frameworks and does all that web stuff that you can also do in Python, Ruby and JavaScript. But it isn't "hip and cool" either.
But there is far more than just learning a language. Actually learning to program, getting coding done and learning what it is like to actually make projects is where university typically fails and fails hard. You will be very unlikely to encounter professors who should be able to graduate from a community college in programming - typically they use professors who know other things (often poorly) and have them teach these classes. The list of certs that have nothing to do with programming and tons of technical classes for the wrong disciplines suggest that this is the case. Things like the Net+ and Security+ have no place in a curriculum like this (or any curriculum.)
So, sadly, the university portion is likely standing between you and the time to learn to program. You'll probably pick up some stuff and be introduced to a few things. But be prepared that very likely all of the part that you are interested in will likely need to be learned on your own.
-
I agree, nothing wrong with Java. Java is great. Just because it is old doesn't mean that it is not a good learning tool and that it isn't great for real world projects. Tons of the best stuff has been Java for the past twenty years.
Look at languages like Scala and Clojure on top of Java. Meaning... that run on top of Java.
-
Languages you will likely really want to look into are Ruby, Python, JavaScript, C#, etc.
-
Frameworks are something that you learn on top of a language. So Ruby you learn, then you learn Rails. Rails is just one of many frameworks that Ruby could use. And, of course, you can do everything without a framework too.
-
PHP isn't cool anymore, but lots and lots of people know and use it.
-
If you are looking at DevOps, like I do, Ruby tends to be the dominant language there. Learning things like Chef, Puppet and Ansible are what you want to do and are not covered at WGU in any way, I would assume.
Also be aware that frameworks change extremely rapidly. Even if you learned what is popular right this second, you'd be totally outdated by the time that you are done.
-
JavaScript really seems to be where the majority of new and interesting stuff tends to be happening, especially around frameworks.
-
BASH is fun and I use it a lot but I feel that it promotes bad programming practice and best avoided while learning.
-
@StrongBad Yeah, it is more of an "IT Degree" with a focus on Software Development. Fortunately I had a lot of transfer credits that took care of all of the boring entry level courses; so I get to jump right into the better courses on the list. I'm fully expecting to have to do a lot of the more relevant work and experience outside of the program too. I'm mainly hoping to grasp Java fundamentals and fill in any holes in my current general IT experience that I might have by going through the Network+ and Security+ courses. I'm actually looking forward to the Project+ course too. Out of all the certifications I think that might prove to be the most useful.
-
That is a lot of work to do with the focus of picking up Java Fundamentals. That's something that you could probably get in a weekend or two of your own time, for free. Or for just the cost of a book. It's a crapshoot with a class. Might be a good one, might be a bad one.
-
That's how it worked out for me. I took Java in undergrad and my professor was good and let me do whatever I wanted as long as we covered the material as I already had over a decade of programming behind me. So we did more advanced stuff and moved quickly. It was valuable and I ended up enjoying the book we used for the class too.
My wife took the same Java class at the same school a few years later and they literally never wrote a line of Java code. The professor she got didn't know anything about computers and didn't know what Java was and instead they learned how to do unrelated things like writing business cases. She learned nothing in the class and was totally unprepared to move forward. It was horrible.
-
@scottalanmiller I'm actually working on learning and integrating Ansible into our current infrastructure at work. I am already loving how easy it is to push a system build and maintain packages with it. The YAML and Jinja2 syntax are pretty straitforward and relatively easy to understand too.
As far as Ruby goes I am fortunate to have several experience engineers and developers here on staff that work regularly with Ruby as a resource. We also have a library with numerous books/resources for learning Ruby and Rails. I chose to learn the basics of Python first, because I had the extra time and we currently have nobody with a significant amount of experience with it on staff.
-
I didn't learn a single thing in college for IT. I did in my business management and accounting classes I took though. I learn a lot before going to college, many of the professors I had in college were wrong. The problem is none of them had real world experience, and well they basically went to college for IT and where repeating what others told them. I remember crap like "You should never install VMware Tools, it's crap and will make your servers buggy, best practice is to never use the drivers for any VM". Yeah okay go with your poor performance.
My Java, VB and SQL classes, well it was all the same professor. She graduated with a doctorates degree from some school in India. She didn't even know how to save a word document. We taught her more than she taught us.
Honestly I think Youtube can provide better education than most US Higher education institutions.
-
I've had several IT professors who didn't know how to open Word. I had one try to give me a zero because I supplied a Word file and he had never seen anything after Word 2003 and didn't know that the file formats had a different name.
-
@StrongBad Okay, so maybe I should have said QUICKLY grasp the fundamentals AND build a solid proficiency with Java.
Relative to Java is Eclipse the preferred IDE I should start working with, or is there something better? I've bounced around a little with an intro to java course on udemy.com a few weeks ago and it seems like that and other courses always have you install Eclipse.
-
@RamblingBiped said:
@StrongBad Okay, so maybe I should have said QUICKLY grasp the fundamentals AND build a solid proficiency with Java.
Relative to Java is Eclipse the preferred IDE I should start working with, or is there something better? I've bounced around a little with an intro to java course on udemy.com a few weeks ago and it seems like that and other courses always have you install Eclipse.
Java is really easy. I don't really like it except for server apps (running on Linux, I hate it on windows). If it's a windows app I much prefer .Net framework based apps. Neither is really hard to learn.
-
@scottalanmiller said:
PHP isn't cool anymore, but lots and lots of people know and use it.
Come at me bro!