Job Seeking Advice

Assorted job seeking advice from SDForum JavaSig attendees:

  • At your experience level (5 years), you should start to “sound professional”, the more you can articulate yourself professionally, the more hire-able you will be.
  • Use job agents on major job boards to track statistics on major programming languages and libraries to identify which ones are most in demand. The libraries worth the time or money to learn would be the ones that are increasing in demand
  • Take a class on networking to gain practice and skill at how to do it…and remember its about relationships, not passing out business cards
  • Be able to confidently pitch what you’ve done…the companies are not looking to hire the team you were part of, but you specifically
  • In your elevator pitch, make sure you’re sharing the business results of what you’ve done, not just that you’re a programmer (what you do)
  • You can’t just sell that you can program, that’s kind of like saying you can type, kind of necessary, but not the selling point. The selling point is higher level, the other stages of the process…Architecting level. how did you make sure your code was bug-free? What goals were you programming for? (eg: performance, ease of programming, etc). How did what you did help the company make money, etc…
  • Be BOLD and be PREPARED (information and tips helps with the prepared part, but you still have to do the bold part yourself, things like contacting people and showing up at events like these and networking, etc)
  • Networking opportunities: SWE, TBP, SD Forum Women’s group, IEEE Women’s Group, Well-known relatives, alumni association, etc. SDForum tends to get a lot of the engineers with an Entrepreneurial spirit
  • Take advantage of UC Alumni resources–check out what your UC Alumni Association membership perks are that you can use at local UCs (Berkeley, SC, but esp. Berkeley)
  • Seriously, you need to know people inside the companies you want to work for, that’s how most people get hired
  • Establish credibility. Later on this might look like being a presenter at a forum like this or publishing books (what some of the others do to lend credibility to their consulting work), now could get involved in the steering committee for a group like this that finds presenters and coordinates the catering and stuff
  • Stuck in an unemployment rut? One way to gain specific relevant experience in the software industry is to volunteer for a startup (like an internship). Why? Two reasons: (1) Gain experience at a specific technology they work with (2) to get a reference. Most startups don’t have a lot of money so unpaid interns = something they’ll probably be willing to do.
  • Talk to former coworkers to get help with how to articulate the business results of what your previous project was doing
  • Been on board asinking ship? Be prepared to overcome the “cootie factor” (the project got cancelled/downsized/etc? it must have cooties)–be able to articulate why your project mattered or would have made a business impact

Hallelujah moment

I’m sure it will be short-lived rejoicing, and most of the people reading this have not a clue what any of this means, but I got my IE plugin to run on the “normal user” using “Run as administrator” in Vista rather than having to log into the special “Administrator” account. What does that mean? Likely that I can stop switching back and forth between two logins on Vista and just stay as the normal user.

You know what gets me though? The whole time it turns out the problem was apparently the plugin was disabled using the IE plugins manager (some time ago by me), and Netbeans isn’t quite smart enough to detect that the plugin is disabled and tell you you’re trying to do something stupid that you shouldn’t expect to work.

HTTP Monitor

You know what’s fun about writing an HTTP monitor? Testing it basically requires surfing the internet. (c’mon that’s got to be a major plus, right?)

You know what’s not as fun? Creating an infinite loop in your internet explorer plugin that causes your system to go completely erratic and unstable without completely crashing. I ended up with three task-managers one of which was completely erratic and not actually showing correct performance. Needless to say, reboot was quite necessary at that point.

I’m actually making quite a bit of progress. Earlier this week with Q.’s help I figured out why my faked headers weren’t showing up in Netbeans (apparently there was one more spot the feature had to be enabled for IE). And since then I’ve been working on getting real headers into Netbeans rather than fake ones, and that basically means writing code to parse strings in C++. Parsing strings in C++ is not fun, its not nearly as easy as in Java. And its a lot more difficult to do in a non-MFC project where you can’t use CString, it requires going back to the <string.h> library functions, except there’s a bunch of quirks like the function that would seem obvious to use doesn’t really do what you need so you have to do it a different way. But every time I get a new header to show up in Netbeans correctly its great fun, and for some reason IE doesn’t put all the headers in one place so I’ve been getting them added in little chunks and it just looks closer and closer to working properly, at least for the general case with no bad data or anything.

Geek Humor

email from my boss this morning 🙂

