I came across the following blog post by Benjy Weinberger (@benjy) and found it helpful so wanted to share. Benjy’s the West Coast Engineering Director at Foursquare, with past gigs at Google and Twitter. He wrote the following post to help those who work with technical teams, but may not be technologists themselves, understand some of the frequently used terms. For those of us who spend time recruiting technical talent, are new to tech recruiting, or just curious – this is useful.
You should also read the comments in the post for some valuable insights from Morgan Missen (@mm), one of the top technical recruiting minds you’ll find. While you’re at it, check out her website – Main.is.
If you work in the tech industry then your daily conversations are littered with tech terms. You’ll probably have at least a vague idea of what these mean, but if you’re not in a technical role it’s sometimes hard to put these concepts and buzzwords in precise context.
In this post I’ll briefly explain ten basic terms that engineers use every day. Whatever your role in the tech industry, you’ll benefit from knowing exactly what these mean.
Brevity will require me to leave many important details out. If you’d like me to elaborate further, or if there are other concepts you’d like explained, let me know! I’ll be happy to write another post in this vein in the future.
Like any other work we do, software needs to be organized. We typically organize software into distinct modules, each responsible for a different task.
These components often need to talk to each other. For example, a DISPLAY module that displays a web page can send a URL to a FETCHER module that pulls web pages from the internet and returns the contents of those pages.
An Application Programming Interface (API) is a formal specification of how one software module interacts with another. For example, the API of the FETCHER component might be something like:
content = FETCHER.fetch(URL)
Meaning, “pass a URL into my ‘fetch’ function, and I will return the content of the web page at that URL”. The DISPLAY component can use this, but so can any other modulethat needs to fetch web pages.
In other words, APIs offer a simple, standardized way to provide functionality, without requiring a lot of intricate coordination. I explained APIs in detail in a previous post.
2. Technology Stack
Every engineering team works on unique problems: making tweets flow, mining check-ins for recommendations, sharing photos.
However most engineering projects also have many problems in common: how to store and retrieve data efficiently, how to serve web pages over the network, how to handle user logins and so on.
It would be a huge waste of resources to have every engineering team solve those common problems over and over again, re-inventing the wheel each time. Instead, we rely on standard components to do this general-purpose work. The set of standard components we choose are our technology stack.
A common example of a technology stack is the LAMP stack: Linux for the operating system, Apache for the web server, MySQL for the database and PHP (or Python) for the server coding environment. Continue Reading…