Skip to content

Can we improve ? Observations from a discussion with a Google Engineer #95

@mikejeuga

Description

@mikejeuga

During our last London workshop I have spent some time discussing with a Google engineer on something that they also found odd at first.
At Google, Interns tend to perform better than apprentices at the company. The engineer thought about the experience of bringing in Makers apprentices.
The facts are the following. The intern pool comes rarely from coding bootcamps and generally via universities but not necessarily from computer science degrees.
Apprentices is open to a lot of different avenues including bootcamps and Google London has had a partnership with Makers Academy among others.

The engineer didn't seem to be aware of the Makers curriculum but notice the gap in performance without really (at first) reason about the why.

Observations

  • Interns tend to do much better in the presence of the undefined and unclear.

  • Apprentices tend to need a lot more guidance to get going and do less well when specifications are unclear.

    • Knowing the Makers curriculum a little bit and how bootcamps operate, they heavily focus on teaching certain tools and power through these very early. Be it Git, a programming language, a relational database and maybe a specific cloud provider suite of product.
    • The belief from the engineer is that what is being seen is very entry little in terms of the depth of knowledge. A bootcamp would prioritise familiarity with specific tools, this gets us close to the main topic.
    • University students come with a different approach since universities would not hesitate to use less fashionable programming language, IDE, operating systems and even version control systems at times.

Key takeaways

  • Bootcamp grad arrive with less familiarities with the following:

    • Problem solving:

      When it comes to taking a problem and defining it and getting to a problem definition and formulating a solution, apprentices tend to struggle a lot more because what they learn is to use the tool and a lot less to focus on the problem itself. They have no awareness that they can even solve the problem on a piece of paper or a whiteboard. They jump straight to their code editor and tend to think that the solution is to be found in the technology they use and not in their head.

    • Working in the abstract

      Apprentices struggle a lot more with going from high level concept to specific implementation and vice versa. Even when an intern doesn't come from computer science, they perform a lot better at that. Navigating from specific to conceptual and from principal to implementation and back is something bootcamp grads simply tend to not learn much.

      This shows in a couple of key things that Google does.

      1. Google does not use industry standard technologies outside of programming languages and even for these, they use specific flavours. Which makes onboarding a little trickier and understanding a lot longer when you heavily focused on using a set of tools but not understanding the underlying drivers, philosophy, concept of the tech used.

      2. To problem solve at Google, one needs a certain basic level of understanding of data structures and algorithms but more importantly how and when to use them. Apprentices struggle with understanding the how, when, why and what of key data structures and sometimes need to get up to speed with them because of lack of focus on that before joining.

      3. The previous point highlights a difficulty using abstract concepts and using them to build real products. Doing the same to solve coding problem is also a problem. Being able to take a problem and modelling into a set of data structures that make the problem easier to reason about. The ability to work in the abstract is a lot different for people coming from each camp.

      4. The focus on business and visual problems to solve at bootcamp. Apprentices can struggle when the domain is not just about hitting an endpoint and rendering the data on a UI. If the problem requires more systems thinking, they tend to need a lot of time to understand certain concepts.

      5. Issues with numbers, data analysis and data driven feedback. Google is a data company and the majority of decisions are made using data. Doing low level math, stats to drive a decision or understanding a situation is useful for everyone. Apprentices seem to sometime run away from that reality.

Potential solutions

  • The previous skills come from learning and failing a little more but mainly from focusing on problem solving and modeling regardless of the programming language and other tech. The more problem solving, the more the ability to abstract and model will come.
  • In workshop we could focus on that by having in a curriculum a consistent set of problems from codewars that student would go through and solve without the computer first. Or at least without thinking in terms of programming language constructs (they should avoid talking about loops, functions, variables and if statement) until the problem is solved
  • Going progressively from very little need for abstraction to a decent level of that in the problem solving.
  • Unfortunately focus on data structures and algo curriculum to integrate in the above scheme.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions