cancel
Showing results for 
Search instead for 
Did you mean: 

Continuous Learning as a Developer

Magento Master

On Wednesday, as the final session of Imagine, Magento hosted a DevExchange.
At round tables set up throughout a large conference room, developers discussed topics that were mostly collected in advance in the community forums.

 

One of the topics was "Learning, training and staying up to date as a developer".

 

If you are a developer, you are probably familiar with feeling overwhelmed by the number of books to read, videos of talks to watch, tools and frameworks and languages to try out, and conferences and meetups to attend. Based on the interest in the topic, it seems I'm not alone.

 

Thanks to all 15 participants, the experiences, ideas and thoughts we shared gave me insight and inspiration!

 

We started the discussion with a round of introductions and an opening question "What do I need to be able to learn?".


After that we shared thoughts and experiences based on other questions, like:

 

  • "What tools or resources have successfully helped me learn?"
  • "What quotes or rules do I go by when learning?"
  • "How can learning in a team be encouraged?"
  • "How do I stay motivated and keep learning fun for me?"

 

I've tried to sort everything that was said into sections. Some items fit into multiple sections. In such cases, I put the item into the section where it was mentioned. I haven't recorded who said what (apologies), so I just want to stress that credit for almost all of these thoughts does not belong to me.

 

Here are the insights and inspirations I gathered:

 

Supportive preconditions for learning:

 

  • Being rested (i.e., not tired)
  • Feeling motivated
  • Other people to bounce thoughts off
  • Focus (i.e., removing distractions)
  • Being surrounded by people who know
  • Discipline and a plan
  • Assuming to never be done
  • Being selective

 

Tools and techniques that have helped learning:

 

  • Daily or weekly scheduled time to work on the list of things to learn
  • A debugger and some time
  • Online courses
  • Traditional classroom training
  • Mentoring
  • Preparing a talk on a topic for a meetup, conference
  • Pair programming when the task is not mechanical
  • Two (n) hours a week dedicated to working on technical debt.
  • Building something real that is used
  • Learning a concept in a non-familiar context (e.g., learning about composition and dependency injection in Java instead of PHP)
  • Keeping the mind fresh by going out for a run
  • Buddy system: someone to trade knowledge with (e.g., frontend dev and backend dev teach each other their expertise)

 

Teaching or knowledge sharing:

 

How to facilitate learning in a team:

 

  • Juniors review code of seniors
  • n:n code review (all PRs are reviewed by everyone).
  • Delegating topics to learn and then having the person share with the others in the team
  • Company internal barcamps, deep dives, and book clubs
  • Instead of only using example based teaching, teach a structured approach to development such as covered in the book "how to design programs" (works for all learning styles, leaves no one behind)
  • Teaching 1 on 1 is harder than teaching 1 on 2 (different perspectives, competition)
  • Giving permission to make mistakes publicly

 

How to choose what to learn?

 

  • Select different layers of the stack (e.g., as a web developer, instead of learning more about PHP and JS, learn about design patterns, protocols, web servers, system level calls...)
  • Learning more high-level concepts and principles that apply across multiple frameworks or tools have a longer shelf life

 

Tools and resources:

 

 

Quotes, guiding principles”

 

  • Don't let perfect get in the way of good enough
  • Accept we can't learn everything
  • Accept that others can help
  • Pulling at a blade of grass doesn't make it grow faster
  • Jack of all trades, master of one
  • Passing knowledge and wisdom makes one replaceable, but also promotable
  • Take the charge, look ahead, leave no one behind

 

Keeping learning fun and staying motivated:

 

  • Learning to pass it on
  • Taking a break, doing something else, keeping it fresh
  • Discipline, setting a strict deadline
  • Working towards getting mandatory credentials (i.e., required certifications)
  • Publicly announcing a deliverable, social pressure keeps you accountable
  • Competition
  • Checkboxes (i.e., completing lists)
  • Set goals, track progress, celebrate

 

Thanks to Sherrie Rohde and everyone else at Magento for organizing and hosting the DevExchange. It's a great format that I hope to see more often in future!

5 Comments
M2 Certified

Thanks for sharing these notes! Unlike many professions that require continuing education (medical, law, insurance, etc), most development jobs do not, and it's often up to the developer to drive forward their own education. The barrier to entry of becoming a devoloper is low, but that also means that we need to continue to increase our skills and experience in order to remain marketable in a market that will likely increase in competitiveness over the coming decades.

 

We have developers applying at Classy Llama who have been working in COBAL of the past 30 years, but they've not spent any time improving their skills and so COBAL is all they know. That makes those individuals difficult to bring on to the team, as they're unfamiliar with many modern development concepts.

I think that one of the best ways, not only for developers but for many other professionals in the online field, is to join communities and forums like this one, because here you can learn so many things and expand your network of professional contacts. I've been having lots of lucky in FB groups lately, so many like-minded people and tons of info you won't find anywhere else.

Magento Team

One of the best ways I find to learn stuff is to make stuff. I can't stay focused in a studying setting, where I'm just ploughing through books or lectures and working on the rote exercises they provide. I can be super-motivated to study, and work hard at it and ace the sample questions, but unless I'm making a thing, building something I care about, then I can't apply the knowledge and it flows out of my head just as fast as it flows in.

Senior Member
I totally with @dewimorgan, I even forgot what I learnt if I don't use it often. Here is the list I follow on GitHub https://github.com/DavidLambauer/awesome-magento2

I agree with @dewimorgan, because the best way to learn is by doing stuff, by taking it to practice and learning from your mistakes.