The shortage of experienced software engineers in Southern California is remarkable. Our recruiting practice has become more focused on that area in the last 12 month or so. This situation has caused in-house corporate recruiters to work harder and know more about software, the market, and how to talk to engineers to give their company any kind of decent shot of landing the difference makers.
My goal here over a series of posts is to start at the beginning explaining as many software technologies as possible while providing a simple framework for understanding how they all fit together. With luck, this will prove a useful resource to my fellow recruiters—especially in this region—allowing those conversations with candidates and hiring managers much more productive. More than for most posts, I hope these draw a few comments here and there to help us guide our efforts here to where they’re most valuable. In this first effort, I’ll (try to) start at the beginning and use as little jargon and tech speak as possible. Clarity and simplicity are the goals. And I mention here and it applies to this and every post—please offer corrections and additions as you see fit in comments. Most of the software we use is delivered via web browser, so it makes sense to dive in there and put some structure in place that makes it easier to understand.
A web browser requests data from a server. When you type something into the address bar it’s almost always an HTML (HyperText Markup Language) page. Links on a page may be other pages or they could be more “dynamic”. Dynamic in its simplest form means that the server has to do some processing to figure out what to next send to the browser so we can read it. The details of what happens with that figuring-out fall in the category of “back-end” software which follows below.
Front-end web software is composed of just three main technologies that work together to display the page, organize the formatting and style of the elements, and to perform processing to make pages interactive. Understand how these three technologies fit together, and you’re ready to talk intelligently with these professionals. If you’re software product is delivered via web browser and you’re hiring “front-end” engineers—they better know something about these three technologies.
- HTML: Let’s reprise that mention above. HTML is the backbone of the web. It’s simple (by software standards) and just describes web information (pages, images, sounds) with tags. By reading the tags, the browser knows what to display and how to display it.
- CSS (Cascading Style Sheets): If given a block of text to display, a browser will display it in a standard font and size, depending on the tag associated. The web would be pretty boring. HTML documents can include detailed information about fonts, sizes, styles, colors, backgrounds, and so forth. CSS technology simply allows all that style stuff to sit in a separate, associated .css file so it can be more conveniently managed. The people that make the web look pretty do a fair chunk of their work generating and editing CSS.
These technologies provide hooks and provide support for the front-end technologies. But everything that is presented in a web browser runs on the stuff we just finished. It’s important to define the idea of a framework and an integrated development environment (IDE) here. An IDE is a toolset that a developer uses day in and day out to program. Adobe Photoshop can well be described as an IDE for designing graphics. I can’t think of a better word than “framework” to define its role. Let’s put it like this: any framework worth its salt allows a developer to create a bunch of code that forms a very simple working web application with the click of a button. From there, the developer uses her knowledge of programming languages to add functionality.
Practically every interesting interaction with a website requires access to data. Do a search on Amazon.com and their server runs your search against their database. In most cases it’ll deliver text, pictures, and links that are encoded to perform your next search when you click them. When you login, Amazon needs to look you up in a database. When you complete an order, it’s stored in a database so you (and they) can access it again later. I don’t have stats, but it would be hard to find a high volume consumer website that doesn’t rely on some combo of these five technologies. There are other technologies that linger out there, but these are the 5 “serious” ones. I list them here in no particular order.
- C#/.NET: Microsoft, in response to PHP invented Active Server Pages(ASP). Don’t worry about clicking on that link. ASP has been completely surpassed on modern Microsoft-powered web applications by ASP.NET (click on that one). Microsoft has been long known for being friendly to developers, but maintaining strict control over their technology. Recently they’ve changed tack and now .NET is open source. Infancy open source. .NET is a back-end architecture that can be paired with a variety of programming languages. Not to worry. C# is the only one that matters for anything of consequence. Microsoft tech is used widely, but it’s useful to note that it’s not sexy and therefore not used for brand new stuff. See Python, Ruby, and Java for that.
- Java: Java has a long and deep history that predates the web. It’s most significant attribute is that Java is designed to be the most portable. Whether or not it’s succeeded is open to debate like everything else…but the architecture has unique features. We’ll go into this in depth in the future. This tech is owned by Oracle through their purchase of Sun Microsystems.
- PHP: This tech is the most widespread solution for connecting web applications to databases…and, in my opinion, the most primitive compared to the other four listed here. PHP was the result when engineers recognized the need to make websites more interactive and not just present simple text, images, and hyperlinks to other pages. Not many companies would choose to build a new web application with PHP. But this tech is everywhere, so PHP hackers will be around for quite a while. This is an open source technology. This means there are organizations that create structure to move the tech forward, but everybody who can make a contribution is welcome to whenever they want.
- Ruby on Rails: The Ruby programming language had been around a while before the Rails framework was put in place, focused on web apps. If RoR isn’t the hottest web framework right now than this one is…
- Python/Django: Like RoR, a very modern technology stack that young companies and engineers swear by. Kinda like iPhones and Vine.
1,300 words and we’re just getting started!!