if (user.access == false) {
    servlet.bellyUp(); 
    spew(gibberish); 
    user.clueless = true; 
}

Makes perfect sense to me… (because you would have obviously known “null input” or “500 internal server error” means you need to fill out a form to request access to that website, right?)

A Breakthrough

Do you have any idea what this means?

It means I am 9/10 of the way there on finding a solution to my impossible problem 🙂

And here yesterday I left the office feeling frustrated, in over my head, like I was trying to solve an impossible problem, and there was no way I was going to figure this out on my own.

Today, I spent pretty much all day looking at Igor’s PassThruApp sample code, trying to get his example to build and then deciding that was sufficient for solving my problem without the “kitchen sink” thrown in, and only a handful of files to deal with, and tried to mangle that code into my code…and finally end of the day today I’m displaying pop-ups with the HTTP request and responses, now I just need to send the IDE those values instead of displaying them on testing pop-ups and do a bunch of renaming and other clean up.

Netbeans HTTP Monitor

I’m working on a somewhat difficult (as in hard to solve) problem at work. We want to add Internet Explorer to the HTTP monitor in Netbeans.

Netbeans is an “IDE” or “editor” for writing computer programs or web applications. The HTTP monitor feature shows you all the HTTP headers (not to be confused with HTML headers) that the broswer sends to websites you visit and the sites send back to your browser, before it sends the actual webpage. The headers include things like whether or not the page you’re trying to view really exists, whether it hasn’t changed since the last time you viewed it (so your browser can load it faster by using its cache) and what website you came to that website from and a bunch of other stuff…most normal people wouldn’t care about what’s in the HTTP headers, but if you’re a web-developer trying to debug a complex web-application, it could be helpful diagnostic information. Right now our HTTP monitor only supports Firefox. But now I’m working on trying to add that same feature for IE.

So basically…for me, that means, I have to figure out how to get the HTTP headers out of IE. That’s the hard part. We already have a “C++ COM DLL” that intercepts page requests to do javascript debugging, but this new part you have to go a bit deeper into the browser communication and get down to the level where IE sends HTTP requests, several layers down in the browser architecture slide.

I’ve been doing a lot of internet searching. And most of that searching has gone nowhere. Other than a few people have written expensive closed source programs that monitor IE’s HTTP headers, so theoretically *what* we want to do should be possible, but not a lot of help on the *how*. And being a closed source browser, its not as easy to “hack into” as firefox. Even just doing javascript debugging, where firefox requires some javascript, IE requires a DLL written in C++ with lots of COM calls (and if you don’t know what that means, just think…its hard to read and understand ugly stuff to code).

But finally, today I’ve come across something slightly promising, a full demo-app on CodeProject.com that includes HTTP monitoring as well as the kitchen sink of other unrelated features I don’t need. The important part for me is it includes the full source code including their “C++ COM DLL” (notice how this is the same type of DLL we have? ;-)) that intercepts the requests the browser sends and acts as a pass through, mangled in with some code to be a download helper app stuff I don’t need.

On the upside this is promising because if I could understand this code, I could probably figure out exactly what I need to do to to add my new feature to our app. But the downside is that even with a several page long article on CodeProject about that app, they actually don’t document almost anything about the part I’m interested in. And the source code is extremely cryptic because it uses all these obsure programming constructs/libraries/something? like ATL that I barely know what the acronym means, and I certainly haven’t read the 500 page book on it that my coworker left me…

Its kind of like a puzzle where I’m trying to crack this code of deciphering cryptic pages on MSDN like “How to get Protocol Headers in a Pluggable Protocol Handler” which might be a little more obvious if I were a Microsoft Programming Guru (course, if I were, I’d probably be working for Microsoft or as a consultant selling my knowledge about these cryptic technologies at an obscene hourly rate…one of the other reasons those who “understand this stuff” don’t just post lots of articles all over the internet about how to do what I want to do…) so that I can figure out how this stuff works to mangle it into something different…while not recycling any code that is not appropriately licensed to be reused in an open source app (eg: big no no to recycle GPL code because GPL license requires the resulting product to also be released as GPL, which is a different license than the one we’re using) according to the legal department 😉

Transfer of Responsibility

I’m not sure if I mentioned this on the blog before or not..but toward the end of last week, I found out I’d be taking over the project of one of the guys on our team who’s going on a long vacation starting Friday…

