Picking Technology for Hacking

Hackathon Mentor
5 min readMay 28, 2020

--

Hackathons are a great place to learn and use new technology, whether it’s a new framework, API, tool, part of the stack, or language. I’ve seen many hackers ask about what technology to use for building their product, and the answer is basically: it depends.

Is your goal to learn a new technology, or is it to build and win at a hackathon? If it’s the latter, you should probably pick technology that you’re mostly already familiar with so you can build in an efficient way. If your goal is to learn, then the world is your oyster!

Before I dive into concrete technology suggestions, I want to emphasize that if you know how to code in one language, you will be able to code in another language. Core programming concepts are the same across all languages, and by that I mean if you know when and how to use a for and while loop, you’ll still know when and how to use it even in a language you don’t know. The fact that you need to iterate through a list to grab an item doesn’t change, no matter what language you’re writing. The syntax changes, sure, and there are some nuances with certain languages, but in the grand scheme of programming, the logic is the same. You’ll just have to “learn” (read: look up on the internet) the syntax to do what you want in a new language.

That’s all to say, don’t be scared or deterred by the fact that you don’t know a language. You do know it, you just have to do a few internet searches first!

In general, I would say to pick one technology that’s brand new. For example, if you’re using a brand-new framework, try to pick a framework in a language you already know rather than a framework in a language you don’t know. This way, you’re not learning both the framework and and the language at the same time. Or, if that’s not possible, pick a language that’s super similar to a language you already know, or a framework that’s super similar to a framework you already know.

To dive deeper into what I mean when I say pick a language similar to one you know, I like to think about programming languages in two groups: object oriented programming (OOP) languages and not object oriented languages. Java and C++ fall into the former, although all languages can be used and molded into following an OOP pattern. If you know the concepts of OOP, you’ll be able to use that anywhere. If you don’t, I’d say stay clear of Java and other OOP languages during the hackathon because there are concepts you need to know before you can even start to write code in those languages. To clarify a bit on what OOP is, if you understand the terms and know how to use “objects”, “classes”, and “interfaces”, you probably know OOP. Knowing Python or Javascript means you probably don’t know OOP too deeply, if at all.

Now that that’s out of the way, I’ll talk a bit about specific technologies and suggestions I’ve given at hackathons. From experience, I’ve seen a lot of students coming in knowing Python, so Flask or Django are good choices for frameworks. If you already know Flask or Django and want to try a new framework, combining a front-end framework like Angular, React, or Vue with Node.js to do backend is a common choice; the MEAN or MERN stack (MongoDB, Express.js, Angular.js / React.js, and Node.js) are good picks for Javascript people.

For mobile applications, if you know Java or an object-oriented programming language, Android is done in Java or Kotlin, so that could be a good place to start. Android uses Java but has libraries and functionalities for mobile behavior. Kotlin is similar to Java, and while I don’t have experience with Kotlin myself, I’ve seen snippets of Kotlin code and it looks like a simpler Java. It makes me want to play around with Android again, just to check out the language!

Continuing with mobile, if you know Javascript, then React Native seems to be a good choice. There’s this newish cool kid on the block called Flutter, which is great. Flutter’s a framework that generates native Android, iOS, and web applications but you only have to write code once (in a language called Dart, which looks like the child of Java and Javascript)!

I don’t know anything about iOS development nor Swift, so I can’t comment on that. I have heard people tell me a while ago that it’s extremely difficult to actually get an app onto the Apple Store though due to the high expectations of UI, but take that as you will as I’ve never actually gone through that journey myself. Your entire team would also need to have Mac OS, otherwise some people will not be able to do iOS development.

This next section may be a bit biased, but if you’re looking for tools to do machine learning, Google Cloud Platform’s ML APIs are great. There’s very, very, very many of them, and they can help with tasks like transcribing speech to text and vice versa, labeling images, and analyzing sentiment of text.

A lot of hackers also use a platform called Firebase, which is often used to help build apps. Most apps need a logging-in system and a database at the very least, and Firebase has products — Authentication and Firestore — to do both of these. It can also host static websites (and for hosting non-static sites, use Google App Engine), store blobs of data like images, audio, and video, and send notifications to users. There’s a whole suite of products designed to help build your app, and I’ve used it myself before. It makes developing a lot easier because I don’t need to build these systems myself, and all of it is in one place so I don’t need to integrate with a bajillion systems to have all those functionalities.

There’s a lot of technology out there, and sometimes navigating the many choices can be challenging. But, at the end of the day, if you’re having fun, it almost doesn’t matter what technology you pick. You’ll most likely learn something new, meet some cool people, and best of all, (try to) build a product, which are all great takeaways from attending a hackathon!

--

--

Hackathon Mentor

Suggestions and answers from a frequent hackathon mentor!