Thursday, November 21, 2013

9 Killer Questions to Ask an Interviewer

  1. How would you describe the general culture of the company and the workplace?
    • Personalities at a company are important.  If you don't like your co-workers and how management treats their employees, going to work will be painful.
  2. Why did you choose this company?
    • This is a good, subtle question.  Does the interviewer pause, or answer quickly?  Are they enthusiastic/passionate about the answer, or does it take them a while to fumble through an answer?  If they have to think long and hard to come up with something good about their company, this can be a red flag.  If you've ever worked at a company you were passionate about, you will be able to answer this quickly.
  3. Will there be any form of training provided?
    • With diminishing training budgets, its nice to work for a company that provides more than a log in to a site that provides Word and Excel training videos.
  4. What are some of the biggest challenges/successes facing the department currently?
    • This will help you understand the culture and see where you might face some hurdles in the future. 
  5. What process will be used to evaluate my employee performance?
    • It's good to know up-front, how you will be graded on performance
  6. Who will be my direct supervisor?
  7. Are there many opportunities for professional development within the company?
    • Again, training and being able to work with new technologies may be important to you.
  8. What is the usual time frame for making the hiring decision?
    • Everyone should ask this to show interest in the position and let them know you may be on the market for a limited time.
  9. May I contact you if any further questions arise?
    • It's good to follow up and try to remember the names of key people.

I'm adding a few questions of my own that will help determine if this is a job you really WANT
  • What causes you the MOST frustration within the company?
    • Try to find out where your future frustrations are going to come from and is it acceptable to you? 
  • If you could change 1 thing in the company (that would not cost a lot), what would it be?
    • Try to gauge how happy their current employees are.
  • Can you describe an advantage to working for  this company that you have NOT had at previous employers?
    • Again, the employee of a good company can quickly rattle off a few things.
  • As close as possible, describe the "perfect" personality traits of a candidate you would like to hire.
    • This question will help you determine their expectations for you.
  • Describe some of the personal traits of former [or current] employees that you do not like.
    • This one will 'really' let you know what their pet peeves are and help you determine what they really want in an employee.  If they mention they hate 'clock watchers' or they don't like to 'hand hold' people through learning, that "could" be some clues to issues they have had with previous employees that they will be sensitive to.


Wednesday, October 2, 2013

Developer Take Aways from Monster and CareerBuilder Access

I've had this posting in a Word document for a while, and finally, I'm getting around to publishing it.  A while ago, I was involved in the searching and recruiting of a new developer for our group.  We were given access to Monster and Careerbuilder to facilitate the search since our HR department had no clue how to sort out all the skills we were looking for.

Well, it was an eye opening experience, and I thought I'd share a few things I learned from this process.

