● Can you explain the HTTP request / response cycle?
● To what level of detail?
● What difference does HTTPS / SSL make?
50. HTTP Requests
● Can you name all of the HTTP request types?
● GET, POST, HEAD
● PUT, DELETE, PATCH
● OPTIONS, TRACE, CONNECT
● What are the differences?
● What are they used for?
● Do you write unit tests?
● Does your system have automated integration tests?
● How are your tests run?
52. Unit Tests
● Never program without a safety net
● Does your code do what it is supposed to do?
● Will your code continue to do what it is supposed to do?
● Write unit tests
● Run those tests all the time
53. What is Unit Testing?
● Code that exercises an individual element (unit) of your code
● Provide known inputs
● Look for expected outputs
● “Bottom-up” testing
54. Test Driven Development
● Have you tried Test Driven Development?
● What did you like?
● What didn't you like?
● Will you try it again?
55. TDD Advantages
● Tests are a specification of your program
● If the tests pass, the program is finished
● Know when to finish
56. Behaviour Driven Development
● Let end users define tests in their language
● Simple domain-specific language
● Framework converts user tests to running code
57. Test Automation
● What test automation frameworks do you know?
● What test automation frameworks do you use?
58. Test Coverage
● How good are your tests?
● How much of your code is used in your tests?
● Measure to improve
77. Agile Manifesto
We are uncovering better ways of developing software by doing it and helping
others do it. Through this work we have come to value:
● Individuals and interactions over processes and tools
● Working software over comprehensive documentation
● Customer collaboration over contract negotiation
● Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left
78. Individuals and Interactions
● People are more important than processes
● Development teams know how to organise their work
● Business says what they need
● Development team works out how to achieve that
● Giving people more control and responsibility
79. Working Software
● Documentation is often out of date before it is finished
● Mismatch between business language and technical language
● Business often don't know what they want until they see the options
● Build prototypes and discuss alternatives
80. Customer Collaboration
● Don't just involve users when the project is specified
● Have user representatives as a part of the development team
● Instant response to developer questions
● More involvement leads to more business ownership of project
84. Object Oriented Programming
● Classes define both data (attributes) and behaviour (methods)
● Intelligent variables
● Easy to maintain
● Easy to scale
85. Functional Programming
● Pure functions
○ Take inputs, return values
○ No global variables
● Immutable variables
● Prefer recursion to loops
● Easier to maintain
● Good for asynchronous programming
89. The Business
● What does your company do?
● What does success look like?
● How do they measure success?
● How do you contribute to that success?
90. What Does Your Company Do?
● What service does your company provide?
● Why do customers choose your company?
● What is the USP?
91. Making Money
● What is your company's business plan?
● Where does the money come from?
● Are there multiple sources of income?
● How secure is that income?
● How much profit does the company make?
● How does that compare to your salary?
92. Competitive Marketplace
● Who are your biggest competitors?
● How are you ranked?
● Why do customers choose your company?
● Why do customers choose your competitors?
● What is your company doing to change the balance?
93. Mergers & Acquisitions
● Has your company bought any other companies?
● Might your company buy any other companies?
● What companies might it buy?
● Who owns your company?
● Might they sell it?
94. Stocks & Shares
● Is the company private or public?
● Can you buy shares?
● Is there an employee share scheme?
● What are the shares worth?
● Can you get share options?
97. Career Structure
● What is the hierarchy like?
● Where are you currently?
● Where do you want to be?
● How do you get there?
● Annual reviews
98. Management vs Technical
● Do you want to manage people?
● Team leader
● Development manager
● Help others build a career
● Less time coding
● More politics
99. Management vs Technical
● Do you want to manage systems?
● Technical lead
● Technical architect
● Steer the technical direction of the project
● Less time coding
● More meetings
100. Job Titles
● Job titles in our industry mean very little
● Each company is different
● How senior is a senior developer?
● Flat structures
● Often used as an incentive
● Job spec (and package) is more important
101. Setting Targets
● What do you need to do to get to the next level?
● Specific targets
● "Take responsibility for this subsystem"
● "Lead a project that is estimated to take four weeks"
● Identify training requirements
● Don't forget "soft" training
102. Internal Marketing
● Does the CTO know who you are?
● Does the CEO know who you are?
● Reply to email chains
● Give presentations at company meetings
● Speak to people in the kitchen
103. External Marketing
● How well-know are you outside of your company?
● Write a blog
● Answer questions on forums
● Speak about your work
● Blog about your work
○ Check first
○ Company tech blog
● Blog about your personal projects
● Use your blog posts to answer questions on forums
● Comment on well-known blogs
● Add your blog to aggregators
106. Public Speaking
● Give talks about your projects
● Public speaking isn't as hard as you might think
● Start with a lightning talk
107. Some Public Speaking Secrets
● Some people aren't good at public speaking
● Or, at least, they don't make an effort to improve
● Not hard to be good at it
● Very easy to be better than average
● Watch videos to improve
● Excellent examples of talks
● Interesting subject matter
● Engaging speakers
● Well-designed slides
● Something to aim at
● Good developers are in short supply
● And that isn't going to change in our lifetimes
● Plenty of opportunity to make a difference
● Plenty of opportunity to do well
● Know your industry
● Know your tools
● Keep up to date