<aside> 💡 In fact, while companies may put language about increasing expertise in their engineering levels, the real lens that they use to evaluate that expertise is through increasing scope of ownership, delivery, and impact.
</aside>
Yangshun Tay on LinkedIn: #softwareengineering #buildinpublic #react #javascript | 23 comments
Building a Career in Software: A Comprehensive Guide to…
Engineering is the enterprise of building and applying technology to solve problems, and I find joy and comfort in the observation that whatever the pros or cons of any one project, the world needs people who build things. My definition of growth derives from this observation: if we exist to solve problems, then growth is being able to solve more tougher, and bigger problems. We do so with a vector of skills built over time:
Clarity, testing, documentation, discipline in scope of diffs, code review (have a sense of what could go wrong), have your coding preferences.
Clear messages/emails (others don’t need to ask again), evangelizing our ideas, engaging presentations (make good slides?), writing skills (post-morterm, incident report, performance review), how to run a meeting effectively (send meeting invite in advance, follow-up, know when and where to cut short on others)
Communicating with your manager
Your manager might not know what you are doing. Hence it is imperative that you prioritize communication with your manager. Share what you are working on and your progress to make sure you are aligned on timeline and expectations and avoid last minute surprises. Share your difficulties and blockers so that your manager can help you fight for more time, manpower, or reduced scope of the project.
Communicating within the team
Effective communication is important when working on a project together with other teammates. Making sure that the work is divided among developers with clear boundaries and responsibilities helps to reduce overhead and confusion. Healthy team dynamics can boost productivity and happiness for everyone in the team.
Communicating with other teams
When communicating with product managers, designers and other functional teams, the ability to clarify business requirements can reduce wasted efforts or even lead to better solutions. Even casual catch-ups and coffee chats can open up new opportunities for cross-team collaboration and projects.
Sharing your work
Sharing your project regularly within your team or during organization wide sharing sessions increases awareness of your work. Such visibility and recognition is important if you are looking for promotion to senior software engineer.
Not dropping balls, prioritizing effectively, managing up, have your checklist, maybe something as simple as the following would work.
The macroscopic design of systems.
Identifying dependencies, updating stakeholders, tracking tasks.
At a level appropriate to their position.
Empathy, confidence, stress management, work–life balance.
👉 Developing on each of those dimensions is certainly growth. And when we apply those skills successfully, we enjoy four pleasing and necessary benefits:
Acquiring each of the above is satisfying and practically beneficial. All of the preceding skills can be dissected in great detail, and much of this book does exactly that. I ask you to remember, though, that everything derives from our essential raison d’être as problem-solvers: the world needs problems solved, so companies need engineers who can solve them, so our impact is the foundation of our career progress.
Addy Osmani on LinkedIn: #softwareengineering #programming #growth | 208 comments

https://youtu.be/6uitJq9YkXs?t=51
