The Effective Engineer, Edmond Lau

Post Tag: bookengineeringcareer

image

Отличная книга. Об этом недвусмысленно свидетельствует размер “полезных советов” в конце статьи.

Эдмонд Лау(Edmond Lau), проработавший в Google, Quora, Facebook и в куче стартапов поменьше, пишет обо всем понемногу. Советы в основном широко известные, так например, в книге Soft Skills by John Z. Sonmez описываются очень похожие методы обучения и управления временем.

Автор, не только дает большое количество рекомендаций, но, самое главное, приводит логическое обоснвание этих самых рекомендаций. Инженер получает почти пошаговую инструкцию - начиная от личного развития, заканчивая управлением команды. При этом, у автора минимум абстрактных рассуждений и максимум полезной информации. Больших трудов стоило внести в список “заметок” так мало.

Заметки:

Optimize for Learning

  1. Study code for core abstractions written by the best engineers at your company.

  2. Write more code. If you feel that programming is your weak point, shift time away from other activities like meetings and product design, and spend more of it building and writing code. Over a decade of research on learning has shown that the more effort you expend when retrieving knowledge from memory, the better you’ll learn and retain those ideas.

  3. Go through any technical, educational material available internally. If your company maintains design documents or holds tech talks, use them as learning opportunities.

  4. Master the programming languages that you use. Read a good book or two on them. Focus on developing a solid grasp of the advanced concepts in that language, and gain familiarity with core language libraries. Make sure that at least one of your languages is a scripting language (e.g., Python or Ruby) that you can use as your Swiss army knife for quick tasks.

  5. Send your code reviews to the harshest critics. Optimize for getting good, thoughtful feedback rather than for lowering the barrier to getting your work checked in. Ask for a more detailed review on those implementations you’re not as confident about. Discuss software designs with your company’s best designers in order to avoid writing great code for a design that doesn’t work well.

  6. Enroll in classes on areas where you want to improve. These could be courses offered on the company campus, at nearby universities, or online through educational initiatives like Coursera, edX, Udemy or Udacity. Online education is exploding;

  7. Participate in design discussions of projects you’re interested in. Don’t wait for an invitation. Ask project leads if they’d mind you being a silent observer or even a participant in a design meeting.

  8. Work on a diversity of projects. If you find yourself always doing similar tasks using similar methods, it’s going to be hard to pick up new skills. Interleaving different projects can teach you what problems are common across projects and what might just be artifacts of your current one. Make sure you’re on a team with at least a few senior engineers whom you can learn from. If you’re not, consider changing projects or teams. This will help increase your learning rate for the remaining 80% of your time.

  9. Learn new programming languages and frameworks. One of the most exciting aspects of working in software is that the technology landscape changes so rapidly. But this also means that if you’re not continuously learning, your skills might get stale and outdated.

  10. Invest in skills that are in high demand. If you’re unsure about what types of skills you should be learning, see what’s being included in job postings you find interesting, or evaluate the current industry trends and demand for skills. For example, as of 2014, 15% of Internet traffic now comes from mobile devices, 26 and global annual smartphone sales are triple that of consumer PCs.

  11. Attend talks, conferences, and meetups. Growing technology companies often hold open tech talks, both to share knowledge and to help recruit new engineers. Google even shares many of its on-campus talks on YouTube.

  12. Build and maintain a strong network of relationships. I used to avoid coffee meetings and meetups with people I didn’t know. But I’ve since learned that the more people you meet, the more you’ll find serendipitous opportunities. Richard Wiseman captures this idea in his book The Luck Factor, when he writes, “Lucky people dramatically increase the possibility of a lucky chance encounter by meeting a large number of people in their daily lives. The more people they meet, the greater opportunity they have of running into someone who could have a positive effect on their lives.”

  13. Follow bloggers who teach.

  14. Write to teach. When you write to teach other people, you gain a deeper understanding of ideas you’re already familiar with and pinpoint the details that you didn’t fully understand. That’s the technique that Physics Nobel Prize winner Richard Feynman used to learn faster. 

  15. Tinker on side projects. Side projects, even ones not related to engineering, provide further opportunities to hone your skills, particularly in areas of interest that you don’t typically engage in at work.

Invest in Iteration Speed

Measure What You Want to Improve

Validate Your Ideas Early and Often

Improve Your Project Estimation Skills

Build Long-Term Value

Minimize Operational Burden

Invest in Your Team’s Growth

comments powered by Disqus