How can new developers improve quickly? This was the topic of a recent Let's Discuss Slack event from Dev Together Madison . The discussion was lively and members provided great insights into critical skill targets for new developers. A number of crucial themes quickly emerged.
Soliciting External Input
Several discussions wound around the idea of approaching external sources for help, starting with asking "stupid" questions.
They know enough to know how truly little they know starting out and worry that they will be left behind or perceived as low-value if they reveal that fact -Fred Turkington
Junior developers may feel as though they're expected to know all the answers already, resulting in imposter syndrome when they don't. This may be a cultural impediment; if junior developers are routinely criticized or berated for not knowing the answers to their questions, they'll stop asking questions. Senior developers should encourage questions; junior developers will have a difficult time learning without exposure to new information.
As beginners (and even experienced devs), we need to be aware of our limitations and when we are completely stuck, and learn to ask for help from our peers/mentors. -Cristina Ruth
That's not to say developers shouldn't first attempt to solve the problem without help; it's still important for developers to show that they're stuck and not just asking for easy answers.
Hearing "help me with my thing" is annoying, but helping someone who has obviously already put in effort is not. -rosslarson
Asking a specific question and describing the solutions you've already tried is a winning formula, as can be seen across StackOverflow. But the target of your question doesn't even have to be human - rubber-duck debugging came up several times as a great way to look at the problem from a different angle.
Of course, figuring out what to try first isn't always straightforward. The vast expanse of the Internet offers thousands or millions of pages that might come up in a simple Google search. Not all solutions are equal or even valid, which makes a tedious task of sifting through and trying all the possibilities. Learning to search with specificity and accurately judge the value of information sources makes searching for answers far more efficient. Locating technology-specific communities in Slack, Twitter, Reddit, Discord, dev.to, and even local Meetups makes finding targeted, high-quality answers much easier.
Some of the event's discussions centered around failure and perceived failure. Like it or not, it's entirely possible the solution a developer's committed to isn't the best one - and that doesn't constitute failure. Allowing your ego to reject all other solutions is failure. "We all make mistakes," typed Cristina Ruth. "There's always something to learn, so it's very important that we don't destroy our self-confidence as we go through learning something new."
Another way to look at accepting "failure" was described by Jacob Zimmerman as "Ask, Then Listen". Being willing to genuinely understand the answer coming from the other side of the table instead of assuming you caught all the important keywords is another form of backing down your ego and accepting that there are still things to be learned.
Failure can be a positive thing when it's considered an opportunity to improve. If something doesn't go well or your solution is torn apart by others, it's OK! Take a moment to understand what went wrong, understand how to fix that for the future, and move on.
There's always something to learn, so it's very important that we don't destroy our self-confidence as we go through learning something new. -Cristina Ruth
Celebrating Small Wins
If you read through the last few paragraphs, it may seem like successful new developers must resign themselves to a dark and dreary life of ego-bruising failure after failure. That's not true! "It's important to take the time to celebrate your accomplishments," Cristina Ruth said - no matter how small the wins are. Don't get overwhelmed - persevere!
Breaking Things Down
Skillfully breaking large problems down into small, digestible chunks is crucial to staying focused in long-term goals, creating winnable tasks, and overcoming failures. This skill has far-reaching value - some of the other applications brought up were:
Learning new technologies by chopping them into manageable chunks
- Demonstrating thought process to others
- Gaining a holistic understanding of an architecture
- Mapping out software requirements
- Building accurate time and cost estimates
- Planning a development strategy for a large project
- Distributing concurrent work
- Troubleshooting software problems
- Attacking problems in general
Throughout Dev Together Madison's Let's Discuss event, many common themes were raised around building crucial developer skills. Identifying when to ask for help, removing ego, staying positive, and deconstructing problems were all well-represented during these discussions. Thank you to everyone who participated!