SDK
What is an SDK?
Definition:
A software development kit (SDK) is a set of tools provided by the manufacturer of (usually) a hardware platform, operating system (OS), or programming language. SDKs help software developers create applications for that specific platform, system, or programming language.
Analogy:
An SDK is like a toolbox.
A carpenter might use a toolbox that includes tools such as a hammer, saw, and screwdriver. The carpenter can then use these tools that are part of the toolbox to build their project, whether it is a bird house or a mailbox.
An SDK is just like a toolbox but for software. The SDK typically includes a set of libraries, tools, and documentation that make it easier for the developer to create the software by providing pre-built components that can be used as building blocks.
So just as a carpenter uses a toolbox to build their birdhouse, a software developer uses an SDK to build their product as well.
In other words:
A software development kit (SDK) is a collection of software development tools in one installable package.
Why is an SDK important?
It's one thing to know what an SDK is, but that is worthless if you don't know why you should know what an SDK in the first place. Let's break down the importance of this tech term based on two high level categories. We'll walk through an explanation as well as provide a score, 1-10, that shows you how much you should care about an SDK.
Pre-Product: 2/10
The first will be if you do not have a product yet. This means that you don't have a physical product. Maybe you're in the ideation phase, or maybe you're almost ready to start development. Whichever it is, we'll get into why a software development toolkit is important and why you should or shouldn't care about it if you do not have a product.
If you don't have a product, you don't need to worry too much about what an SDK is or how it works. Keep focusing on your ideation and customer discovery!
Live-Product: 7/10
The second category is if you do have a live product. Maybe you just launched your business or maybe it's been live for years and you're continuing to improve its quality. Regardless of the scenario, if your product is live, a software development toolkit carries a different weight.
You should care about a software development toolkit if your developers want to build more efficiently. SDKs should be provided by the operating systems that you are leveraging, so be sure that your developers are familiar with the proper SDKs to speed up your product development.
What are examples of an SDK?
So you know what an SDK is, by definition. You know if you should care about it or not depending on your situation as a business/company/product. To dig in deeper, we will walk through some examples so we can make sure you really have a solid grasp on a software development toolkit.
There are many different types of SDKs available, and the specific components that are included in an SDK can vary widely depending on the platform and the goals of the software being developed. We'll walk through five different types of SDKs and what they may include:
Mobile development kits:
Mobile SDKs are used to build mobile applications for platforms like iOS and Android. They typically include libraries and tools for developing user interfaces, accessing device features (i.e. camera or GPS), and testing and debugging the app.
- Android SDK: The Android SDK (Software Development Kit) is a collection of tools and resources that are used to build Android applications. It includes a code editor, a debugger, and libraries and APIs for accessing the various features of Android devices.
- iOS SDK: The iOS SDK is a collection of tools and resources that are used to build iOS applications. It includes a code editor, a debugger, and libraries and APIs for accessing the various features of iOS devices.
Game development kits:
Game SDKs are used to build video games (hence the name). They include libraries and tools for rendering graphics, playing audio, and handling user input.
- Unity SDK: Unity is a game engine and development platform that is widely used for building 2D and 3D games. It includes a code editor, a debugger, and a range of tools and resources for building and testing games on a variety of platforms.
- Unreal Engine SDK: Unreal Engine is a game engine and development platform developed by Epic Games. It is used to build a wide range of games, including AAA console and PC titles. It includes a code editor, a debugger, and a range of tools and resources for building and testing games on a variety of platforms.
- GameMaker Studio SDK: GameMaker Studio is a game development platform that is primarily used for building 2D games. It includes a code editor, a debugger, and a range of tools and resources for building and testing games on a variety of platforms. It is designed to be relatively easy to use, making it a good option for beginners or for building simple games.
Cloud computing SDKs:
Cloud computing SDKs are used to build applications that run on cloud computing platforms (again, hence the name). They provide access to the services and APIs offered by the platform being used.
- AWS SDK: The AWS SDK (Software Development Kit) is a collection of tools and resources that are used to build applications on the Amazon Web Services (AWS) platform. It includes libraries and APIs for accessing various AWS services, such as Amazon S3, Amazon EC2, and Amazon DynamoDB.
- Google Cloud SDK: The Google Cloud SDK is a collection of tools and resources that are used to build applications on the Google Cloud Platform. It includes libraries and APIs for accessing various Google Cloud services, such as Google Compute Engine, Google Cloud Storage, and Google BigQuery.
- Azure SDK: The Azure SDK is a collection of tools and resources that are used to build applications on the Microsoft Azure platform. It includes libraries and APIs for accessing various Azure services, such as Azure Virtual Machines, Azure Storage, and Azure Functions.
Web development kits:
Web development SDKs are used to build web applications and typically include libraries for building user interfaces, accessing web services, and storing data in the browser.
- .NET SDK: .NET is a software development framework developed by Microsoft that is primarily used for building web, desktop, and mobile applications. It includes a code editor, a debugger, and a range of libraries and APIs for building web applications.
- Java: Java is a programming language and software development platform that is widely used for building web, desktop, and mobile applications. It includes a code editor, a debugger, and a range of libraries and APIs for building web applications.
- Node.js: Node.js is a JavaScript runtime environment that is used to build server-side web applications. It includes a code editor, a debugger, and a range of libraries and APIs for building web applications.
Hardware development kits:
Hardware SDKs are used to build software for specific hardware platforms, such as microcontrollers or single-board computers, and include libraries and tools for interacting with the hardware.
- Arduino SDK: Arduino is an open-source hardware development platform that is used to build a wide range of electronic projects. It includes a code editor, a debugger, and a range of libraries and tools for building hardware projects.
- Raspberry Pi SDK: The Raspberry Pi is a small, single-board computer that is often used for hardware development projects. It includes a code editor, a debugger, and a range of libraries and tools for interacting with hardware devices.
- micro:bit SDK: The micro:bit is a small, single-board computer that is designed specifically for educational hardware development projects. It includes a code editor, a debugger, and a range of libraries and tools for interacting with hardware devices.
Key Takeaways:
- A software development kit (SDK) is a collection of software development tools in one installable package.
- If you don't have a product, don't worry about an SDK just yet.
- If you do have a product, be sure that your developers are leveraging SDKs to improve their efficiency.
- There are five common types of SDKs: Mobile SDK, Game SDK, Cloud Computing SDK, Web SDK, Hardware SDK