Software Developer Interview Questions
Must Ask Software Developer Interview Questions

Hiring a software developer can be a difficult task to accomplish. Here at LightSky, we have made quite a few revisions to the interview process, and have settled on the following list of base questions that we ask when interviewing every job candidate. We’ve included a list of those questions below and give some guidance as to what we are looking for in answers. Feel free to use any of these in your interview process. I should note that these questions are often given during the first step of the interview process, usually done over the phone or via video chat. We do have a series of technical questions that we tailor to each applicant and position that we ask in a later interview. 

What are some techniques you use to ensure that there isn’t a breakdown in communication when interacting with a difficult client?

 I realize that for some software development companies, their developers are isolated from the clients, however for us, that isn’t the case. While we do have Project Managers, our developers are often on the call with clients and asked to explain technical concepts. For this answer, we are trying to ascertain the applicants underlying communication skills. Do they mention stepping back and trying to understand the client’s point of view? Do they have actionable steps to mitigate a communication breakdown? 

What is one area of software engineering that you wish you knew more about?

With this question, we are trying to get a better idea as to what the application sees as their own limitations. Often the answers will surprise us, but there isn’t a wrong answer, per se

A new hire is having trouble estimating time amounts on tickets. You are finding that their estimates are coming in low. How would you go about mentoring them to help them improve their estimates? What advice might you give?

We started asking this question in particular as we noticed that a lot of our developers had trouble accurately estimating tickets. They say that an excellent way to establish a thorough understanding of a topic is to teach it, so we present this question as a scenario to better gauge their understanding. As far as specific advice, it can often be helpful to break a ticket down into smaller tasks and estimate those versus a large bucket item.

With web technologies changing at such a rapid pace, what are some things that you do to stay ahead in the industry?

A software developer should aim to be continually learning. Does the applicant mention specific podcasts or blogs that they follow? Are there conferences that they enjoy? 

How do you evaluate if a particular framework/technology is a good fit for the client’s needs? 

When new technologies arise, it can often be pretty exciting to use those in a project. However, what we are looking for out of this question are caution and forethought. Does the applicant appear to balance the desire to implement new technology with the potential risk of doing so? Would this new technology fit well within the ecosystem of the project or organization? Does this new technology have a solid open source community behind it? Mentioning these things would indicate that you have an applicant who is balanced in their approach. 

What steps do you take to ensure that the code you release is as bug-free as possible? Do you consider yourself good at anticipating edge cases? If so, what steps do you take to account for those? If not, what could you do to improve?

There is no such thing as bug-free code. However, that is not an excuse for releasing poor code. A developer can do a lot of things to help mitigate the risk of releasing poor code into the wild. If the applicant discusses using best practices such as Test Driven Development and defensive programming techniques can be a positive sign.

How do you sell difficult concepts to clients when they are making a decision that you feel is not in their best interest?

There are going to be times when a developer presents something to the client that is in their best interest, but the client wants nothing to do with it. So long as our developers have done their due diligence in educating the client about the consequences of not following a particular piece of advice, then that is all we can do. For us, we are looking for an applicant to indicate that they would fight for their idea, but within the confines of professionalism and due diligence.

A client submitted a ticket indicating that, “Some users are reporting emails are not being sent. Please help!”. What questions might you ask the client? What are some of the reasons why their website may not be sending emails? How would you go about identifying which of the potential causes of the problem? 

For this answer, we are trying to get at the core of how the applicant thinks. There are many reasons why a server wouldn’t send an email. Is the mail server down? A DNS issue? An issue with the form on the website itself? Has the domain been blacklisted? The key here is that they can articulate a variety of problems that can manifest themselves as an email not being sent.

What steps do you take to prevent burnout?

Software burnout is a big problem in our industry. Does the applicant have specific techniques that they use to prevent burnout? This is also a great question to help you learn more about what they do outside of work to maintain a level of sanity.

I hope you found these questions helpful and can help you either as the interviewer or interviewee. Do you have any other questions that you find useful? Let us know some of your favorites, and we will gladly add them to this article. 

5 Must Have Drupal SEO Modules
5 Must Have Modules for Drupal SEO

I have been doing Drupal development for the last four years. During that time, one concern from potential clients has been that Drupal isn’t SEO friendly. While Drupal may not come ready for search engine optimization out of the box, with a few additional modules and some proper configuration, Drupal can be a successful SEO platform. Below are what I consider must have modules for Drupal SEO.

