When prospective students come in for an interview at Rithm, I’m sometimes asked if I’ve noticed any qualities that distinguish particularly successful students. While our admissions process does a fairly good job of assessing students’ preparedness – both technically and behaviorally – there are certain qualities that are hard to suss out over a couple of relatively short interviews.
There are definitely a few common qualities that seem to be relatively common among successful students, in programming or any other technical discipline. Here are my top four.
1. Successful students ask questions, and are not afraid to fail publicly.
This is by far the most important one. Successful students are not afraid to admit when they don’t understand something, and are willing to ask as many questions as they need to in order to achieve understanding.
I’ve noticed that sometimes people are afraid to ask questions about technical subjects. Impostor syndrome undoubtedly plays a part; after all, nobody wants to ask a question they perceive as being embarrassing. But if one student is confused by something, it’s likely that others are too, and so asking questions is valuable not only for your own understanding, but for the sake of the class as a whole.
Of course, the onus isn’t entirely on the student here – it’s up to the teachers to create a classroom culture that actively encourages asking questions and makes it okay to say "I don’t know." Given such an environment, successful students are more than willing to put themselves out there, and ask clarifying questions whenever they start to feel lost.
2. Successful students want to become self-reliant.
Even though it’s important to ask questions, it’s also important for students to recognize that they should be building self-reliance in their field. This doesn’t mean that students need to decrease the frequency of their questions. However, it does mean that their questions ought to evolve in complexity, and that students should begin doing more research before they ask questions.
Questions like “why isn’t this working?” are great for the first week of a program, but not so great for the last week. Instead, students should be striving to get to a place where they can ask questions like “I’m getting this strange error and I’m not sure why. I’ve traced the issue to this line of my code, but everything looks fine to me, and I found this StackOverflow article that seems to be about a similar issue, but I’m not sure if it’s that relevant. Can you help me piece this together?”
Along the way, questions like “How should I read this error?” or “How would you begin to debug this?” are really valuable. Answers to these questions won’t just be specific to the issue at hand; they’ll also provide students with valuable insights that they can apply more broadly as they continue to learn.
3. Successful students know when to move on.
Whether you’re trying to debug a complicated issue or research a topic on your own, it’s very easy to get sucked into a rabbit hole and lose hours of time without making much progress. Successful students recognize when the time they’re spending on their own is no longer worth it. They are able to cut their losses and formulate a question rather than wasting half a day (or more!) on something that a fresh set of eyes could spot quickly.
Related to this, successful students also recognize that when it comes to web development, every topic has infinite depth. They also observe that there are a tremendous number of topics to have a baseline understanding of in order to successfully build a project or contribute to an existing code base. Because of this, they’re willing to accept gaps in their understanding for the sake of being able to move forward.
For example, students don’t need to know how to implement a password hashing function in order to implement a secure login feature; as long as they can use a library that will hash passwords for them, they’re good to go. If students are really curious about password hashing and want to learn about it later, more power to them, but not understanding how a particular hashing algorithm works under the hood shouldn’t be a blocking issue in one’s budding web development career.
4. Successful students continually revisit previous work in light of new understanding.
I love it when a student asks me a question about a warmup from two weeks ago, or when they ask me about a refactor they’re trying to do from one of their earlier projects. The learning process never ends, and self-reflection is one important avenue for building on one’s understanding.
It’s always worth revisiting your old work, even though you may be your own harshest critic! Look at your old exercises and projects. Ask yourself how you can remove code duplication, or whether there are any methods you’ve learned about that could help clean up your code. Successful students are continually looking to improve, and that doesn’t always mean learning about the hottest new framework or library. Sometimes it’s as simple as going back through an earlier project and assessing it in light of the new things you’ve learned.
Wrapping It Up
Whether you’re looking to get into a bootcamp, or learning on your own, I hope you’ve found this list helpful. It’s by no means intended to be exhaustive, if there are any qualities you think we’ve overlooked, please let us know! Just like our best students, we’re always looking to improve.