1.       Make a small change to your resume every week to stay on top.  The default filter works by how recently you have updated your resume.  Usually, people will choose resumes updated within the past week, month, or 3 months.
2.       Put some buzz words in your Monster profile, if you have any decent experience (NOT in your resume, which I’ll talk about later).  It will get you more hits, but some of the hits may not be jobs you want, so carefully filter out jobs that don’t fit your skill set.
3.       Put down some lesser known technologies you’ve worked with in case someone wants to key in on that technology. (Like DotNetNuke, Mojo Portal, Kronos, etc).  A company may not be looking for a Mojo Portal developer, but if you know it, they may view that as a bonus and choose to give you an interview over the other 10K .NET developers out there.
4.       It’s hard to search by experience level and/or salary, so don’t feel the need to put salary requirements.  Use your title to let people determine that (like Junior or Senior).
5.       Make sure you have a descriptive  title and a target job title.  I can’t tell you how many resume’s I skipped because it said, “Joe Smith’s Resume” and had no target job title.  Monster is VERY slow at times and sometimes I just didn’t want to click on the link because I know it takes so long to pull up.
6.       Some companies want a Mid Level [or Senior] developer, but find out later that they can only afford a Junior Level [or Mid Level] person.  Don’t let titles scare you away, but be up front about your skills when applying for these jobs.  Be completely honest and transparent about what you have done and what you have not done.
7.       Recruiter fees DEFINITELY play a role in a hiring decision.  I personally know that I lost out on a position because the other candidate applied directly.   If you come from a recruiter, there is a 20%-25% markup.  You may be better than the other person, but if you are going to cost the company about $15K- $30K more (for similar skills), that can be a deciding factor if its close.
8.       Keep your certifications up (if you can), because when all else fails, acronyms are easy to search on AND the person doing the searching may have no clue what they mean.  You can tell me 100 stories about how certifications mean nothing, but for me it does three things:
a.       Gives me an easy way to search for a developer vs. some guy that knows the keywords I am searching for. (I’ve seen so many DBAs put Java and C# on their resume because they took a class in college or wired up a DataGrid to a table on a WinForm one time).
b.      Tells me the person is somewhat dedicated to their career.  Dedicated enough to study a book and take a test.  I put this in the same category as people that attend user group meetings for a particular technology.  You may not know much, but at least I know you care about your career enough to dedicate your own time/money to get the certification.  I know plenty of developers that go home and never touch a computer and have no side projects (a minus to me).
c.       They may just be learning monotonous details, but I’ve run into situations where a senior network engineer didn’t know a lot of the details of security policies that an MCSE would have known (and it ended up wasting 2 days troubleshooting a simple issue because of this).
9.        A cover letter is NOT important on Monster.  At least in my experience.  Disagree if you want.
10.   Get a skill that NOT everyone has.  There are a million .NET programmers out there at all levels and for all salaries.  So, learn some stuff like Perl, Python, RoR, Grails, Scala, etc.
11.   If you are a Web Developer, have some sort of public website, even if it’s just an online resume (and try to make it look decent).  I can’t believe you’ve been building websites/web applications for 6 years, but you’ve never created a public website.  That just shows lack of ambition.
12.   Putting special characters ( like the accented ‘e’ on Resume or a ‘tilde-n’ if you have a Hispanic name) in your resume’s file name can make it so it cannot be opened on some computers.
13.   Key in on some business terms to get Managers to take notice.  In healthcare, you could use: EDI, HL7, PQRI, etc.  We all know computers don’t care about what data they are displaying, but this excites managers to know that you may have some knowledge of their field that you can share with them (or that they don’t have to teach you).
14.   MOST IMPORTANTLY:   Don’t put things on your resume unless you can answer questions about them.  Use your Monster profile to add keywords/buzz words, but don’t put them on your resume because I’m GOING to ask you about them (while you are in front of me).  If I ask you a question about something on your resume and you can’t answer it at all, that makes you look like a liar.  I’d rather teach someone how to program than teach them how to be ethical.

Friday, May 31, 2013

Fixing CORS issue in Web API: "Origin is not allowed by Access-Control-Allow-Origin"

For security reasons browsers prohibit AJAX calls to Web API service outside the existing site. This means you can't provide a service exposed by Web API to a site on another domain. This is called Cross Origin Resource Sharing (CORS).

This problem should be resolved in .NET Framework 5 and I've found several articles on how to incorporate "Nightly ASP.NET Build" feature into your existing Web API service.  I'm not really comfortable with that and it can be hard to get it working properly. 

All you have to do to fix this issue is add a few lines to your web.config under the system.webServer:

   1:  <system.webServer>
   2:     <httpProtocol>
   3:        <customHeaders>
   4:           <add name="Access-Control-Allow-Origin" value="*"/>
   5:        </customHeaders>
   6:     </httpProtocol>
   7:  <system.webServer>

Wednesday, February 27, 2013

DNN Manage Button Hidden Behind Another Module

There is one issue I've run into several times with DNN and that is an HTML module covering up another module.  I had this issue with the Dark Knight skin.  An HTML module I had on the ContentPane was covering up the dropdown menu, so I had to make some CSS adjustments to the z-index property.

The issue I have now is slightly different.  I've written several modules that either:
  1. Do not display anything in the View (they work in the background), but you still need to access the Settings to make changes
  2. Do not display anything in the View if there is no data
The problem is if you are in Edit mode and nothing is being displayed, you cannot get to the Manage button because it is 'behind' the Manage button of the module below it.

I've come up with a simple fix for this that I include in my View.ascx file:

<% if(DotNetNuke.Common.Globals.IsEditMode()) { %> 
<div runat="server" id="showIfEditMode" >
   <br />
   <br />
   <br />
<% } %> 

This adds some padding below the module when you are in Edit mode. That way, your Manage button will be visible even when there is nothing to display.

Monday, February 11, 2013

Sorting ArrayList with Linq

This was my first forray into Linq, so I thought I'd post it in case I need it again in the near future.

I needed a list of user to populate a DropDownList.  In DotNetNuke, you can get an ArrayList of all users on the system with a call to: UserController.GetUsers(int PortalID).

The problem is the list is sorted by UserID, so when you open the DDL, you'll see all the users in what seems to be random order.  I wanted the list to be sorted by LastName, FirstName without having to write some sort of IComparer.

This is a great use case for Linq ( I've heard a lot about it, but never used it).

ArrayList a = UserController.GetUsers(0);
var so = from UserInfo s in a orderby s.LastName,s.FirstName select s;
ddlUser.DataSource = so;
ddlUser.DataValueField = "UserID"; // Alias Name from Sproc
ddlUser.DataTextField = "DisplayName";   // Alias name from sproc
ddlUser.Items.Insert(0, new ListItem("Select One", "0")); // Adds items to DDL

If you are using a custom object (ie UserInfo), then you must explicitly declare the type.
When using LINQ to query non-generic IEnumerable collections such as ArrayList, you must explicitly declare the type of the range variable to reflect the specific type of the objects in the collection.