1. Pathauto
Pathauto works by creating automatic URL aliases based upon tokens that you set in the configuration. By default, Drupal’s URL structure looks similar to “/node/75” where 75 is the node id of the page. With Pathauto, your urls will transform into keyword rich URLS such as “blog/five-must-have-modules-drupal-search-engine-optimization”. Each URL pattern can be configured on a per-content type basis, and you can add alias patterns for your taxonomies as well as your users.

2. Global Redirect
The Global Redirect module works by automatically redirecting visitors from the node/xx URL to the aliased version of the URL. This is important as it prevents duplicate content penalties within Drupal. This module also allows you to add a canonical tag to your pages as well.

3. MetaTag
The Metatag module allows you the option of configuring metatags for your site at both the individual and global level. As of the time of this writing, the Metatag module has support for the following tags:

4. XML SiteMap
The XML SiteMap module create sitemaps that you can use to submit to Google, Bing and Yahoo’s Webmaster tools. You can indicate which content types you’d like to see included and indicate the priority of those content type pages on your site. The benefit of submitting an XML Sitemap is so that the search engines know about all of the pages on your site. Without it, they will only know about the pages found during their normal crawling process which sometimes misses pages.

5. SEO Checklist
The SEO Checklist module doesn’t add any functionality to your site directly, but it does serve as a reminder for SEO related tasks that still need to be completed. It separates items by category and allows you to check off items as they are completed. SEO checklist also saves a timestamp of each completed action so that other site administrators will know when items are completed. This module is updated frequently with the latest SEO techniques and helps ensure that you are maximizing SEO for your site.

LightSky recommends Drupal as a solution too many of our clients who want easy to use and maintain websites that are also flexible and secure. One of the great features of Drupal is that it is so easy to customize. Adding the above modules for SEO is an example of how Drupal can easily be adapted for our clients’ needs. What are some of your favorite modules for SEO in Drupal?

Web Application vs Website
Web Applications vs Websites: Understanding the Difference

If you are a bit confused as to the difference between a website and a web application, fear not. You are not the only one. In fact, many of our clients ask us that very question. It’s not always an easy one to answer, but let’s try to break down their differences.

What is a Web Application?

The actual definition of a web application is a bit ambiguous. Still, one way that I encourage clients to think about it is to think of a web application as equivalent to the software you’d use on your PC or an app on your mobile device. A web application is built on the same fundamental technologies that power most websites, but the difference lies in their purpose and complexity.

Whereas a website is meant to present some sort of information, a web application is designed to solve a specific objective. So if you were the owner of a small restaurant in town and you approached me and asked me to build you something that would represent your business, I would consider that a website (as I’m sure most would). However, if you asked me to build you an online ordering system that integrated with your internal fulfillment processes, that would be more of a web application.

So why the confusion?

Often this can get a little confusing as websites are getting more sophisticated and go often go beyond serving up information. It’s not uncommon for a client to ask us to build a brochure-type website with a bit of “custom” functionality that does a specific thing, such as adding a dealer locator or even some basic e-commerce functionality. This type of workflow automation has the potential to save organizations money and increase their return on investment. That said, at the end of the day, I would still consider that a website as its original purpose is to serve up information.

Web Application Examples

Clear as mud? If you are still a little confused as to the difference between the two, maybe it would be helpful to look at a few examples:

Your Bank – The main landing page you arrive on once you type in their URL would be their website. However, once you login to their online banking system, that would be a web application.

Facebook/Twitter/Etc – Almost every social media platform out there could be considered a web application because they solve a specific purpose — to connect people together.

Google – You could consider Google both a website AND a web application.

At the end of the day, that is the point. There isn’t a significant difference between the two terms and can, and often are, used interchangeably. That ambiguity can be confusing, but thinking in terms of complexity and purpose can go a long way towards clarifying the differences between the two.

NavBar in Drupal
NavBar – The Next Step in Drupal Navigation

So I am not kidding NavBar is literally the next step in Drupal navigation, it is being used in core for Drupal 8.  This is great news because not only does it mean that the Drupal 8 core will contain some much needed improvements to the administration navigation scheme.  Back end user improvements like this are perhaps the thing that makes me most excited about what Drupal 8 is bringing to the table.  Lets look a little bit at NavBar.

What You Get

