BluKit™ Workbench App 2.0

BluKit Framework

BluKit™ Workbench App version 2 marks are major milestone release! Improving on a solid 1.0 release is always a challenge but we did just that in version 2. In version 2, we strived to add features that would improve the Bluetooth development experience of software developers. To say this release is developer focused would be an understatement.

API Contracts between Client and Server Teams

Very often in software development teams, both the client facing software and the server side software are written in parallel as the product owner works to push out new App features. This of course requires coordination between the client and server teams, it adds release cycle pressure, and of course testing pressure. This is all too familiar to seasoned software developers! How does the client team write software to interface with the server when the server API is not published, tested, or even finished? A contract or Application Programming Interface (aka API) between the server side and client side software must be ironed out first to avoid delays, bugs, and other problems. Once the API is agreed upon, only then can both client and server software teams work successfully in parallel.

Bluetooth Peripheral as an API Contract

How does this relate to App support of Bluetooth peripherals? Just as client and server software development teams must work in parallel, so also must software developers building Bluetooth support into their apps. In this scenario, most often the client side is the App and the server side is the physical Bluetooth hardware. So, both teams must agree upon what data will be read and what data will be written between the App and the physical Bluetooth hardware (aka peripheral). When is the data available to be read and when is the data able to be written. All of this formality makes up the API contract between the app and hardware teams.

Virtual Peripherals

Ok, so how does all this client / server API contract discussion relate to version 2 of BlueKit Workbench? So glad you asked! At the forefront of features introduced in version 2, is an exciting new software developer feature: Virtual Peripherals! What is a virtual peripheral? Essentially it behaviors like a real physical peripheral but it is not physical. It is the representation of a physical peripheral, but in software. In other words, a Virtual Peripheral encapsulates the data that will be shared between the App and the Peripheral. In BluKit Workbench App version 2, a Virtual Peripheral can be created by recording data from a real Bluetooth Peripheral. After recording the data, it can be exported as a Virtual Peripheral. The following Bluetooth peripheral data can be recorded in real time, and exported to a JSON file:

  • Peripheral
  • Services
  • Characteristics
  • Descriptors
  • Advertisement Data
  • RSSI Signals
  • Characteristic Notify/Indicate values as Data

The exported JSON Bluetooth peripheral data can be inspected, and even modified! Import the valid JSON file into BluKit Workbench. The new “Virtual Peripheral” appears as another discovered Bluetooth peripheral. Inspect, Connect, and interact with the Virtual Peripheral just like a real peripheral! In this way, the application software developer (client side) working to interface with a real physical Bluetooth peripheral can begin work even though the physical Bluetooth peripheral may not be available or ready for App connections.

BluKit Workbench – Apple App Store

BluKit Workbench App is available in the Apple App Store. Learn how it can accelerate your software development efforts with Bluetooth integration: https://apps.apple.com/us/app/blukit-workbench/id6747599806

“Software Engineer” Position Extinction

Software Engineer Salary Bands
Software Engineer Salary Bands

There are tens of thousands of unfilled software engineering positions across the United States and easily hundreds of thousands of unfilled software engineering positions globally. How preposterous to announce extinction of a position that is so competitive and sought after. Ok, let me explain my position. First, some background.

Decades ago, when software engineering became a recognized discipline within university engineering programs, the graduate with a computer science engineering degree would seek a “software engineer” position. After several years writing software, almost universally a five year minimum, the skilled and “tried” degreed software engineer could expect a promotion to “Senior Software Engineer”. This promotion carried with it an expectation of not just “time in the trenches” but a level of experience, both breadth and depth in the field. It was expected that a Senior Software Engineer would mentor less experienced software engineering peers. The Senior Software Engineer would have experience across the whole software stack including server development experience, database design and architecture, as well as front-end work such as desktop and web development experience. The Senior Software Engineer role carried with it, a level of “fit and fitness” to tackle the hard problems, to ask the tough questions, and be able to arrive at a conclusion on how to solve the problem, or propose a different solution.

Today, as more and more software must be developed to solve the world’s problems, it’s clear that universities are not churning out software engineering professionals fast enough to keep up with the world’s software engineering demands. In the United States, tens of thousands of H1-B Visa applications are applied for, and filled, a large percentage of these are for software engineering positions. The basics of economics, supply and demand drive the world’s software engineers to the US shores.

With that background, let me explain my outlandish blog post title “‘Software Engineer’ Position Extinction.” Truly the need for more software engineers has never been greater. Over the last decade, with the rise of the smart phone and giant shift in how consumers access the internet, the shift from desktop to smart phones, competant mobile developers have become highly sought after. With a shortage of supply and such a steep demand curve, the economics mandate that the cost of acquiring such a software engineer will indeed rise. Salaries for software engineers have probably risen faster than most other industries. In 1992 the average starting salary for a software engineer graduating with a BS in Engineer would be between $28,000 and $32,000. Today it closer to $80,000-$100,000+.

Well established companies rely on Human Resources to make sense of salaries, positions, etc. HR uses a tool called salary bands (or range) to bring order and some sense of fairness to the sticky area of salaries and compensation. For example, a Software Engineer I may have a salary band of $80,000 to $95,000 while a Software Engineer II might have a salary band of $90,000-$105,000.

With the meteoric rise of software compensation in the late 1990s with the rise of the internet and surge in demand, these salary bands were adjusted significantly upwards. After the dot-com rise and collapse things stayed relatively stable for a short few years and then in 2007, Apple introduced the iPhone and changed the landscape of computing forever. This warranted a shift in salary bands but none came.

Instead, what I’ve witnessed is position extinction. Within twelve to eighteen months of graduating with a bachelor’s in engineering, the high demand for software engineers, a robust economy, and the shortage of software graduates, will allow the new software professional to easily outgrow the Software Engineer salary band in all but the most static industries. With many new software engineering candidates receiving multiple salary offers, HR is limited in its options to attract the candidate. While the experience of the candidate may easily align with well established expectations, the salary band no longer fits the competitive landscape. Thus HR is faced with two choices, find another candidate or bump the candidate into the next higher salary band. Software Engineer band is a very short rung on the salary ladder to Senior Software Engineer, even if the candidate’s skills do not match the new position.