Salary Survey

I just read the survey results of Stanford grads. The outlook appears very positive. Average salary for bacherlor's degree was $80k. Master's average was $94k. And PhD average was $132k. In addition to the salary, most were offered goodies like stock options and signing bonuses.

This seems in line with the average Carnegie Mellon bachelor's degree starting pay of $85k. Note that most of Standford's grads work in the San Francisco Bay area. So the salaries might be higher due to the cost of living there. Stanford is also not your run of the mill university.

I visited a small college not known for its computer science program. The department chair said that grads with bachelor's degrees made aruond $60k. And master's degrees commanded over $80k. Not bad at all.

Hot Skills in Software Development

One of the recruiting companies listed some top paying jobs in the NYC. Here are some development positions from the Top 10:

  • PHP Developer $96k

  • Python Developer $103k

  • Java Developer $104k

  • Ruby Developer $106k


Strangely enough, another recruiting firms said that top skills for the upcoming year are HTML5, MongoDB (No SQL), iOS, Android, and Mobile. A lot of these fall under the mobile development umbrella. They do not correspond to the NYC top paid positions.

I guess the take away is that it is hard to quantify what is hot. But you can take some of these skills and learn them. There is hardly any downside. You might help yourself to a better job with higher pay.

Ruby on Rails Training Outcry

There is a six week Ruby on Rails training class starting up in NYC. Developers are getting salty because it costs a whopping $2800. I guess if you are a starving developer, $2800 is way over your training budget. But wouldn't you want to get your employer to foot the bill.

The cost does not sound that bad based on what you are doing. I have gone to numerous one week classes that cost $2000++. Compared to those, the six week Ruby class seems like a steal. Then again, I got my employer to eat the full cost. Sure it got counted against my training budget at work. But no money flowed out of my wallet for the class.

The pricing model itself almost classifies the course as employer funded training. I am really glad my employer provides me with a guaranteed benefit of paid training each year. The funny thing is that my employer is loose with the money, but never wants me to be away from my day job. Weird.

These days I usually spend the training budget on college classes that meet in the evening. So it turns out to be a win win. However I pay a whole lot less for my college classes than the Ruby course. It does not matter. I can't get off from work for a week, let alone the duration of the six week Ruby course.

Assume Nothing

Next year we are getting some data from a new source. I was tasked with making sure that programs which depend on this data use the new source. No problem. I knew where the old data got stored. I pointed the code to this previoius position. And I shipped the code.

Our customer has an acceptance team which tries to test everything. They told me my code was not working as expected. I checked it out and found that they were right. So I traced the problem back to the database. It looks like the new data was getting put into a new place. That couldn't be right.

I asked around and found that the new source named the data a little different. Therefore new elements were created in the database. I was referencing the old elements. But I told them that it was just a new way to get the same data. It should go in the same tables and columns.

Then I realized the error of my ways. You should trust nothing. Even the obvious will not be obvious to all. I spent about a week going over options on how to fix this. We needed buy in from the customer since it was late in the development cycle. Luckily the command decision was for those upstream guys would put the data in the expected columns. Whew.

The decision by the stakeholders meant I did not have to change my code. Next time I will validate all my assumptions, even the silly ones.

Help Wanted

We have an Extracts, Transform, and Loads (ETL) team on our project. They take care of a lot of backend stuff. Basically if our system communicates with some other systems, this team handles the communication. The subject matter expert from this team left the company this year. He was looking for some stability. Good for him.

Last week the team lead of the ETL Team left the company. He had been planning this for about 6 months. There are still some developers left on the team. But they are of the variety that need a lot of direction. I came to this understanding recently when interacting with one of them.

The customer acceptance team found what seemed to be a bug in the system. I got volunteered to do some leg work on the issue. I had the tester run some queries. Then I tested the app in a development environment. Finally I came to the conclusion that the loads were not populating a required database table. Then I referred the problem to the ETL Team.

I got a call from one of the ETL guys. He asked if I had any ideas on how to proceed. What? I walked him through my findings, which I had provided him along the way. Then I gave him some ideas. He started on them. But he got confused and asked if I could help interpret some of the results. Oh oh. I feel a trap coming on.

On Hiring

I am frequently taking community college classes to brush up on technical topics. Although I could learn the material on my own, I like the pace that the classes help me keep. It is also an opportunity to network with the leaders of tomorrow.

I keep my eyes out for exceptional talent in my classes. When I find it, I try to make a connection. It is not easy. But I am working it. There was one web development I had with a crazy teacher. He seemed to like to fail people in his class. His assignments would trip you up. Then he would give you a zero. Did I mention he was crazy?

There was one student who excelled in this biazrro web development class. I knew right away she was one of the shining stars. So I kept in touch with her. Recently she has gotten tired of fooling around in her down time. Therefore she is looking for a job. I jumped at the opportunity to get my company to hire her. Unfortunately we don't hire people from community colleges.

What? Okay I get it. We get a lot of applicants for very little openings. And we use the college you went to as a filter. That's fine. But I keep getting emails from recruiting asking whether I know anyone good to refer for a job. Referrals are the best way to attract top talent. It doesn't matter though. I suspect we lost the chance to hire this to performer.

Help Needed

I got a call for help from a member of another team on our project. He was a newer guy assigned to research a trouble ticket. He found some code that was supposedly not working correctly. I asked him what his concerns were. He told me he could not compile the code. Oh oh.

Now this code is an Oracle PL/SQL pacakge. It is a bit tricky. The code is written against a bunch of synonyms. The synonyms normally point to tables created by the loading application. The tables go away when the code is done. So I guess I could see why this might be a problem to compile. But if you can't compile, you can get anywhere with the problem.

I pointed the new developer to another script which creates a bunch of dummy tables with the correct structure. The script also generates the synonyms and points them to the dummy tables. That way you can at least compile the PL/SQL package. Then I get a call from this guy's boss. Apparently they spent a few days on the problem and were getting nowhere.

I eventually looked over their data and identified a problem with the record definition and SQL population. That's a story for another blog though.