Drupal's Navbar ModulePretty simply put NavBar gets you a responsive administration toolbar for your Drupal users.  It really isn’t going to do anything for what your visitors see, but your content creators, site administrators, and even site builders will see this as a much welcomed change.  NavBar is first and foremost completely responsive, and for those of you who use the traditional Drupal administration toolbar on your mobile phone oh boy are you excited.  The standard Drupal 7 install, not to mention Drupal 6, doesn’t offer the most mobile friendly administrative experience.  NavBar helps resolve this.  NavBar also offers a more flexible navigation option.  You are able to use NavBar at the top of your site above the header, or as a sidebar on the left hand side.  The customization of the tool, really helps set it apart.

Not only is the mobile experience improved, but there is a much cleaner and professional looking image presented than the Drupal 7 administration menu.  Though this might not seem like much, for those of us who build Drupal sites for clients this is a big deal.  Image is everything, and it is tough to sell Drupal’s out of the box usability against WordPresses out of the box usability.  We have a lot of admin usability improvements in our standard Drupal installation to help combat this, but now NavBar is another one.  Users almost expect clean and friendly design, and now they can get it.

Installation

I am not going to lie, NavBar in its current state is a bit of installation work, but most people should be able to figure it out if they have a little understanding for how Drupal is structured.

The first step for me is downloading and installing the project. I think that drush is the best tool for installing and enabling projects like this, but particularly for NavBar I suggest installing the project before moving to some of the other steps.  The reason is that once the project is installed and enabled it will put some indicators on your /admin/reports/status page that can really help you troubleshoot in the next steps.

Once the NavBar module is enabled, you can visit the site’s status report using the path above and notice that there are a three statuses now associated with NavBar, and this is where the fun comes in.  NavBar requires the installation of three libraries (Modernizr, Backbone, and Underscore), and you may have them already installed, or at least some of them.  Using the status page at this point will help you find out if you have them already installed and ready to run, or whether you need to install them.
If you find that you need to install them, the process isn’t all that complicated, there are some helpful guides on the project page that will point you in the right direction.  Or give us a shout we would be happy to help.  Essentially it is a matter of downloading the libraries, or cloning their respective repositories, and moving them to your libraries folder in the Drupal installation.  The Modernizr library requires you to follow a link and download a specific minimized version of the library but there are specific instructions to follow on the project page to help guide you here, so I won’t reinvent the wheel here.  The instructions are pretty thorough, and relatively simple.

Once you have the libraries installed you can disable your regular administration toolbar and you are off and running.  If you follow those steps and still aren’t having any luck, the site status report is the best place to look.  Most likely it is an error with the libraries that were installed, and that report will point you to which library is causing trouble, and maybe even what the problem is.

We have fallen in love with NavBar, and it has started making a huge impact on our clients and how well they like using Drupal.  We highly suggest you use it.

Improving Drupal Usability
14 Modules for Improving Drupal Usability

Often times, Drupal gets a bad rap for usability. That’s because out of the box Drupal isn’t very user friendly. As with everything Drupal, it requires a few contributed modules in order to really make it shine. Below are a list of fourteen modules that you can add to your Drupal site to increase its usability. Let’s begin!

Views Bulk Operations – VBO is a module that allows you to execute bulk actions on views rows. The actions it comes with are pretty standard, but you can extend it using the Rules module or even roll your own if that’s your thing. This module allows for your site admins to be able to do things like mass delete nodes, mass publish/unpublish nodes, or even mass change the nodes author.

Admin Views – Admin Views is a module that replaces the stock administration screens with views. Why is this neat? You can add additional exposed filters to your users administration screens, or change which columns appear in order to help your site admins easily find the information they are looking for.

Draggable Views – Draggable Views is a module that allows your rows in a view to be reordered using the same javascript implementation that you find scattered about the Drupal admin (blocks, menu, etc).

Module Filter – Module Filter is a module that seeks to garner control over the unwieldy module listing page. It does this by adding a tab on the left hand side for each package, as well as one for showing the modules alphabetically. It also adds a textbox that you can search to quickly filter the module listing.

Autocomplete Deluxe – The Autocomplete Deluxe module replaces the default autocomplete element with the jQuery UI version making it much more user friendly than the default implementation.

Pathologic – The Pathologic module is an input filter which fixes image and link paths that would otherwise cause them to break. This is useful in situations where your site admins have content on both staging and live sites. Gone are the days of the live site pointing to the test site by accident or vice versa.

