1. Community

At CodeGym, we believe that exchanging knowledge between students is extremely valuable. As programmers help others, they themselves grow. And there's no better way to understand something yourself than to explain it to someone else. That's why we have created special sections on our website that are designed to give all our students the opportunity to share their knowledge and help each other learn.

So what do you do if you get stuck on the latest task? Searching for a ready-made solution on the Internet is a bad idea. Sure, you will get credit for the task if you just copy someone else's solution. But you won't close your knowledge gap and that will certainly come back to bite you in the butt in the future.

2. Questions about tasks

The requirements, recommendations, and virtual mentor are super cool. But what if the validator still won't accept your solution and you're not sure what the problem is?

Even in this case, there is still a way out. Meet the Help section. In this section of the website, CodeGym students can ask questions about tasks, explore each other's solutions, and also give advice and tips. Posting complete solutions is not allowed!

It sounds very simple and basic, but it's actually quite sophisticated.

First, each question can have an associated task. This means there's no point in wading through all the questions, if you are interested in questions about a specific task. You can always use a filter to easily see only the questions related to the task that interests you. Just enter the task name in the search bar:

Questions about tasks

Second, if you click the "Help" button while solving a task in WebIDE, you will immediately be taken to the Help section, where you will see only questions about the task you are working on in WebIDE.

Help button

Third, the IntelliJ IDEA plugin offers similar functionality. You can click the "Help" button or press the key combination Ctrl+Alt+W, which will immediately open the Help section in your browser. And of course, the filter will display only questions about the task you are solving in IntelliJ IDEA.

IntelliJ IDEA help

3. Creating a question

If you don't find a good analysis of your error in the Help section, then you can always create your own question. This is quite easy to do — you just need to click the "Ask a question" button and fill in the required fields:

 Creating a question

Unlike many other services, such as StackOverflow, Code Ranch, etc., CodeGym doesn't require you to cram all the important information into the question's title. Write your question however you like.

And by the way, you don't need to copy your code from WebIDE or IntelliJ IDEA and add it to your question. When you create a question about a task, your solution's code along with the statuses of the various task requirements are automatically added to it, i.e. which requirements your solution currently satisfies and which it does not.

 Creating a question 2

This means that other CodeGym students immediately see all the relevant information about the asker's solution, which makes it much easier to provide good advice.

4. Solution code

On many sites, when creating a question about code, you need to either attach an archive with program files to the question, or add all these files to the text of the question itself. The result is a big mess that people are either unwilling or unable to dig into.

Asking a question quickly and efficiently is an entire art form. On regular websites, you will either have to spend half an hour formulating your question, or accept the fact that no one is going to answer you. A good question about a task absolutely must contain the following information:

  • Link to the task that the asker is solving
  • The task conditions so others don't need to go hunt them down anywhere
  • Solution code — this could include many files
  • Status of each task requirement, i.e. what currently works and what doesn't.
  • Text of the question: this is usually quite clear — my solution doesn't work, and I'm not sure why.

CodeGym displays this information using a special widget that is very similar to the WebIDE widget. After all, it is already designed to display all of that information. Well, perhaps with the exception of the question itself.

Solution code

In fact, we wrote a special widget just to make it convenient for you to study other users' solutions. And to make it easy and pleasant for other users to examine your solutions in the questions you ask.