7. 1. I know where I’m going with my career
2. I’m competent in the relevant programming language
3. I’ve achieved a relevant qualification
4. I’ve achieved good grades
5. I’m strongly opinionated about “good” and “bad” code
6. I can communicate an idea clearly
7. I can learn new concepts
8. I can work well in a team
9. I can independently write amazing code
14. MYTH #1
Being a good coder means
being good at a programming language
15. • Accurately transform real-world ideas
and constraints into a language a
computer can understand
• Factor code to be highly readable and
maintainable so changes can be easily
made and bugs easily located
16. I can work well in a team
I can learn new concepts
I can communicate an idea clearly
I’ve achieved good grades
I can independently write amazing code
I’m competent in the relevant programming language
I’ve achieved a relevant qualification
I’m strongly opinionated about “good” and “bad” code
I know where I’m going with my career
27. # Written by Nick Johnstone (@widdnz)
import sys
import string
NUMBER = sys.argv[1]
ALPHABET = string.ascii_lowercase
NUMBERS = '22233344455566677778889999'
WORD_LIST_PATH = '/usr/share/dict/words'
WORD_TO_NUMBER = str.maketrans(ALPHABET, NUMBERS)
def words_matching_phone_number(word_list, number):
def matches_number(word):
return word.translate(WORD_TO_NUMBER) == number
words_lower_and_stripped = (word.lower().strip() for word in word_list)
return (word for word in words_lower_and_stripped if matches_number(word))
with open(WORD_LIST_PATH, 'r') as word_list:
print('n'.join(words_matching_phone_number(word_list, NUMBER)))
31. // Written by the Powershop mobile dev team
import Foundation
func loadDictionary() throws -> [String] {
do {
let path = "/usr/share/dict/words"
let fileContents = try NSString(
contentsOfFile: path,
encoding: NSUTF8StringEncoding)
words = fileContents
.lowercaseString
.componentsSeparatedByString("n")
return words
}
}
func wordToNumber(word: String) -> String {
let letters: [String] =
Array("abcdefghijklmnopqrstuvwxyz".characters)
let numbers: [Int] = [2, 2, 2, 3, 3, 3, 4, 4, 4, 5,
5, 5, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9]
for i in 0..<letters.count {
word = word
.stringByReplacingOccurrencesOfString(
letters[i], withString: String(numbers[i]))
}
return word
}
func findMatchingNumbers(
targetNumber: String, words: [String]) -> [String] {
filteredWords = words.filter { (word) -> Bool in
let number = wordToNumber(word)
return number == targetNumber
}
return filteredWords
}
if let number = Process.arguments.first {
do {
let words = try loadDictionary()
let matches = findMatchingNumbers(number, words)
for word in matches {
print(word)
}
} catch {
print("An error occurred loading the dictionary.")
}
}
41. Javascript
10%
HTML/CSS
35%
Server coding
15%
WEB DEVELOPER
• Shipping content-based websites
• Generally small contracts
• Often uses a platform
(Drupal, Wordpress, SilverStripe)
• 45% HTML, CSS, Javascript
• 15% back-end coding (PHP?)
• Some design skills a plus
43. Javascript
40%
HTML/CSS
20%
FRONT-END DEVELOPER
• Excellent user experience
• Probably web
• Working with back-end devs
• Javascript for consuming APIs
• … or views of a monolithic app
in C#, Ruby, Python
• Technology immature compared
to back-end == challenging
44. FRONT-END DEVELOPER
Code mgmt 101 22 March
Javascript 101 14 April
JS masterclass 10 May
Testing 101 31 March
CSS 101 7 April
Testing masterclass 3 May
Devops 101 12 April
TDD 5 May
46. SOFTWARE DEVELOPER
Code mgmt 101 22 March
Javascript 101 14 April
Database 101 5 April
Testing 101 31 March
.NET 12 May
Ruby 23 May
CSS 101 7 April
JS masterclass 10 May
Testing masterclass 3 May
TDD 5 May
Devops 101 12 April
Devops masterclass 19 May
47. Native code
60%
MOBILE DEVELOPER
NATIVE
• Excellent user experience
• Objective C / Swift or Java
• Standalone (rare)
• Integrated: working with
software developers to build
and consume their API
• Working with designers
49. MOBILE DEVELOPER
Code mgmt 101 22 March
Testing 101 31 March
Android masterclass 19 July
iOS masterclass 21 July
Javascript 101 14 April
Testing masterclass 3 May
Database 101 5 April
TDD 5 May
50. Shell
15%
Scripting
45%
DEVOPS ENGINEER
• Supporting the delivery team
• Automated server setup
• Automated deploys
• Monitoring production
• Build/QA environments
• Database tuning
• Productivity tools for the devs
51. DEVOPS ENGINEER
Devops 101 12 April
Devops masterclass 19 May
Code mgmt 101 22 March
Testing 101 31 March
Ruby 23 May
Database 101 5 April
Git masterclass 21 April
52. • Listening to, sharing and debating ideas
• Code review
• Automated tests
• Meeting with stakeholders and your team
• Teaching others what you know
• Standup, retro, sprint planning, backlog grooming, …
EVERY DEVELOPER JOB
THE MISSING 40%
61. PREPARE
• Check the resources page
https://recruit.summeroftech.co.nz/resources
• Install any required packages the day before
• Start it up and make sure it goes
• Ask on Slack if you’re having trouble
62. GO
• Attend as many as you can
• 101 bootcamps are inspirational
• Go to masterclasses if you have 101 knowledge
• Prioritise broad over deep
63. DURING
• Participate in Slack backchannel
• Write down three things you want to take away
• Chat with the presenter afterwards
64.
65. AFTER
• Review the “three things” two days later
• … and two weeks later
• Explore what you’ve learned
• Ask questions on Slack
• Amazeballs: teach someone what you learned
66.
67. BUSTED
University prepares you for your working career
I need to specialise now to get a good job
I’m an 8/10 in Java
Front-end dev is easy, back-end dev is hard
Good coder == good at a programming language