Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Talent42 2014 Sam Wholley -


Published on

2014 Talent42 Presentation

Published in: Recruiting & HR, Technology
  • Hello! Get Your Professional Job-Winning Resume Here - Check our website!
    Are you sure you want to  Yes  No
    Your message goes here

Talent42 2014 Sam Wholley -

  1. 1. Confidential Key Software Engineering Concepts for Recruiters Sam Wholley Riviera Partners
  2. 2. 2 1 2 3 Software Architecture What’s Hot? Agenda 4 How to Widen Your Candidate Net Confidential Code, Data, & ‘The Cloud’
  3. 3. Confidential 1
  4. 4. What is Architecture? 6 Build it for extensibility and ease of maintenance: Confidential Be Agile
  5. 5. What is Agile Development? 7 • Involve users early, design the ‘grand requirements’. • Split into small units (Scrum). • Develop a unit, and unit test it. • User-test it (ask “is this what you want?”) often. • Iterate, iterate, iterate. Confidential Agile development: moving fast, moving often: Lather Rinse Repeat
  6. 6. N-Tier Architecture 8 • Design & layout – images and text. • UI / UX concepts – a nice interface. • HTML,CSS – the actual implementation. • JavaScript – automation, animation, and validation. Confidential The front end (where it’s made to look good): People use the application here.
  7. 7. N-Tier Architecture 9 Confidential AJAX: you can actively search for stuff, typically in cached memory or a live database query: • Google uses AJAX/jQuery for type-ahead recommendations. • AJAX can power/position design elements as well. Other front end terms you hear:
  8. 8. Javascript Implementations 10 Confidential Front-Endish Handlebars, Mustache, Aural, Kraken, Reactive Coffee, Parrot; haml-js, Angular, Backbone, Ember, Spine, Stapes. Middle-Tierish Node.js, Express, Refactor, Sails, Backbone, Vert.x, OPA, CommonJs. Back-Endish Ember.js Persistence, Backend.js, Persistence.js. Some of the more common JavaScript frameworks:
  9. 9. N-Tier Architecture 11 Confidential • Social Media: ‘like’ counts, posts, connections, are calculated. • APIs: application rules are enforced. • Banking: account inquiry, debit == credit, a summary is generated. • Commerce: stream a movie, your credit card gets charged. The middle tier (typically where decisions are made): Other APIs and integration points interface here.
  10. 10. N-Tier Architecture 12 Confidential Some methodologies, frameworks, and languages used: • Custom code – all languages apply, it’s the architecture that matters. • Services-Oriented Architecture (SOA). • Message queuing, caching (most times), ‘software infrastructure.’ The middle tier (typically where decisions are made): Other APIs and integration points interface here.
  11. 11. N-Tier Architecture 13 Some terms you’ll hear: • Redis, memcache, Varnish: Scaling (in-memory caching.) • Django, JBoss, Rails: User / session management. • RESTful services: application doesn’t depend on sessions. • JSON – a way to pass data cleanly and clearly. Confidential The middle tier (typically where decisions are made): Other APIs and integration points interface here.
  12. 12. N-Tier Architecture 14 Some methodologies, frameworks, and languages used: • Hibernate, iBATIS, Objectstore: Persistence. • Oracle, SQL, MySql, PostgreSQL, MongoDB: Storage. • BSON, Avro, XML: Storage, Transport, Serialization. Confidential Stuff is stored here The back end:
  13. 13. N-Tier Architecture 15 Other terms you’ll hear: • Hadoop, Cassandra, MapR: NoSQL storage, big data aggregation. • MapReduce: the way NoSQL deals with DB queries. • “Big Data” ≠ Data Warehouse or Datamart (“Lots of Data”.) Confidential The back end: Stuff is stored here
  14. 14. Confidential 2
  15. 15. 17 Software is core to most modern things, so architecture and scalability matters a great deal. A Mercedes Benz S-Class has about 100 million lines of code in the car’s onboard control system. A Boeing 737 has about 20 million lines. Confidential
  16. 16. Code and Compilation 18 Source Code Intermediate Language (IL) Machine Code function Add(int num1, int num2) { return num1 + num2; } moveq.w #0, d1 loop: tst.w d0 beq end move.w d0, (a5,d1) subq.w #1, d0 addq.w #2, d1 braloop end: rts 01100110 01110101 01101110 01100011 01110100 01101001 01101111 01101110 00100000 01001000 01100101 01101100 01101100 01101111 01010111 01101111 01110010 01101100 01100100 00100000 00101000 01110011 01110100 01110010 01101001 01101110 01100111 00100000 01001101 01100101 01110011 01110011 01100001 01100111 01100101 00101001 00100000 01111011 00001101 00001010 00001001 01100001 01101100 01100101 01110010 01110100 00101000 01001101 01100101 01110011 01110011 01100001 01100111 01100101 00101001 00111011 00001101 00001010 01111101 00001101 00001010 Confidential
  17. 17. Code Implementation 19 Compiled The entire codebase is translated to the target machine’s ‘language’ directly, as the program is written, and executed from there. Interpreted The codebase is translated and executed as the program is run. Code can be implemented in different ways. The most common are: Confidential
  18. 18. Code Implementation 20 When finished writing the code, it’s checked, built, and turned into binary (1s and 0s) for the computer to run. • High load speed and fast execution; • You can add various optimizations during compile process to increase run speed. • Compilers are specific to the hardware platform; • Compiled code requires recompilation to change. Confidential Compiled Code: Typical Examples: C, C++, Java (can be), Visual Basic, Haskell
  19. 19. Types of Codebases 21 Confidential The code exists in flexible files and, when the file is executed, the text is compiled and run. • Just-In-Time (JIT) compiled – compiled when executed. • Development is flexible – source code is ‘live’, easy to edit. • Are typically very elastic (e.g.: allow dynamic typing) to make prototyping quick. • Warrant full testing coverage; static code analysis recommended. Interpreted code: Typical Examples: Ruby, Python, JavaScript, PHP.
  20. 20. Confidential 22
  21. 21. Types of Codebases 23 Confidential The code is checked, built, and turned into bytecode with metadata for a Just-In-Time compiler to compile and run. • Can be compiled or interpreted, but have metadata <data about the data> that helps to secure, define, accelerate, and ‘manage’ the code (both before and after compilation.) • Have a framework that helps to manage the code’s interaction with the broader platform. • In essence, creates a sandbox and runs the code in it. Managed codebase: Typical Examples: C# (.Net), Java are often deployed in a managed fashion.
  22. 22. Types of Codebases 24 ALL CODE becomes compiled at some point before it is run. The question is: at which point? Run-timeWrite-time Compiled Managed Interpreted Confidential
  23. 23. Programming Paradigms 25 Confidential Object-Oriented Programming • Organizing programs into “things”; these “things” have properties, and actions those “things” can take. • This is compared with a more simplistic: input -> stuff happens -> output logic model. • It also follows how the human brain works (“is a” and “has a”.)
  24. 24. Programming Paradigms 26 Functional Programming Defining functions that do specific things and linking them all together, where the outputs of one feed the inputs of the next function, the behavior is determined by the data on the initial input and not on the order in which the functions are declared. Laying out a set of fixed instructions with each instruction executed in the order they are declared in, starting with the first and ending with the last. Confidential Procedural Programming
  25. 25. Confidential
  26. 26. What is the cloud? 29 Confidential Instead of having servers on premise, the “servers” are stored somewhere else: • Hosted or collocated environment (a Private Cloud.) • Amazon: AWS. • Google Cloud. • Microsoft Azure. • VMware Cloud. • Rackspace: OpenStack. Basically, it’s just where all the ‘stuff’ is stored.
  27. 27. Why does this matter? 30 SaaS or Cloud Operations: DevOps, continuous integration, release management tools integrated with cloud platforms instead of traditional physical servers. Servers (owned or managed services), networking infrastructure, hardware, uptime, “IT”. Confidential Technical Operations:
  28. 28. Confidential 3
  29. 29. What’s hottest? 32 Confidential 1. Ruby / Rails 2. Mobile: iOS and Android 3. Python 4. Java 1. Big Data 2. Data Science 3. DevOps 4. Cloud Architecture Competencies & Disciplines Languages
  30. 30. Confidential 4
  31. 31. 34 Confidential So, what’s the RIGHT answer? It depends… Widening the net…
  32. 32. Widening the net… 35 Any good engineer should be able to learn, read, and understand any language or framework, given a reasonable opportunity to learn its intricacies. But, there are some VERY GENERAL similarities that could make it easier for them to jump in. Confidential
  33. 33. Widening the net… 36 Confidential • C and C++ syntax are 99.9% identical. › It’s mostly the programming paradigm that’s different. › Test the candidate’s knowledge thoroughly. • JSP, PHP, and Ruby syntax can be similar. • Python and Perl syntax can be similar. • C#, Java, and C++ syntax can be similar. • Pythonic thinking is roughly similar to ‘Rubyist’ thinking (if done right.) For example:
  34. 34. Widening the net… 37 Confidential • A good, solid understanding of object-oriented analysis & design will, generally, port to any language. • Holistic engineering thinkers are ‘utility players.’
  35. 35. Widening the net… 38 Confidential • The size and stage of the company. • The platform and target language. • The engineer’s role. • The strengths of the team. • The reason for the hire. Consider the environment.
  36. 36. Confidential
  37. 37. Appendix 40 Confidential The following slides include some questions and approaches to discuss with your technical hiring managers. ? ?
  38. 38. Some questions… 41 Confidential • Scalability: “Here’s where we’re seeing a bottleneck - what could be some root causes?” • Refactoring: “Here’s our approach, what do you think? Think of an actual problem you’re trying to solve today (that you DON’T know the answer to)? +
  39. 39. Some questions… 42 Confidential Think of an actual problem you’re trying to solve today (that you DON’T know the answer to)? • Design Patterns: “Here’s how we are thinking about architecting this service/app/component. What would you do differently, and why?” • Database sharding / partitioning: “From what you can see, what problems might we run into with another 5 million users? With internationalization/localization?”
  40. 40. Some questions… 43 Confidential What is an actual problem you HAVE solved (that you DO know the answer to)? • “Here are the symptoms of something that tripped us up: what do you think happened?” • What can we do to prevent this going forward?
  41. 41. Some questions… 44 Confidential What new products are in development (that you can share), and how would they think about architecting them? • Talk about something specific to your company’s sector and see how they react to it. • You can ask them about what they have not seen in that sector that they would LIKE to see, and how they would build it. Walk through your architecture, and ask how they would adapt this component to your existing environment.
  42. 42. Some questions… 45 Confidential What is the worst production coding / development mistake you’ve ever made? How did you fix it? • Always follow up with: “what did you do to make sure it didn't’t happen again.”
  43. 43. Some questions… 46 Confidential • Technical interview questions should also look at how broadly people think about routine tasks. • For example: read all files in a folder, and print the sum of the ASCII values of all characters in the files. • Key Observations: › File I/O, buffers, exceptions. › General knowledge of characters and escape codes. › It’s not going to be perfect, or even compile… You do have to ask technical questions.
  44. 44. Some questions… 47 Confidential • Technical interview questions shouldn’t assume a specific level of social or cultural knowledge (e.g.: “Madden 2013”, or “rewrite Tinder in Erlang.”) You do have to ask technical questions. ? ?X X X
  45. 45. Some questions… 48 Confidential You do have to ask technical questions. Talk about Object-Oriented Programming concepts: • Ask them to explain polymorphism and inheritance, what the difference is, and what considerations you have to make when designing reusable, extensible classes. • Discuss what Reflection is good for, and when - and when not – to use it. (C++ candidates may use templating).
  46. 46. Some questions… 49 Confidential You do have to ask technical questions. Talk about Design Patterns: • Walk through some architectural choices you’ve had to make, and what the tradeoffs are. • Push in just enough to have confidence that they know what questions to ask.
  47. 47. Some questions… 50 Confidential You do have to ask technical questions. • Give them a reasonably lengthy code sample with multiple bugs – not language-specific syntax errors, but bugs in logic and overall program flow. Ask them to point out what the issues are, and what they would do to fix them. • Sometimes the overtly simple things might elude more experienced candidates – if you point out a specific issue like that, don’t give them the answer but push in on what the effect is. • The issues should be in different areas of the program to ensure they are looking at the program as a whole (e.g.: efficient use of memory, effective naming conventions, type safety, etc.) Many will not see all of them, but the key is to see how they react.
  48. 48. Some questions… 51 Confidential Ask them to explain, at a high level, the key concepts that you are using and ask about pros and cons: • For example: RESTful services: › Pros: easier API for mobile, maps to HTTP protocol standards, manages state well, simple and clean architecture. › Cons: can be easy to expose underlying architecture insecurely if not done right (like C), SOAP can be just so darned easy to hack together… • Based on what you’re looking for, ask them three or four – they won’t nail each of them, but they need to get the majority right – and know where to go to get the answer.
  49. 49. Some questions… 52 Confidential What language, framework, methodology have you learned most recently, and why? How did you do it?
  50. 50. The point… 53 Confidential You want great general engineering athletes, not (necessarily) superstar position players, for most roles. Unless you NEED the superstar position player. + + +