
Realistic advice about software dev right now
Audio Summary
AI Summary
The landscape for learning and succeeding as a developer has changed significantly, making it more challenging for new developers than ever before. While the speaker acknowledges his own entry into the field was under different circumstances that may no longer apply, he offers insights based on external observation for current aspirants.
The current environment for new developers is characterized by both opportunities and significant challenges. The core questions are how to learn and how to find success, which are now distinct issues. To illustrate the shifting dynamics, the speaker uses a hypothetical scenario of 70,000 new tech jobs and 100,000 new computer science graduates annually, resulting in a surplus of 30,000 graduates. This creates a competitive market where not everyone will secure a job directly related to their degree.
Interview processes are imperfect, and even the best interviewers can misjudge a candidate's potential. The speaker recalls Amazon's interview system, where candidates were scored 1 to 4, forcing interviewers to lean towards "hire" or "don't hire" rather than a neutral middle ground. However, these systems are not perfectly accurate, and an interviewer's perception of a candidate can have a wide margin of error.
The speaker introduces the concept of an "average" developer, noting that many people's perception of average is skewed by their immediate surroundings. He highlights that roughly half of all developers are below average, and even high-earning developers might lack fundamental skills. This observation is crucial because historically, even below-average developers could secure jobs due to high demand and less rigorous hiring practices.
The speaker shares his own experience of getting hired at Twitch, despite not meeting the technical bar. He was offered a contract position because the team liked him, saw his potential, and faced an urgent need for engineers, particularly those with an understanding of media. This demonstrates that in the past, a combination of urgency, likability, and a flawed interview process could lead to opportunities for less competent individuals to learn on the job.
However, this is no longer the case. The job market is now saturated with many competent candidates, including experienced developers who have been laid off. This makes it significantly harder for fresh graduates to compete, as appearing more competent than someone with five years of industry experience is a substantial challenge. The rise of AI further complicates this, as it can make less competent developers appear more skilled, devaluing traditional metrics like GitHub portfolios and project counts.
Given these changes, new developers must focus on two key areas within their control: likability and competence. The question of "how to learn" falls under competence, aiming to become so skilled that one is never a bad hire. Surprisingly, the answer to achieving high competence also involves likability.
The speaker posits that many developers, especially those early in their careers, feel a sense of loneliness because they are often the most skilled among their immediate peers. This "gap" between their own abilities and those around them can lead to frustration, depression, and insecurity. The speaker emphasizes the importance of surrounding oneself with more capable and competent individuals. This can be achieved through physical proximity, like moving to a tech hub, or virtually, by engaging with online communities.
Being in a community where one is not the smartest person in the room provides opportunities for continuous learning and growth. The speaker shares examples of individuals who have leveraged online communities to connect with more experienced developers, leading to significant career advancements and even job opportunities. This highlights that active engagement and genuine interest in a community can be as beneficial as technical skills.
The Dunning-Krueger effect is introduced to explain how early in the learning process, individuals often overestimate their abilities, only to realize the true complexity of a subject as they learn more. To avoid this pitfall and accurately gauge one's competence, it is essential to be surrounded by capable people who can provide a "measuring stick." This allows individuals to understand where they truly stand and identify areas for improvement.
Therefore, likability and competence are intertwined. The actions taken to become more likable and to surround oneself with inspiring individuals also provide the tools needed to measure progress and gain guidance on what to learn.
To effectively learn and grow as a new developer, the speaker advises:
1. **Do what you enjoy in the space and surround yourself with others who do.** A genuine passion for coding is increasingly important, as those who dislike it are unlikely to excel in the current competitive environment.
2. **Ask "why" and "who" questions, not just "how."** Instead of asking AI for solutions, ask it for approaches, reasoning, and hints to encourage deeper understanding. More importantly, when encountering cool projects, focus on the creators: who they are, why they built it, their experiences, and what you have in common. This "lurking" into people's histories and motivations can reveal patterns for success and foster connections.
3. **Express gratitude and appreciation.** A simple, heartfelt message of appreciation to an open-source maintainer or creator can be incredibly impactful and lead to unexpected opportunities. This selfless act of appreciation fosters likability and can create urgency in others, as they realize their work is valued. The speaker shares an anecdote of referring a developer, Basim, for a job at a hot AI startup after being impressed by his two-star GitHub library and reaching out to him. Basim's competence and the speaker's willingness to connect him to the right people led to an incredible career opportunity.
4. **Embrace "T-shaped" development.** While going deep into a specific area, also explore tangential fields. For front-end developers, this means delving into design and API design; for back-end, it's database architecture and front-end bindings. This breadth of knowledge, combined with depth, is crucial.
In a world increasingly filled with AI-generated content and superficial resume padding, the human element—genuine interest, gratitude, and connection—matters more than ever. Following one's excitement and actively engaging with the community will lead to valuable learning, growth, and connections with like-minded individuals. For experienced developers, this also means extending a helping hand to those struggling to enter the field. The world has changed, but human connection and authentic passion remain paramount.