Wednesday, October 20, 2010

A Tale of Two Interviews

Disclaimer: This story is completely true, sort of. The names and faces of those depicted in this blog post have been changed in order to protect the innocent and incompetent alike. Any similarity to people or places you know is completely coincidental. Furthermore, no animals were hurt in the publishing of this blog post.


Over my career, I have had the opportunity to be on both sides of an interview table. I have searched and applied for jobs as well as sought the assistance of recruiters. I've also been the one looking for employees to add to my team to replace ones that left or to expand the team. With every experience on either side of the table, I've walked away feeling that something wasn't quite right with the process as a whole. These notions bubbled up this past week when a good friend of mine, we'll call him Bob, was telling me about his tales while searching for a job. I figured I'd retell the story here.


Bob is a fairly seasoned programmer with a number of years and languages under his belt. It takes a lot for him to change jobs because he enjoys trying to help companies become better and work close with the friends on his team. He's active in the community and has a thirst for learning anything development related. For a variety of reasons, Bob is at a point where he wants to change jobs and decides to do the interview dance. With in a short time of looking, two interview opportunities presented themselves to him.


The first was with a smaller company that sounded like a breath of fresh air compared to the corporate cubicle land that Bob is attempting to leave. The interview was held at a local coffee shop and with two very knowledgeable members of the company's development team. Having known his work from the community and online, the interviewers focused a lot on Bob as a person and what he's looking for in a company, a team, and a career. There were some discussion on technical topics; however, many stemmed from Bob's questions about the company's processes and infrastructure. Shortly into the interview, Bob found himself to be very comfortable, candid, and casual with the two people he was sharing the conversation with.


Later that same day, Bob had another interview in a different part of town. The interview was with a little bit bigger company that was comparable in size to his current employer. The interview was in a very similar office building as well. The receptionist paged the interviewer for him and then he was escorted into a small, closet of a meeting room where 2 chairs and a table barely fit. Walking through, Bob noticed the high cube walls, the silence in amongst the desks, and the lack of expressions on the faces of the few people he saw. Over the course of the interview, a lot of questions were asked that discussed fundamentals and text book definitions. There were some questions about Bob's past that were not really acknowledged by the interviewer when an answer was given. When everything was said and done, Bob was escorted back to the entrance and ways were parted.


This story provides an interesting look at how 2 different approaches are taken to a common problem; how does a company attract and hire good developers and how do developers identify good companies to work for. Hopefully, I don't have to say which of the two experiences portrayed above attracted Bob more. The interesting thing that came to my mind while Bob told me this story was not only the differences between the companies but how important the interview process is to both the candidate and the companies. Based on the story, which company appeals to you and why? How was your perception created on each company, which you had no prior knowledge of?

Wednesday, October 13, 2010

My Development Toolbox

Over the years I've carried around my own personal toolbox for development. The contents has changed throughout the years; however, the purpose has remained the same; to provide me with tool, templates, and snippets to allow me to build my web pages quicker, faster, and cheaper.


In this week's post, I'll walk you through what I currently keep in my toolbox from a high level so that you may be able to build your own or add some new tools into one you already have.


General Guidelines

Before we dive too much into the contents, I want to comment on a few guidelines that I try to keep when updating my toolbox. One of the largest guidelines that I attempt to follow is that everything must be free to be reused and redistributed. The reason for this is simple, I hope to applies these items into a variety of my projects and thus am redistributing them. I don't want to worry about paying a licensing fee every time that I want to add this module or use that font. Keeping this open, free, and available to be redistributed makes everything a lot easier.


The second guideline that I follow is to try and keep a copy of the license and author information of everything in your toolbox. This includes deciding on a license that fits your views and opinions for your own works that you add. Keeping a license around will help if someone asks you when you attempt to integrate it into a project. In addition to the licenses is the author's or the source's information. This could be nothing more than a url in my opinion but knowing where you got something and who did it can help you build a network of people and sites to keep an eye on for new stuff they may develop or post.


The third primary guideline that I try to keep is to store your toolbox in the cloud and on a flash drive. Some people argue that with the device syncing powers of tools like Dropbox or Evernote that you don't really need to keep a copy with in arm's reach on a thumb drive; however, I still like the speed of reaching into my bad and tossing someone my thumb drive to get the file(s) in the event I can't interact with the cloud easily or quickly. This is often the case at conferences.


