Slide 1

Slide 1 text

"what does a software engineer actually do?" Ben Sheldon The Sourcery – Aug 8, 2013

Slide 2

Slide 2 text

Write Code Read Documentation Try something Draw on Experience Google It https://commons.wikimedia.org/wiki/File:Dry_Stone_wall_building.JPG Move on ...a computer program has only one meaning: what it does. ... Its entire meaning is its function. – Ellen Ullman

Slide 3

Slide 3 text

So what does a ____ engineer do? http://sissonlandscapes.com/2011/landscape-design/connect-to-history-with-dry-stone-walls/ http://www.geograph.org.uk/photo/83753

Slide 4

Slide 4 text

Figure out what they’re writing code to do • Project Management Process (e.g. “Agile”) • Breaking down features into “manageable” chunks • Estimating Time & Effort • Managing Technical Debt Be Told Exactly How to Do It Do their own implementation Engineering Sales & Marketing Product Engineering Sales Marketing versus Scoping

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

Manage Technical Debt “Nth times the charm.” “Right now is when you know the least.” • Architectural Decisions (e.g. monolithic, SOA) • Version Control (e.g. Git, CVS, SVN, ) • Logging / Exception Alerts (e.g. Loggly, Airbrake) • Performance Profiling (e.g. New Relic) • Static/Complexity Analysis (e.g. Code Climate) • Prevent regressions (e.g. test coverage) • Pairing and Code Reviews http://jonathanschmock.com/sisyphus-at-the-gym/ Dialogue Dialectic versus

Slide 7

Slide 7 text

Automation Meta Engineering http://xkcd.com/1205/ • DevOps generally • Continuous Integration (& Deployment) • Capturing repetitive processes in code • Events & analytics surfacing • Documentation

Slide 8

Slide 8 text

Writing Code What kinds of challenges did you have working with those libraries/frameworks? Specialization Were there any parts of the project you found really satisfying or wanted to excel at? Scoping & Scheduling Tell me about how your team was organized? How were decisions made and your role? What was the pace like? Technical Debt Did you do TDD or Pair Programming? How did you manage code quality? How did QA and bug reporting happen? Any 3rd party services you used/integrated? Automation Are there any internal tools or processes that you helped build or get adopted by the team? Potential Screening Questions