The discussion emphasizes the importance of setting specific, actionable goals for aspiring software engineers rather than vague aspirations like "becoming an engineer" or "learning React." The speaker argues that goals should be clear deliverables, such as building a specific app, which leads to tangible progress and satisfaction. They highlight that passion and interest in the projects themselves are crucial for enduring the challenges of engineering. By focusing on concrete tasks and allowing interest to guide learning, individuals can achieve broader aspirations more effectively. The talk also contrasts engineering with professions like law, where a direct path is necessary, underscoring the unique, exploratory nature of software development.
Effective Goal Setting in Software Engineering
- Goals should be specific, measurable, and achievable, rather than vague and lofty.
- Common goals like "becoming an engineer" or "learning React" lack clarity and defined endpoints.
- It's essential to break down broad goals into specific deliverables that can be concretely achieved.
"Be an engineer isn't a goal, it's a place you get to at some point but not by driving there."
- Becoming an engineer is a process rather than a direct target; it's reached through a series of specific achievements.
"Learning React isn't a thing that can be measured... I'm at maybe like 60 to 70 percent but I'm pretty good at React."
- Learning React is ongoing; proficiency doesn't equate to completion, making it a challenging goal to measure.
Breaking Down Goals for Achievability
- To make goals achievable, they should be broken down into smaller, actionable tasks.
- For instance, transforming "I want to learn React" into "I want to build an app with React" provides a clearer path.
"Let's say we want to start with I want to be able to build an app with React... First thing we should do is ask yet another question: what type of app do you want to build?"
- By specifying the type of app, the goal becomes more tangible and actionable, guiding the learning process.
"Start from there but what I'm pushing here is take that top level imaginary goal of I want to learn React and ask yourself more questions until you get to a deliverable thing."
- Continuously refine broad goals into specific tasks to create clear deliverables that guide progress.
Contributing to Open Source
- Contributing to open source should be viewed as a result of specific actions and involvement, not just a standalone goal.
- Engage with open source projects by using them, identifying issues, and making improvements where possible.
"You don't contribute to open source by wanting to do it... If there's a package you're using and the document or the docs for it have a typo... do it."
- Active participation in open source projects begins with using them and identifying areas for contribution, leading to meaningful involvement.
"The contributing to open source isn't the goal that you start with; this is the place you end up."
- Open source contributions should emerge from ongoing engagement and problem-solving within the community.
Building Goals Around Problem Solving
- Goals should revolve around solving specific problems, which makes achieving them more straightforward.
- Define what success looks like for each goal to know when it has been achieved.
"Building goals around specific problems you can solve will make delivering on them significantly easier."
- Focusing on problem-solving as a goal framework simplifies the path to success by providing clear objectives.
"Set the specific goal of solving the problem in that project that you're already using."
- Align goals with practical problem-solving in existing projects to ensure they are grounded and achievable.
Meaningful Contributions to Open Source
- Meaningful contributions arise from genuine interest and usage of the project rather than arbitrary selections.
- Hacktoberfest is criticized for promoting superficial contributions by encouraging tagging of repositories as beginner-friendly.
- Effective goal setting involves specific, actionable steps rather than vague endpoints like "be an engineer" or "contribute to open source."
"The most meaningful contributions come from people who are using the thing and are interested in the thing."
- Genuine interest and usage of a project lead to meaningful contributions.
"Hacktober gets this particularly poorly where they expect you to tag repos as beginner friendly and hacktoberfest ready."
- Hacktoberfest's approach is critiqued for encouraging superficial contributions without genuine project interest.
Goal Setting for Aspiring Developers
- Setting specific, actionable goals is essential for progress in development.
- Vague goals like "be an engineer" or "learn React" need to be broken down into smaller, achievable tasks.
- Specific goals provide direction and focus, such as building a chat server with Deno or completing a Deno tutorial.
"The best way to learn React is to build things with it."
- Practical application through building is the most effective way to learn.
"A better first goal could be finish deno or go through deno tutorial."
- Specific, manageable goals like completing a tutorial provide a clear path forward.
Path to Becoming an Engineer
- The journey to becoming an engineer involves setting specific, interest-driven goals rather than pursuing engineering solely for financial gain.
- Passion for engineering and enjoyment in building projects are emphasized over monetary motivations.
- The speaker distinguishes between those motivated by passion versus those seeking financial gain, suggesting different paths for each.
"If your goal is just to make money in the field and not enjoy yourself, my stream is not useful to you."
- The speaker emphasizes the importance of passion over financial motivation for those seeking meaningful engagement in engineering.
"If your goal is to be a passionate engineer that builds cool [__], start by picking things to build and work backwards from there."
- Passionate engineering is driven by the desire to build and create, starting with specific projects.
Steps for New Developers
- New developers should set lower-level goals aligned with their interests to guide their learning journey.
- Building specific projects, like a Twitch clone, can serve as practical learning experiences.
- Smaller aspirations, such as learning React, should be part of a larger goal of becoming an engineer.
"Let's pick a first goal which is build a twitch clone."
- Building a specific project provides a focused, practical learning experience for new developers.
"You have an aspiration that's slightly smaller of learning React but you're a new dev you have no idea what you're doing."
- Smaller goals within a larger aspiration help new developers navigate their learning path.
The Importance of Goals Over Aspirations in Engineering
- Engineering aspirations, such as "becoming an engineer" or "learning React," are too vague and not effective as direct targets.
- Goals should be specific, deliverable, and lead towards aspirations, but they should not be confused with aspirations themselves.
- Immediate, concrete goals are more effective drivers than broad aspirations, which are often too vague to aim for directly.
"Engineers treat aspirations like goals. Aspirations are not goals. Aspirations are not a thing you should be working towards. Goals are the things you should be working towards."
- This quote emphasizes the distinction between aspirations and goals, highlighting that goals are actionable and should be the focus of efforts, unlike vague aspirations.
"Aspirations in engineering are way too vague to target directly."
- Aspirations lack the specificity needed for actionable steps, making them ineffective as direct targets.
Learning Through Failure and Real-World Applications
- Practical experience and learning from failures contribute significantly to becoming a successful engineer.
- Real-world projects, even when they don't succeed, provide valuable learning experiences that can be discussed meaningfully in interviews.
- Handling and reasoning about failures are critical indicators of a successful engineer.
"Talking about failures in interviews is phenomenal. One of the biggest signals I have for a successful engineer is not how many huge things they've built successfully; it's how they handle failure."
- This quote underscores the importance of learning from failures and being able to articulate those experiences in professional settings.
"Even if every single one of these parts you just you outright did not succeed, if you show up for the interview and you talk about those things in a meaningful way, that sounds like you're figuring this stuff out."
- Discussing failures in a constructive manner can demonstrate problem-solving abilities and resilience to potential employers.
The Role of Specific and Achievable Goals
- Goals should have clear, deliverable ends, and ideally, they should contribute to broader aspirations.
- Specific goals, such as building a project or solving a particular problem, provide a clear path and motivation.
- Arbitrary or vague goals, such as improving file structure, are less effective and may lead to aimlessness.
"Goals should have deliverable ends, and ideally those goals get you closer to your aspirations, but if you have immediate goals that don't, don't be afraid to take them."
- This quote highlights the importance of setting specific goals that lead to tangible outcomes, even if they do not directly align with broader aspirations.
"Picking deliverables instead of arbitrary like internalized potential places to be will help a ton."
- Choosing clear, actionable deliverables over vague aspirations leads to more effective progress and development.
Learning Through Building and Practical Application
- Learning by doing, such as building projects or solving real-world problems, is a more effective way to gain skills and knowledge.
- Using tools and technologies in practical applications helps to solidify understanding and competence.
"You don't learn my stack; you use it. You build something with it, and then you come to us with questions, and we answer the questions."
- This quote emphasizes the importance of practical application in learning, suggesting that hands-on experience is a more effective learning method.
"He taught himself how to code with the very specific goal of making his website for his charity and the specific things they needed to do."
- Learning with a specific, practical goal in mind can lead to more effective and focused skill acquisition.
The Pitfalls of Vague Aspirations in Engineering
- Setting aspirations as goals can lead to frustration and aimlessness due to their vague nature.
- Engineers should focus on specific, actionable goals rather than broad, undefined aspirations.
"If any one of these things is your specific goal, you're going to be stuck in an aimless place pretty often because it's impossible to know when you've become an engineer."
- This quote highlights the difficulty of using vague aspirations as goals, as they lack clear endpoints and can lead to aimlessness.
"There are plenty of senior engineers, very, very talented, like established people, who still suck at picking goals."
- Even experienced engineers can struggle with setting effective goals, emphasizing the importance of focusing on specific, actionable objectives.
The Importance of Choosing the Right Destination
- The journey of achieving a goal is often filled with challenges, but if the end goal is something you are passionate about, it can make the hardships worthwhile.
- Picking a destination you are excited and proud of can help you endure the difficulties along the way.
"Once you've resolved them, if the thing on the other side is something you're excited about, something you're building towards, something you're proud of, then all the suck actually reinforces how great that thing is."
- This quote emphasizes that the satisfaction of reaching a meaningful goal can outweigh the struggles faced during the journey.
Passion as a Driving Force
- Passion should not be the sole reliance for success in a single project, but it is crucial for overcoming challenges.
- Feeding your passion can help navigate through difficult times, even if it means changing directions.
"Passion isn't a single driver that gets you wherever you want to go. It's a very important force that you can feed into that helps you get through the shitty hard parts of engineering."
- The quote highlights the role of passion as a supportive force rather than the only factor for success.
The Risks of a Passionless Path
- Pursuing a goal without passion can lead to burnout or confusion once the goal is achieved.
- Setting smaller, passion-driven goals can provide a sense of direction and fulfillment.
"What's going to happen there is either you burn out before you get there, or even worse, you get there and you have no idea what to do with yourself once you're there."
- This quote warns about the potential emptiness of achieving a goal without passion or interest.
The Unique Nature of Software Engineering
- Unlike other fields, software engineering allows for indirect paths to success, encouraging creativity and innovation.
- The field should be embraced for its unique opportunities and not be compared to more rigid professions like law.
"Engineering and software in particular is a very special field where this indirect path is much more effective than a direct one."
- The quote underscores the flexibility and creative potential inherent in software engineering.
Goal Setting in Engineering
- Engineers often struggle with setting effective goals, which can hinder their progress.
- Adopting a mindset similar to that used in skateboarding—focusing on specific, incremental achievements—can lead to success in engineering.
"My goals in skateboarding weren't be a skateboarder or learn every trick or get good at stairs. My goals in skateboarding were land this trick or kick flip this stair set."
- This quote illustrates the effectiveness of setting specific, achievable goals to foster growth and improvement.