Skyhook has been inventing new uses of location data since 2003, and we continually work on collecting the locations of billions of new Wi-Fi access points worldwide to build the infrastructure and software to deliver this information. Our organization is fueled by our engineering team and their passion for building disruptive technology. Skyhook has an eclectic mix of mathematicians, code gurus and inventors who are driven to make a huge dent in the universe. In reflecting on this last year, we are excited to be growing so rapidly and looking to what the future will bring with our new suite of context products.
We sat down with one of our Senior Software Engineers, Peter Connolly, who works to develop the next-generation of disruptive technologies at Skyhook. We asked him to comment on his past experience so up and coming engineers can learn from his career path - and help advise them when looking for their dream software engineering position.
1. What was the hardest lesson you learned in your career in engineering?
Not long after getting out of college I learned that there is usually someone who knows more than I do about any topic. It is a humbling experience, but it's a great learning opportunity to work with these people.
2. What was the best moment you've had so far in your engineering career?
I'm not sure I've had a single best moment. There have been a few times in my career when a new product launches and I reflect on the hundreds of millions of devices and the billions of dollars that change hands every day in part due to my code.
3. Any tips on books to read?
There are a ton of books about a specific technology that provide an api and give you simple examples on how to use the tool. These books seem to be a dime a dozen and often times its really just changing from one api to another to accomplish similar tasks (e.g. the java and c# apis are really similar). Read the amazon reviews for the best of these, IMO.
There are, however, a handful of books that have forever changed the way I write code:
- Design Patterns, by the gang of four
- Refactoring: Improving the Design of Existing Code, by Martin Fowler
- The Data Warehouse Toolkit, by Ralph Kimball
- Working Effectively with Legacy Code by Michael C. Feathers
- SQL for Smarties by Joe Celko
4. How do you know if your position is a right fit for you?
My position is the right fit if at the end of the day I am both exhausted and excited. Exhausted by being in the zone coding all day, but excited by how much value I have created to the company.
5. What are some ways you can stand out as an engineer in the interviewing process?
I think engineers that can see the big picture are a rare asset to any company. How does your code impact the business? Instead of blindly writing the code the business asks you to write, you dig deeper and understand the requirements. Perhaps there is an alternative solution you could propose to meet the requirements in half the time?
6. What are some characteristics you look for in a job interview for an engineering position?
I look for someone who is:
- Smart enough to know the answer most of the time
- Confident enough to tell me its the correct answer (and why)
- Humble enough to say when they don't know the answer
- Persistent enough to find an answer when they don't know it
7. What specific skill set do you recommend for an ideal engineering candidate to master?
Personally, I think the technologies that a developer knows is secondary to how good of a programmer they are. I think a mastery of the fundamentals is essential and any good developer could pick up a new language/technology in a couple days/weeks. Object oriented coding and design patterns are a must to any software engineering job. I expect you to know at least one compiled language (e.g. java, c++, etc) and also one script language (e.g. perl, ksh) and have some familiarity with sql. If you aren't familiar with linux then I'm not likely to take you seriously. I would argue that many tasks could be done significantly faster on *nix (compared to windows) if you know the commands. If you are making software your career isn't it worth spending 10 hours up front to make the next 40 years of your life 10% more efficient?
8. If you could give some advice to someone looking to land their dream engineering gig, or engineering students just out of college, what would it be?
Software engineering has one of the lowest barriers of entry of any engineering field. If you want to work in a particular technology you can usually find free resources online and get experience with it. When you write that cover letter or interview for your dream job you can confidently tell the employer how you would help them solve business problems instead of spending months learning the technology.
About Peter Connolly
Peter has been a software developer with Skyhook since 2012. He graduated from WPI with a bachelor's degree in Computer Science. When he's not immersed in pushing big data around using java, hadoop and sql he can be found spending time with his family or playing volleyball.