Software Engineer - Linux Kernel
|March 22, 2013 - June 22, 2013|
|Employment Type:||Full Time|
|Description:||StorageCraft is looking for a Software Engineer with at least two years of recent experience developing Linux kernel drivers, preferably related to the storage stack, and with a solid grasp on synchronization concepts related to multi-threaded, reentrant and preemptive code. A BS in computer science or similar field (EE, Math, etc.) is preferred. At least four recent years of experience using C and C++ is required. Experience with Qt, Python, CMake, and Linux configuration and packaging is a plus.|
So what is it like to be a software engineer at StorageCraft?
Engaging – Priority is given to personal preferences when projects are assigned. This means that, by and large, you get to work on projects that are appealing to you. This is very intentional because it results in a high degree of passion and productivity. The term “Backup” doesn’t really capture the depth and scope of the technologies that we play with. If you’re into messing around in the kernel, there’s a good chance you’ll have the opportunity to do so, on multiple platforms. Or if you’re more into libraries, middleware, daemons and services, web services or UIs, or native GUIs, no problem, we do all of these. Are you into architecting complex multi-tier solutions where interconnections scale to million-node levels? Or do you prefer dabbling with cloud technologies, custom network protocols, math-heavy encoding algorithms, virtualization technologies, or problems which really leverage your computer science training? We play in all of these arenas. Whether it’s in the bowels of the OS or heights of the cloud, you’ll have great freedom to innovate, and you’ll work on the types of projects that constantly engage your mind.
Zombies! – We subscribe to a “More Brains!” ideology whose core precept is to leverage each person’s creativity and intelligence as much as possible. So, rather than plunking down a detailed requirements doc on your desk (where somebody else has already thought things through, and you’re just asked to implement their ideas without really much input of your own), instead, as a group we define the target, where we want to be, so that we have a common vision and goal, and then we divvy up roles based on preferences and skills and each person then acts essentially as a self-guided missile with occasional course corrections from group feedback. The result is that you get to be quite creative as to how you wend your way to the target. We find that it’s both fun and productive to have this creative freedom, plus the net result taps into the collective brain-power (More Brains!) rather than just the ideas of a few leads or architects. If you’re the self-guided missile type, the constant tinkerer, then you’ll fit in well. Now don’t misunderstand – we do have requirements documents – we are organized – but we typically don’t go into the nitty-gritty in these docs. They’re generally more of a high-level view with functional requirements. As to how those functions are implemented, that’s almost always entirely up to the engineers.
Flexible – We don’t mandate any particular method or style. We do have some rules of thumb such as “If you’re modifying somebody else’s code, try to make your changes in a way such that they don’t clash with the existing code.” We typically assign two, sometimes more, engineers to each significant project. We’ve found that there’s no single method that works best for everyone, or every project (a driver takes a bit more design up front, compared to a web UI, for instance), and so there are several different methodologies being used by various sub-teams (although across the board we do have a continuous integration and automated test process in place). This means you’ll often get to work in a way that fits your own style/habit/project/etc., and that others will respect that. We have a very strong focus on productivity, versus seat warming. In other words, we understand that it’s your output that matters, not the precise hours you arrive and leave the office, so we’re typically quite flexible with work hours. New hires should keep very regular hours for at least the first three months until they become a known quantity by illustrating their productivity. After that, we allow a lot of float. Some people come in a bit later and leave later, or come in earlier and leave early. We do expect engineers to be in the office during the core hours that overlaps other team members’ schedules so that they’re not a bottleneck when people need to communicate or work with them.
Engineering Driven – StorageCraft has no outside funding, no angel or VC funders, and sustains all of its (significant) grown based on its own internal revenue. This means that we’re the masters of our own destiny. All of the company’s founders still work at StorageCraft every day and they all have a deep understanding of the software development process. This translates into sane practices and expectations. There’s no parent company or outside investor or out-of-touch executive to introduce unrealistic expectations. We, the engineering department, are the ones who dictate the direction and momentum of our work. We do not have death marches.
Adaptable – StorageCraft has very little management hierarchy. This means that decisions and changes are made quickly and efficiently, and that each employee has a voice that makes a real difference. It’s common for new-hire engineers to introduce ideas or suggestions that result in immediate changes.
Supportive – Our engineering management philosophy in a nutshell is to provide engineers with all of the resources they need to succeed (great hardware, all the software licenses that they need, special mice/keyboards/chair/etc. if needed, relevant books (we’ll buy you any work-related book and it’s yours to keep), free snacks and drinks), to coordinate our efforts, and to minimize distractions as much as possible so that engineers can focus. When distractions are necessary, such as in our once-weekly team meeting (which typically takes no longer than 20 minutes and often less), we streamline our processes in order to minimize the impact.
Accountable – We have a strong attitude of personal ownership and accountability for projects. The projects you work on will be your babies, and they’ll stay with you over time, growing and maturing. We don’t toss our code “over the wall” to QA. We don’t hand off our stuff to others to maintain when we’re done with the basic implementation. This means that our people have a very strong incentive in making sure that their components are solid.
An All Star Team – You’ll be amazed and inspired by your team members, and you’ll learn a ton from them. We are extremely selective in our hiring process and this means that our engineering team has no anchors or dead weight. You can count on your team members to do a great job, and they will very regularly surprise you with the unexpected and awesome. The level of innovation has created a real environment of excitement – you’ll sense it – and it’s contagious.
This job is no longer active. Please click here to see current job listings.