He wrote the internet explorer javascript debugger plugin for Netbeans, (a C++ COM project in Visual Studio)…that’s the part I’m going to be taking over.

And then it turns out, he’s not actually just going on vacation, he’s not coming back after his vacation either…so double the fun, “make sure to ask him lots of questions before he leaves” my boss says.

Its a lot to jump into, code-wise, a bunch of stuff I’ve never even looked at before, and such a short time to learn it and sometimes its difficult to even know where to start with questions, or what would be the most fruitful things to discuss or study in the couple days left before he leaves, especially with the double learning curve of not having the background on the Netbeans side of the script debugger either. Time to cross my fingers and pray all goes well…

The Business-scape

Yesterday I woke up to a flurry of emails flooding my (work) inbox about the big (not so good) news at Sun about some major upcoming layoffs…like 5000-6000 people over the next year….(that’s approximately a 15-18% reduction in staff, quite a bit bigger than their 1000 person layoff in July)…first it was the internal/confidential announcement to employees (though nothing I’m saying here that isn’t pretty much all over the mainstream media now already anyway), followed by links to a video announcement from the CEO, and then a flurry more emails about their simultaneous restructuring and how your boss’s boss’s boss’s boss now reports to someone different, and everyone in between the six layers of management sending out “Today’s announcements and you” emails.

In the immediate sense my boss reassures our team again that our team that Netbeans is a key component of Sun’s strategy going forward. And within Netbeans, the web-tier is the particular part where I work…the internet ain’t going away anytime soon…tools for authoring websites and web-applications? Definitely on par with the wave of where the internet’s going…maybe that’s why we’re now under the “cloud computing” group. Not to say everywhere under the web-tier is a good place to be, but where I am is supposed to be a good place…

How Do You Occupy Your Commute?

During my commute, I’ve been listening to the audio book of On the Shores of Silver Lake one of the middle/later books in the Little House on the Prairie series…because I saw it at the library and I have a weakness for that series…I have the *entire* series (in mismatched paperback)…most of them are kind of old, were my mom’s before I was born, but all the missing additional books got filled in somewhere along the line (maybe in junior high?) and I used to love to read the series…though I haven’t read them in a long time now… kind of fun to re-read… very good descriptive writing of another time and place…and “how life was”, something I find fascinating 🙂 well, that and I just love biographies about everyday life. Anyway, I finished it today five minutes before I got home…so time to move on to my other audio book perhaps. Just thought it was worth nothing that it was fun to “read”…course now I want to jump back in and re-read the whole rest of the series…too bad the library didn’t have all of those in stock on audiobook…ahh well….hopefully I won’t need audiobooks and cds to entertain me for long drives to work for much longer…if only I had an adapter in my car that I could play ipod or mp3 cds or cassette tapes rather than just plain vanilla cds

Taking the train

So for all the hassles involved in taking the train and the shuttle to work on friday…when Monday rolled around being tired of driving automatically trumps the added hassle factor. Decided to go with the 20 one-way trip pass partly because you save money (if you use it up) but partly moreso because then you have more slack time in the morning to catch your train on time without worrying about having to stand in line to buy a ticket and then running to get it punched for the ride before you get on…

On the plus side of the train, aside from not having to drive, there’s also a community aspect…its pretty much mostly the same people who ride the shuttle regularly…so already Monday, a couple of the people who ride the shuttle to work were recognizing me and saying “oh, hey you came back, cool” and I ran into one of them at lunch yesterday. Gives you a chance to get to know coworkers outside your department…who actually *come* to work (Sun’s kind of big on the coming into the office part as being optional as far as working goes…).

I probably would have taken the train again today if it weren’t a pseudo-holiday that a lot of people who work for the state get off work meaning light traffic…well, that and it turned out to be good because we had a staff meeting at 2:30 that lasted until 4:15…which meant I would have missed the shuttle home that I would have wanted to catch…and the later one wouldn’t get me home with enough time to eat dinner or anything before junior high ministry.

I’ll probably take the shuttle again one of the next two days. But I probably need to drive one more time this week because I was talking over email with a really nice sounding girl who has a room for rent in her two bedroom condo in palo alto, so I want to go take a look at the place and meet her so we can see whether that one is a keeper or not. Looking forward to having *something* decided as far as where and when I’ll be moving… 🙂