Programming can be a great career, you just want to master an application domain in addition to the technology so you go in the "turns our expensive, error-prone manual processes into cheap computational processes" box instead of the "java grunt" box. You don't want to do that if you're any good at programming, because if you're any good at programming you care a lot about the technology and very little about the business, but sucking it up and getting knowledgeable and pretending to care about the things the suits care about is how you keep yourself out of the very expensive janitor box.
This meshes with my experience. My niche is embedded programming. It's not glamourous, and you don't get to use cool new languages -99% of what I've done in my career has been in plain old 'C'; but if you have the knack, there's always work to be found, and it's always different. It's been good to me.Programming can be a great career, you just want to master an application domain
I agree. And that's my "1%" comment. A very small number of programmers are at that basically unassailable level of knowledge on specific subject matter. Getting there is a long journey in the trenches, fighting off better equipped competitors above and below you. The case I wanted to make is that the journey to that "indispensable" level of capability is shorter with networking and routing than it is with general programming. And, generally speaking, if you want to get to a level of indispensability, you aren't going to do it with Java, sadly. (I have a deep personal affection for Java, since I worked on the Java Development Team at Sun Microsystems.)
Considering all responses I think that you make some good points. It's not that others don't make a point, but I can't really see myself as anything more than mediocre programmer. It's a hobby, not a passion. However, in the end if I would not get to Ph.D. program I will need a job. Do you happen to have some insights on networking job being given to non-engineer? Damn! That's impressive as hell to be honest. Would you mind if I would ask you some questions on that later?I have a deep personal affection for Java, since I worked on the Java Development Team at Sun Microsystems.
None of the network engineers I know started off with that job in mind. It is an intensely practical job. You help a guy lift a new server into a rack. You find the rack ears in a box over there and grab some mounting hardware and screw it into the rack while he routs some cables from the network switch to the new server. He explains (because ALL network engineers talk about what they are doing, out loud, while they do it) and tells you why these cables are going this direction, and where these other cables go to, and why these cables are this color and those cables are that color, etc. You plug in the server and turn it on. As you walk over to the lab computer to do the initial configuration on this new server and switch, he/she will tell you about how this whole rack here needs to move to the other side of the datacenter, and they are gonna do that next month because they gotta make room for an entirely new division that is moving into the building in two months, etc, etc. Now you are standing at a terminal configuring the network switch to see your new device you just mounted in the rack. Health checks. Setting IP and gateway info, locking down the most vulnerable ports, etc. After about 20 minutes the thing reboots and you are done in the datacenter so you go back to your desk. Where, for the last 3 months, you have been planning all the services that are going to run on this server - a virtual machine with three SQL databases, and a JIRA ticketing system, and blah blah blah - and now the device is installed you get to build all these services. So you spend the next two days setting the machine up, installing software, testing it, checking that the routing is right and data is going where it needs to and NOT going where it shouldn't be, and then you send emails off to all the people who have been waiting for this thing to come online. But all of that I just described? You planned it all four months ago on a whiteboard with a team for four other people. You figured out exactly how much horsepower this machine would have, what it could do, what it needed to talk to, all the configuration of all the firewalls and routers and other intermediate systems that would need to be touched to make sure this new machine worked. You noodled this plan with a group of REALLY smart people, came up with an elegant solution, and you have just gotten to execute on that plan. Of course, everything has changed in the interim, and now the requestors need 3x the capabilities you originally budgeted for, but another team stopped using THEIR old system, so you can move some non-critical services over to that one to free up more cycles on the new one, and... so on. Every single thing we do every single day - email, ATM machines, text messages, phone calls, Twitter, ordering new stuff from Fry's, swiping our credit card at the 7-11 on the corner - ALL of that data transmits across THESE EXACT MACHINES. And the people who can think like this, who can plan, who understand the intricacies and issues of routing and using a full-proxy load balancer for medical information (in short: you can't), these people are becoming rarer and rarer. And yet, every single programmer on the planet is utterly reliant on these people to do their jobs perfectly, every single time. A programmer writes an app that accesses an API and pulls out some data from another system... and that takes maybe three method calls. But every one of those System.out.println calls - if you unpack it and track the zeroes and ones across the network - requires 4-10 different devices to be configured PERFECTLY to allow that call to return anything but an error message. Network engineers are big damn heroes. And few of them are trained in it. They just learn it on the job. One of the best ones I knew was a truck driver who had to find a new career. He took one class - probably a Basics of Networking for some basic Cisco certification - got a grunt-level job running wires and rack-mounting servers in some corporate network, and three years later is a highly skilled network engineer making over $100k/year. And that's not unusual, in my experience. Anyway, I said: And you said: Sure... but any info I have is purely of historical interest. The 1.0 JavaVM that I worked on was completely rewritten and replaced with the "Hotspot" update around 1999 or so. And I was never a skilled programmer anyway. I was on the Testing side of the team, so my role was mostly figuring out why something broke, and then telling the dev who was responsible for that method how I broke his code. So, not a lot of practical experience building apps and things! Do you happen to have some insights on networking job being given to non-engineer?
I have a deep personal affection for Java, since I worked on the Java Development Team at Sun Microsystems.
Damn! That's impressive as hell to be honest. Would you mind if I would ask you some questions on that later?
I'll need to do some extra reading regarding your response, but I must say that it does make it at worst into an interesting and challenging career. Right now I'm dead-set on doing research, but having that sort of ace in the sleeve seems like a good alternative. Since I'm only just finishing first year anything can change, but I don't like feeling unprepared. My brother was also dead-set on research and took Google offer without much hesitation ;). Plus, and I don't mean it to be a boast, I made a sample test for that Java Programmer I cert and passed it with time to spare. It seems like I could indeed work on my skill in the meantime as I did until now. That's almost sad that I could get there with one semester of Java in high school, one book that I don't remember finishing and two video courses (including the multithreading one mentioned in original post) :/. Anyway, while money is (at least for now) not much of a deciding factor for me, I must say that it looks nice. I'll do more research on how it looks in EU to avoid surprises. If you happen to have some information specific to EU market in that regard, I would like to hear about it as well :D. That's what interests me! I just don't want to waste your time on some trivial questions and might need some extra prep. I'm an avid browser of sites like TextFiles and absolutely adore some of the 'internet archaeology' stories posted by mentioned website author/maintainer. Or to know something about people behind the great works. To give an example: I have found myself bored by encyclopaedia entry on Manhattan Project. But reading about Fermi, Oppenheimer, Feynman, Slotin or Einstein and their memoirs or biographies were more captivating by far. It shows people and their struggles and joys, no matter how corny it sounds.Sure... but any info I have is purely of historical interest.