Custom Contextual Links – Contextual links was one of the features that our D6 -> D7 clients really seemed to love. One great usability improvement that you can make is to add a contextual link to a view (for example) that would allow them to quickly add the piece of content that corresponds to that view. Normally you’d add these custom contextual links through a set of hooks, but this module provides a nice UI to make it simple.

Conditional Fields – The Conditional Fields module allows you to create fields that are dependent upon one another in order to be shown. One example of this would be to show a textarea of an admin (or user) selected “Other”. I added this module because it can be go a long way towards cleaning up administration screens when adding content types with lots of information.

Linkit – The Linkit module replaces the default CKEditor link icon with an autocomplete field that allows admins to easily drill down to the content they are looking to link to.

Edit – Drupal 8 will ship with inline editing, and if you are too excited to wait, check out the Edit module. Edit module allows you to do just that, edit content in place. Note that you’ll need to use the CKEditor WYSIWYG if you want this to work on WYSIWYG fields.

Select2 – Like the autocomplete deluxe module above, the Select2 module replaces the standard select box with one that supports searching, remote data sets and infinite scrolling of results.

References Dialog – The References Dialog replaces all the standard reference fields with a dialog that allows them to add, edit and search for references. This can go a long way towards simplifying the administration workflow.

Content Menu – The Content Menu module adds the ability for administrators to be able to create pieces of content straight from the menu administration pages. When creating a piece of content, you have the ability to add a menu item, so it only makes sense that you can add a piece a content when adding a menu item.

Navbar – The Navbar module adds a mobile friendly navigation bar to the administration section of your website replacing the default toolbar which is non-responsive.

There you go. Fourteen modules to improve the authoring experience of your Drupal site. What do you think of the list? Are there any modules you would like to see added? Feel free to discuss in the comments below.

Software Development Services
Benefits of Having an Awesome Website

So you’ve thought about having a website for your small business or organization, but aren’t sure if having one is worth the investment? Regardless of the business goals of your website, having a web presence should be a part of any business plan. This article will talk about the benefits of having a website and how organizations can use their website to generate leads, engage with customers and save them money.

Benefit #1: Lead Generation and Demographic Data

Having a web development firm build you a website can be a significant investment, both in terms of time and money. However, one of the best benefits of having a professionally designed website is the ability to capture your visitors and convert them into leads for your organization.

It all starts by ensuring that you have a solid understanding of who your target audience is, what they are looking for when they land on your website, and how your organization can help. With that in mind, you can then develop a content strategy that aims to convert as many visitors as possible. Free tools such as Google Analytics or Heap then make it easy to track your visitors and determine if your plan is working (or provide you with the data needed to make changes if it isn’t).

Benefit #2: Credibility

Having a well-designed, easy to use website goes a long way towards establishing credibility for your websites visitors. Having an outdated website that is hard to find the information your visitors are looking for tends to turn people away. In fact, a study showed that 38% percent of website visitors would stop engaging if they determined the content or layout to be unattractive. That is a lot of missed opportunities. 

Benefit #3: Ease of Customer Interaction

Many people think that a website is simply a place to put information, but at its core, a well designed and maintained website is much more than that. Having the opportunity to get to know your customers through the use of social media and a blog will provide you with more information about what your customers are looking for and expecting from you. The easier it is for people to interact with your business, the more likely they are to remain a satisfied customer or to become one if they aren’t already. You can also design your website contents specifically to address your customers’ needs. This drives more visitors to your website as they are more likely to share this information with people they know through the power and reach of social media.

Benefit #4: Maintainability

Unlike print media, a website is easy to change and can be updated as frequently as needed. In addition, the cost to change content on a website is only measured through time, whereas a piece of printed material includes time and material. A website won’t replace the need for printed material, but a well thought out site with targeted content can supplement the print materials. You can easily use your website to provide your clients with printed materials through downloads, or provide your clients with video media that they can watch directly within your website.

Benefit #5: Workflow Automation

A lot of people think of websites as merely a place to show a visitor some information. While that is an essential part of their job, they can also be used to automate the internal business practices of their organizations. From creating simple reports to complex integrations, we have built a lot of scripts and tools for our clients over the years that have saved them money and increased efficiency.

As you can see, there are some compelling benefits to having a website for your organization. From lead generation to workflow automation to customer engagement, a website can go a long way to help propel your organization into the 21st century.