CSS Examples

The first item I currently have in my toolbox is a group of files that provide various CSS examples. These are anything from templates to style a vcard, a CSS reset file, or examples of things that I took more than 2 seconds of effort to truly learn how to do.


Fonts

This is an area where I'm still getting my feet wet; however, with the ability to embed fonts into your web pages through CSS3, having open and freely-redistributable fonts comes in handy. One good resource for learning some of the legal nuances of embedding fonts, I highly encourage you to check out www.FontEmbedding.com.


Icons

Having the right icon for a given scenario or page can cause huge improvements to a page's design. Having the wrong icons can destroy just the same as well. I found myself searching for just the right icons on the web and in various libraries way too much. Now, I keep track of the icons that I have frequently used and will constantly add to them as needed. One item that I've began to track in here too are example favicon.ico files and icons for iPhone shortcuts.


Images

The reason why I have Icons and Images in separates folders in my toolbox is because of their intent. I keep images for background images and stock photos. The stock photos I'll probably branch out as my collection grows. As for the backgrounds, this ranges from simple gradients to watermarks to signify drafts or beta releases.


Scripts

I use this folder in a similar way to that which I use the CSS section. Here I keep a list of utility scripts (like an Html5 Feature Detection script) as well as snippets on how to use certain jQuery plug ins or do something else through JavaScript


Templates

This section of my toolbox is used for a variety of different scenarios. Since my day job is working in the Microsoft .Net space, I have a number of Project and File templates in this directory (since the ones that come out of the box in Visual Studio hurt my head). This is also the place where I keep track of other design and layout templates that I've either made or have found online


Utilities

My utilities folder is for any reusable, compiled component. This include stuff like a tool for handling database version migrations, database documentation, a random password generator, and abstraction classes that I can quickly plug into my .Net projects without worrying about rewriting the same abstraction layers over and over again.


Web File Examples

This folder I use for references and as a launching pad for creating some files. This folder contains a files that lists the DocTypes that I use the most, an example robots.txt, a sitemap.xml, opensearch.xml, and dublin.rdf. These are files that are missed in a number of templates and having them available makes it easy to add them in.


Personal Information

This isn't so much a folder as just a category of other items you should toss into your toolbox. Some of these items would be check lists that you use to keep yourself on track or to define a process that you have with your workflow, a copy of a personal biography that you may use for a presentation, a vcard of your contact information, a copy of the license(s) you place your own work under, and a copy of your CV or Resume.


That's my current toolbox. Obviously it's web heavy; however, that's where I find myself the most these days and what I enjoy doing. There's so much out there to learn and do and apply to your day jobs, it's nice to be able to have the resources you need and are familiar with at your finger tips.


-J




Wednesday, October 6, 2010

Code Shot - hCard Template


In this Code Shot post, I'll provide a sample template that I've used in the past for marking up and styling address information in the hCard microformat.

Html Template

<div class="vcard">
<a class="fn org url" href="http://randomactsofcoding.blogspot.com">Random Acts of Coding</a>
<div class="adr">
<div class="street-address">123 Any Street</div>
<span class="locality">Some Town</span>
<abbr class="region" title="Missouri">MO</abbr>
<span class="postal-code">12345</span>
<div class="country-name">USA</div>
</div>
<div class="tel">
<span class="type">Work</span> <a rel="nofollow" href="tel:1234567890">123-456-7890</a>
</div>
<div class="tel">
<span class="type">Mobile</span> <a rel="nofollow" href="tel:0987654321">098-765-4321</a>
</div>
<div>Email:
<span class="email">name@domain.com</span>
</div>
</div>


CSS Template for the Html

div.vcard
{
margin:5px;
font-size:0.6em;
}

div.vcard .url
{

}

div.vcard .org
{

}

div.vcard .fn
{

}

div.vcard .adr
{

}

div.vcard .adr .street-address
{

}

div.vcard .adr .locality
{

}

div.vcard .adr .region
{

}

div.vcard .adr .postal-code
{

}

div.vcard .adr .country-name
{

}

div.vcard .tel
{

}

div.vcard .tel a
{
text-decoration:none;
color:Black;
cursor:default;
}

div.vcard .email
{

}


Example
Random Acts of Coding
123 Any Street
Some Town MO 12345 USA
Mobile: 098-765-4321
Email:

Additional Resources