As the workforce paradigm has shifted from predominantly in person to work from home, it has highlighted how adaptive technology has made us. Part of ensuring success in remote teams is finding ways to keep engagement up and supplement the human element of in-person interactions with solutions specific for what you are trying to achieve.
A hackathon when done right is a great way to spur interest from teams, and leveraging specific features of development tools can help bring back the human element to a remote development team. The concepts covered in the post will not be solely applicable to a remote hackathon, but is written as a holistic approach I have seen successfully applied.
Prior to starting an in-person or remote hackathon there are some items that are critical to ensure success. If you skip these items you can actually make it considerable more difficult for the developers when compared to an in-person hackathon. As a remote team you may already be struggling with engagement and having to overcome obstacles can exponentially compound engagement issues you may be facing.
Choosing your team
When selecting members of a team I like to take a similar approach to forming an Agile team, meaning finding a diverse group of engineers where you may have individuals that can be viewed as pillars in certain data domains, but also have some level of familiarity across the other areas required within the project. This will help to embody a concept of T Shaped team members where by the use of collaboration you help to cross-pollinate knowledge throughout the team. The desired end result is better preparing the team for success by selecting the right engineers and helps to collectively improve cross-functional skills within the team. If you were to form a team comprised of solely of senior Django developers for a NetChatOps deliverable you may be very successful in the middleware/web framework but could be setting yourself up for pain points on the integration of Django with orchestration tools or automation frameworks.
Designating Advisors
It is quite uncommon for everyone on a hackthon team to have all the knowledge they need at their disposal and you may find for specific items you may not have a team member that can help troubleshoot certain issues. You may also find a team that is comprised of mostly senior engineers which gives that team an unfair advantage. In both scenarios you may benefit from some of the senior engineers participating as advisors instead of contributors.
When running a hackathon with multiple teams designating a small group of advisors that are readily available to offer advice and guidance can help substantially with engagement. This group would be a set of engineers that have a deep understanding of the critical aspects of the technologies you are working with and are not participating in any specific team. These engineers should make sure their attention is locked to just the hackathon and not other priorities to ensure they are readily available to jump in at a moments notice to help a team out. For an in-person event this group should have a designated area where teams can drop in to ask for help. Remote and in-person events should have a dedicated meeting solely for the advisors that is shared prior to starting and should take advantage of breakout rooms as needed.
Defining Scope
This is very much a double-edged sword–on one side providing guardrails on what is to be developed prior to starting can help ensure you are able to make more informed decisions on planning, team structure, and increases the chances of delivering a working solution in the allotted time. However if the guardrails are too confining you may be limiting creative intuition. In a previous competitive hackathon there was a considerable amount of lead time for each team to form organically, discuss what ideas they had for the end product, and ensure all necessary infrastructure was in place prior to starting. In this scenario, the guardrails were demonstrating a working integration or extension to Nautobot. The scoring criteria was based on completeness, usage of new core features, documentation, and “special pizazz”. The minimal use of guardrails, but considerable time to plan allowed the team to really think out of the box and come to a great end solution.
Minimal guardrails should be paired with additional preparation time, whereas asserting firm guardrails and limited scope can also set a team up for success. Think of this as needing to eat a a giant ice cream sundae; both ways you are one bite at a time. The difference is the former gives the team the ability prepare, scoop, and portion those bites ahead of time so when it’s time to eat they only have to focus on eating. The latter may be a team receiving a pre-scooped & portioned sundae, still eating one bite at a time, but maybe the team wanted neapolitan with sprinkles instead of vanilla with syrup. In the end, the goal was achieved as both teams have full bellies and empty ice cream dishes.
Build Prerequisites
The most successful hackathons I have participated in had ALL external dependencies pre-built prior to starting. This may sound like a no-brainer, but in my experience has been a huge time suck for the team to set up small things like infrastructure hosting, CI, repositories, or even things as simple as meeting room or GIT repository. By eliminating this time suck the team can focus on working on the fun part of the hackathon and dedicate more time to the end deliverable not building the ice cream shop where their sundaes are made.
Stub Out Backlog
Now that you have your team formed, some rough idea on what you want to deliver, and dependent infrastructure built it’s time to throw some tasks on a backlog. For an in-person hackathon I’ve found it very beneficial to have a stack of sticky notes and some form of a board that I can organize in a kanban board fashion. For a hackathon, I typically keep the tasks more generic when compared to typical Agile backlog, the backlog is more meant to help identify who is working on what and any dependencies chains that may form. By providing this visibility, you reduce the chances of someone pulling a blocked task or not knowing what to work on next therefor value can more easily flow through pipeline.
In a remote hackathon I will substitute a tool like Jira or GitHub Projects in place of a physical backlog. When doing so, you should elect one person to help manage the backlog; for me, this is typically a team lead. This is where it starts becoming critical to pay attention to these small details in a remote hackathon. In an in-person hackathon having a physical visual backlog of tasks to be done keeps everyone on the same page and understands what is still waiting to be done. When you move the backlog to out of site it will become out of mind, which the common response would be everyone will own the backlog. Which in theory sounds practical, however in practice when everyone owns something, no one ends up owning it. Having a dedicated person to own and manage the backlog can prevent this paradigm.
Breakout Rooms
During an in-person hackathon, it’s very common for two or more individuals to collaborate on a task and do so at either a shared work area or at each other’s desk to avoid pulling focus and distracting others that are working on their own task. This is also a common thing to occur in remote hackathons. The difference is typically everyone on a team starts off in a common meeting; by doing so, it becomes increasingly difficult to stay focused as people pair off and start collaborating. While the knee jerk reaction is to have everyone spin up their own meeting and you divide in conquer, but that is not always the most efficient course of action. By disbanding the common meeting room and everyone going their separate ways, you start losing ownership and outside (non-hackathon work) may start sneaking in. One great way to have your cake and eat it too is to have breakout rooms for people to jump in and out of as needed but the main meeting remains open for everyone to work in. This helps emulate an in-person dojo atmosphere where anyone can ask/provide help to others and brings back the a human element to remote work.
Remote Plugins and/or Screen Sharing
Screen sharing within a meeting is a great start to pair-programming, but what if you could actually share the same IDE? With VSCode Live Share, you are able share your IDE just as if you were collaborating on a document in Google Drive or OneDrive. Why would you choose this over separate branches and screen sharing sessions? Well, you are able to get a more immersive interaction in a pair programming session, improve efficiencies by not having to git fetch && git checkout <branch name>, and everyone can remain in the main dojo area of the meeting while still pairing on a task. This extension also allows you to show the person you’re pairing with what you may be explaining instead of dictating where to go and what to do in their IDE. For me that is a huge benefit because we all communicate differently, and there are times it is considerably quick to fix the typo your partner made instead of go to line 34, you misspelled instance.
The Live Share extension is not limited to just two people within the session. This feature can also be used as a powerful tool for an engineer to join a pairing session that is already in progress to help others with an issue. If we take this concept and look how it applies to the T shaped engineer concept discussed previously you can quickly see how small things link this extension can help the pillars of a data domain share their knowledge and experience. This can also substantially improve the efficacy of hackathon advisors by letting them jump directly into code without having to dictate via a screen share on what they want to see to offer advice on.
Conclusion
For development teams that are used to collaborating with team members that are geographically disbursed or have embraced collaborative remote work habits, a remote hackathon may be just like any other day. However, not everyone has hands-on experience with collaborating on code, so taking the time to focus on ways to remove obstacles and keep as many people possible engaged will help in the success of the hackthon.
Does this all sound amazing? Want to know more about how Network to Code can help you do this, reach out to our sales team. If you want to help make this a reality for our clients, check out our careers page.
We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept”, you consent to the use of ALL the cookies. In case of sale of your personal information, you may opt out by using the link Do not sell my personal information. Privacy | Cookies
This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may have an effect on your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
Cookie
Duration
Description
__hssc
30 minutes
HubSpot sets this cookie to keep track of sessions and to determine if HubSpot should increment the session number and timestamps in the __hstc cookie.
__hssrc
session
This cookie is set by Hubspot whenever it changes the session cookie. The __hssrc cookie set to 1 indicates that the user has restarted the browser, and if the cookie does not exist, it is assumed to be a new session.
cookielawinfo-checkbox-advertisement
1 year
Set by the GDPR Cookie Consent plugin, this cookie records the user consent for the cookies in the "Advertisement" category.
cookielawinfo-checkbox-analytics
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
cookielawinfo-checkbox-functional
11 months
The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
cookielawinfo-checkbox-necessary
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-others
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
cookielawinfo-checkbox-performance
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
CookieLawInfoConsent
1 year
CookieYes sets this cookie to record the default button state of the corresponding category and the status of CCPA. It works only in coordination with the primary cookie.
viewed_cookie_policy
11 months
The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.
Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
Cookie
Duration
Description
__cf_bm
30 minutes
Cloudflare set the cookie to support Cloudflare Bot Management.
li_gc
5 months 27 days
Linkedin set this cookie for storing visitor's consent regarding using cookies for non-essential purposes.
lidc
1 day
LinkedIn sets the lidc cookie to facilitate data center selection.
UserMatchHistory
1 month
LinkedIn sets this cookie for LinkedIn Ads ID syncing.
Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
Cookie
Duration
Description
__hstc
5 months 27 days
Hubspot set this main cookie for tracking visitors. It contains the domain, initial timestamp (first visit), last timestamp (last visit), current timestamp (this visit), and session number (increments for each subsequent session).
_ga
1 year 1 month 4 days
Google Analytics sets this cookie to calculate visitor, session and campaign data and track site usage for the site's analytics report. The cookie stores information anonymously and assigns a randomly generated number to recognise unique visitors.
_gat_gtag_UA_*
1 minute
Google Analytics sets this cookie to store a unique user ID.
_gid
1 day
Google Analytics sets this cookie to store information on how visitors use a website while also creating an analytics report of the website's performance. Some of the collected data includes the number of visitors, their source, and the pages they visit anonymously.
AnalyticsSyncHistory
1 month
Linkedin set this cookie to store information about the time a sync took place with the lms_analytics cookie.
CONSENT
2 years
YouTube sets this cookie via embedded YouTube videos and registers anonymous statistical data.
hubspotutk
5 months 27 days
HubSpot sets this cookie to keep track of the visitors to the website. This cookie is passed to HubSpot on form submission and used when deduplicating contacts.
ln_or
1 day
Linkedin sets this cookie to registers statistical data on users' behaviour on the website for internal analytics.
Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.
Cookie
Duration
Description
bcookie
1 year
LinkedIn sets this cookie from LinkedIn share buttons and ad tags to recognize browser IDs.
bscookie
1 year
LinkedIn sets this cookie to store performed actions on the website.
li_sugr
3 months
LinkedIn sets this cookie to collect user behaviour data to optimise the website and make advertisements on the website more relevant.
VISITOR_INFO1_LIVE
5 months 27 days
YouTube sets this cookie to measure bandwidth, determining whether the user gets the new or old player interface.
YSC
session
Youtube sets this cookie to track the views of embedded videos on Youtube pages.
yt-remote-connected-devices
never
YouTube sets this cookie to store the user's video preferences using embedded YouTube videos.
yt-remote-device-id
never
YouTube sets this cookie to store the user's video preferences using embedded YouTube videos.
yt.innertube::nextId
never
YouTube sets this cookie to register a unique ID to store data on what videos from YouTube the user has seen.
yt.innertube::requests
never
YouTube sets this cookie to register a unique ID to store data on what videos from YouTube the user has seen.