Startup Engineers: Learning the Core

03 Jan 2010

At any new job, there are a lot of things for engineers to learn. It's easy to get distracted by platforms, languages, team characteristics, the industry, business models, etc. One area that gets frequently overlooked is learning your company's core competency or technology. At every company (or department within a large company), there's an area that's their specialty. For Apple, it's building intuitive products. For Oracle, it's organizing huge amounts of data. While you can come out of a job and say that you grew your general software development skills, it's better to do that and gain a new area of expertise.

Your company's core strength may not be part of your job description. You may be working on back-end enterprise reporting for a company that prides itself on brilliant user interfaces or doing interface work for a company that specializes in data analysis. While you may not ever be directly working on the core competency, it's still possible to learn enough to be useful later on. If it's something that can be researched on your own, grab some books and do some reading. Talk to people who are working on it and get their opinions and ideas. Unless your company is highly secretive, you probably have source code access. Look into what tools are being used and read the source. You don't necessary need to know it line by line, just enough that you understand the concepts involved and could participate in a discussion about pros and cons.

Obviously, if you're working on web applications you should be very familiar with web programming. It's going to be assumed in the future that you're an expert in the language and platform on which you spent the most time. While it's essential to learn these things, most companies' core competency is not knowledge of a platform or language. 37signals aren't focused on Ruby on Rails, they design simple, clean products. ngmoco don't pride themselves on knowing iPhone APIs better than anyone else, they're good at making fun mobile games. While learning the platform is essential, it's important not to confuse that with learning the company's core competency.

Being familiar with your company's core competency enables you to be part of the important discussions that go on every day. When you don't understand the key concepts involved, you'll have a hard time participating in conversations about changing the core product. When you have the knowledge and can offer suggestions, you'll get involved more and will be seen as more valuable to the company. If a key project needs another person, you'll be much more likely to get on it. A developer with key domain knowledge is also much more difficult to replace, which can benefit you financially and in terms of job security.

Unless you're staying focused to one specific industry, these things are usually fairly unique. In the first two jobs I've had out of college, I've learned all about call platforms (the software that manages automated phone calls), machine learning, and ad servers. While some of these are more generally applicable than others, I've had all of them come up in conversations about unrelated topics. When you're applying for your next job, every other applicant is also going to list being good at web programming. It's the other interesting details that make your resume really stand out.