Auto Added by WPeMatico

JetBrains at the ICPC North America Championship 2020

The first ICPC North America Championship (ICPC NAC 2020) took place February 19–23, 2020. The top teams from the ICPC North America Regional Contests advanced to the ICPC NAC in Atlanta, Georgia, hosted by the College of Computing at the Georgia Institute of Technology.

JetBrains was proud to be a Gold Sponsor of the event. We were also honored to receive an ICPC North America Outstanding Community Leadership Award for our three-year commitment to their North America Regional Contests, participation in the ICPC World Finals, and service as the official ICPC Global Programming Tools Sponsor. JetBrains was also recognized for our commitment to helping ICPC Global advance the art, science, and sport of programming through trustworthy competitions for universities all over the world for the benefit of society.


JetBrains was represented by members of the Educational Products and Kotlin teams, along with Andrey Ivanov, SVP of Investments, Research, and Education. We participated in different activities related to the event, and we also had a booth at the Career Fair, where we had an opportunity to speak with contestants and their coaches about best practices and tools in computer science and to discuss our open internship positions. Sebastian Aigner, JetBrains Developer Advocate in Education, gave a talk for the coaches about our Educational Products and JetBrains Academy, a hands-on platform for learning programming.


He provided an overview of the features and capabilities of the platform and described their uses for learning and teaching programming.

One of our central goals at the ICPC North America Championship was to meet teams using Kotlin for competitions so that we could share their experiences and help make Kotlin, already one of the official ICPC languages, more popular for competitive programming.
Some teams, including the NAC winners from MIT, used Kotlin during the practice contest. One of their team members also later became the third-place winner of Kotlin Heroes 3.

The team from the Milwaukee School of Engineering (MSE) used Kotlin for every submission throughout the contests. We had a chat with team member Nick Johnson about the factors that make Kotlin a great choice for competitive programming. Here are some takeaways about why the team from MSE chooses Kotlin for their coding challenges:

  • What parts of Kotlin’s design make it a good contender for competitive programming?

    Kotlin is built to be easy to use and very intuitive. It’s like speaking a sentence out loud and putting it into code. Kotlin is a great functional language, incredibly strong for anything list-based, array-based, or map-based. It’s beneficial for manipulating copious amounts of data.
  • What advice would you give to other competitive programmers making the switch to Kotlin?

    There are a number of tricks in the language you can use to your advantage! For example:

    • Use functions inside function bodies to keep track of states easily.
    • When modifying any sort of data, put a dot after it and look at what IntelliJ suggests for auto-completion. There’s a good chance that it will suggest the change you’re looking for.
    • Sorting is an operation built into lists. You can choose a custom sort button, copy to other lists, or mutate certain parts of the data.
  • Why do you prefer Kotlin over other official ICPC languages?

    Well, it’s not quite that simple – there’s more than one reason:

      • Using Java is like tying chains to your feet for fun because of all its limitations, such as the extra code one needs to type or the extra things one needs to do to map or transform data. A Java solution can easily be 2 times longer than an equivalent Kotlin solution, without any runtime benefits.
      • ICPC is an algorithms contest, and while C++ is fast, functional elements of Kotlin, like operations on lists, make it easier to use for the contest than C++. There’s no need to type out three or four lines of code, as you must do in C++.
      • Looking at things like the standard library, Kotlin offers a lot more than Python, and does a lot of it better. The speed difference can be simply incredible: we’ve had solutions that our teammates wrote in Python and timed out, and with Kotlin we can solve the problem in 0.1 seconds just because that’s the nature of the language.

    I’m excited to see what other people can do once they start to use Kotlin and remove the shackles of whatever language they’re currently using.

  • Thank you for your insights, Nick!

And, of course, we can’t forget to mention the winner of ICPC NAC 2020, the MIT team. Congratulations to the team and its coach, and also to every participant of this great and unique event! We were happy to be there with you!


Your JetBrains team

Continue ReadingJetBrains at the ICPC North America Championship 2020

Software Development the JetBrains Way: Dogfooding and Other Key Principles

JetBrains has turned 20, and over the years, we’ve honed methods for development that match the style, values, and needs of our company. These processes work so well for us that we want to share them with others. Dogfooding, for example, has always played a central role in the development of our products, and with this video we want to share its role in our creative process with you.

In the software development industry, dogfooding is the practice of testing your products within your company, using them as the end users would. Effectively, you have to eat your own dog food to ensure that your product is of the highest quality.

We at JetBrains have always been in a good position to do this. Indeed, since 2000, when we started to create the first JetBrains product, the ideas for our tools have often developed in response to an internal need. The products we build, from IntelliJ IDEA to Kotlin and Space, are all designed first for ourselves, and we use them in our daily work.

Of course dogfooding is not a panacea, and in addition to its benefits, it also has a number of pitfalls that we discuss in this video.

On the one hand, the practice of dogfooding gives us the advantage of being able to solve product-related problems, such as UI/UX issues, early, before users have had a bad experience. It also helps us discover the functionality that real customers will expect from the product. Basically, dogfooding allows us to step into our users’ shoes. On its own, writing good code doesn’t necessarily result in developing the right product, and dogfooding helps us address this issue.

On the other hand, dogfooding is not a silver bullet for developing software. It can sometimes cause bias, and it must be combined with other practices or used carefully to ensure that the final product is appropriate for the target user. And in this video we examine our best practices for handling these situations.

Watch the video

Learn more about the way we create products at JetBrains and about how the products are made to meet not only our users’ high standards but also our own.

The Drive to Develop

Continue ReadingSoftware Development the JetBrains Way: Dogfooding and Other Key Principles

End of content

No more pages to load