SlideShare une entreprise Scribd logo
1  sur  72
CODE BOOTCAMPS
Making the most of
Roger Nesbitt
@mogest
SUMMER OF TECH 2016
#general
sot2016.slack.com
What’s this about?
You have knowledge.
You have passion.
How do you get a job?
Myth busting
Language overview
Developer roles
Winning at bootcamps
TONIGHT
Myth busting
Language overview
Developer roles
Winning at bootcamps
NEXT
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
MYTH #5
University prepares you for your working career
MYTH #4
I need to specialise now to get a good job
MYTH #3
I’m an 8/10 in Java
ByPeterCampbell-self-made,NikonD80,GFDL,https://
commons.wikimedia.org/w/index.php?curid=3672205
You’re probably 2/10.
That’s OK!
MYTH #2
Front-end dev is easy
Back-end dev is hard
MYTH #1
Being a good coder means
being good at a programming language
• 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
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
Employers hire students for
POTENTIAL
not
KNOWLEDGE
Myth busting
Language overview
Developer roles
Winning at bootcamps
NEXT
https://www.flickr.com/photos/mrbill/148973427
https://www.flickr.com/photos/gsi-r/5059484398
$ ./number-to-words 786637
punner
rummer
runner
stoner
summer
sumner
moge.st/phone
Ruby
❤
number = ARGV.first
alphabet = ('a'..'z').to_a.join
numbers = "22233344455566677778889999"
puts IO.read("/usr/share/dict/words")
.downcase
.split
.select { |word| word.tr(alphabet, numbers) == number }
Python
# 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)))
Javascript
function dictionaryLoaded(err, data) {
if (err) {
return console.log(err);
}
var number = process.argv[2];
var words = data.toLowerCase().split("n");
var matches = findMatchingNumbers(
number, words
);
console.log(matches);
}
function wordToNumber(word) {
return word
.replace(/[a-c]/g, '2')
.replace(/[d-f]/g, '3')
.replace(/[g-i]/g, '4')
.replace(/[j-l]/g, '5')
.replace(/[m-o]/g, '6')
.replace(/[p-s]/g, '7')
.replace(/[t-v]/g, '8')
.replace(/[w-z]/g, '9');
}
function findMatchingNumbers(targetNumber, words)
{
return words.filter(function(word) {
return wordToNumber(word) === targetNumber;
});
}
var fs = require("fs");
fs.readFile(
"/usr/share/dict/words",
"utf8",
dictionaryLoaded
);
Swift
// 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.")
}
}
PHP
<?php
$number = $argv[1];
$data = file_get_contents("/usr/share/dict/words");
$words = explode("n", strtolower($data));
$alphabet = range('a', 'z');
$numbers = array(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);
function wordToNumber($word) {
global $alphabet, $numbers;
return str_replace($alphabet, $numbers, $word);
}
function wordMatchesNumber($word) {
global $number;
return $number == wordToNumber($word);
}
$matchingWords = array_filter($words, "wordMatchesNumber");
foreach ($matchingWords as $word) {
echo "$wordn";
}
?>
C#
using System;
using System.IO;
using System.Text;
using System.Linq;
class PhoneNumberToWords
{
public string Number;
public string[] Words;
const string LetterMapping =
"22233344455566677778889999";
public PhoneNumberToWords(string number,
string dictionaryFile)
{
Number = number;
Words =
System.IO.File.ReadAllLines(dictionaryFile);
}
public void OutputMatchingWords()
{
Words.Where(word => WordMatchesNumber(word))
.ToList()
.ForEach(word => Console.WriteLine(word));
}
private bool WordMatchesNumber(string word)
{
return WordToNumber(word) == Number;
}
private string WordToNumber(string word)
{
StringBuilder builder = new StringBuilder("");
foreach (char c in word.ToUpper())
{
if (c >= 65 && c < 65 + 26)
{
builder.Append(LetterMapping[c - 65]);
}
else
{
builder.Append(c);
}
}
return builder.ToString();
}
static void Main(string[] args)
{
String number = args[0];
new PhoneNumberToWords(
number,
"/usr/share/dict/words"
).OutputMatchingWords();
}
}
C
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h>
char *read_file(void)
{
int fd;
struct stat stat;
char *words;
fd = open("/usr/share/dict/words", O_RDONLY);
if (fd == -1) { return NULL; }
if (fstat(fd, &stat) == -1) { return NULL; }
words = (char *)malloc(stat.st_size + 1);
if (words == NULL) { return NULL; }
if (read(fd, words, stat.st_size) != stat.st_size) {
return NULL;
}
close(fd);
words[stat.st_size] = 0;
return words;
}
int main(int argc, char *argv[])
{
const char *numbers = "22233344455566677778889999";
char *words, *word_ptr, *start_word_ptr;
char *number, *number_ptr;
int letter_index;
if (argc != 2) { return 1; }
number = argv[1];
words = read_file();
if (words == NULL) { return 1; }
word_ptr = words;
start_word_ptr = words;
number_ptr = number;
while (*word_ptr) {
letter_index = toupper(*word_ptr) - 65;
if (letter_index >= 0 && letter_index < 26 &&
numbers[letter_index] == *number_ptr) {
number_ptr++;
word_ptr++;
if (*number_ptr == 0 && *word_ptr == 'n') {
*word_ptr = 0;
puts(start_word_ptr);
start_word_ptr = ++word_ptr;
number_ptr = number;
}
}
else {
while (*word_ptr != 'n') { word_ptr++; }
start_word_ptr = ++word_ptr;
number_ptr = number;
}
}
free(words);
return 0;
}
Myth busting
Language overview
Developer roles
Winning at bootcamps
NEXT
Web Developer
Front-end Developer
Software Developer
Software Engineer
Mobile Developer
Devops Engineer
WARNING!
Every organisation is wildly different.
Every job is wildly different.
The following is just a guideline!
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
WEB DEVELOPER
Code management 101 22 March
CSS 101 7 April
Javascript 101 14 April
PHP 26 July
Database 101 5 April
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
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
Database
10%
Javascript
10%
HTML/CSS
10%
Server coding
30%
SOFTWARE DEVELOPER
ALSO KNOWN AS SOFTWARE ENGINEER
• Translating business logic
• Sometimes UX too
• Web / desktop / server
• Web tech 0 – 30%
• Database complexity
• Working with designers or

front-end developers
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
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
???
60%
MOBILE DEVELOPER
CROSS-PLATFORM
• Javascript (React Native,
Cordova / Phonegap)
• C# (Xamarin)
• Need to know native code too
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
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
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
• 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%
Myth busting
Language overview
Developer roles
Winning at bootcamps
NEXT
WHY, SUMMER OF TECH?
WHY???
BywetwebworkfromLondon,UK-CampingEquipment
UploadedbyPartyzan_XXI,CCBY-SA2.0,https://
commons.wikimedia.org/w/index.php?curid=8183312
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
GO
• Attend as many as you can
• 101 bootcamps are inspirational
• Go to masterclasses if you have 101 knowledge
• Prioritise broad over deep
DURING
• Participate in Slack backchannel
• Write down three things you want to take away
• Chat with the presenter afterwards
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
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
LANGUAGES
They’re different, but not so different
Web Developer
Front-end Developer
Software Developer
Software Engineer
Mobile Developer
Devops Engineer
ENJOY!
Roger Nesbitt
@mogest
THANKS!

Contenu connexe

En vedette

Summer of Tech: Resume 2016
Summer of Tech: Resume 2016Summer of Tech: Resume 2016
Summer of Tech: Resume 2016ruthmcdavitt
 
Summer of Tech Student Profiles 2016
Summer of Tech Student Profiles 2016Summer of Tech Student Profiles 2016
Summer of Tech Student Profiles 2016ruthmcdavitt
 
How to get a job 2016
How to get a job 2016How to get a job 2016
How to get a job 2016John Clegg
 
Media factor дниpr_
Media factor дниpr_Media factor дниpr_
Media factor дниpr_MediaFactor
 
багатогранний світ воску
багатогранний світ воскубагатогранний світ воску
багатогранний світ воскуAndrew
 
Step by step sharring folders
Step by step sharring foldersStep by step sharring folders
Step by step sharring folderslargman
 
Land mark towers for web
Land mark towers for webLand mark towers for web
Land mark towers for webIsha Amastha
 
Усыпальницы фараонов. Ладья Миллионов Лет
Усыпальницы фараонов. Ладья Миллионов ЛетУсыпальницы фараонов. Ладья Миллионов Лет
Усыпальницы фараонов. Ладья Миллионов Летfonelene elengone
 
Land mark towers for web
Land mark towers for webLand mark towers for web
Land mark towers for webIsha Amastha
 
Web/Logo portfolio
Web/Logo portfolioWeb/Logo portfolio
Web/Logo portfolioEmily Clark
 
Bir elektrik devresi
Bir elektrik devresiBir elektrik devresi
Bir elektrik devresiFurkan Efe
 
Interpretacion S
Interpretacion SInterpretacion S
Interpretacion Sfranckk666
 
Cyprus Investment from only 60,000 Euro - Move in TODAY
Cyprus Investment from only 60,000 Euro - Move in TODAYCyprus Investment from only 60,000 Euro - Move in TODAY
Cyprus Investment from only 60,000 Euro - Move in TODAYColdwell Banker - New Homes
 
Land mark towers for web
Land mark towers for webLand mark towers for web
Land mark towers for webIsha Amastha
 

En vedette (20)

Summer of Tech: Resume 2016
Summer of Tech: Resume 2016Summer of Tech: Resume 2016
Summer of Tech: Resume 2016
 
Summer of Tech Student Profiles 2016
Summer of Tech Student Profiles 2016Summer of Tech Student Profiles 2016
Summer of Tech Student Profiles 2016
 
Mobile Testing Taster
Mobile Testing TasterMobile Testing Taster
Mobile Testing Taster
 
How to get a job 2016
How to get a job 2016How to get a job 2016
How to get a job 2016
 
Precepts by Lines
Precepts by LinesPrecepts by Lines
Precepts by Lines
 
Media factor дниpr_
Media factor дниpr_Media factor дниpr_
Media factor дниpr_
 
багатогранний світ воску
багатогранний світ воскубагатогранний світ воску
багатогранний світ воску
 
Step by step sharring folders
Step by step sharring foldersStep by step sharring folders
Step by step sharring folders
 
Land mark towers for web
Land mark towers for webLand mark towers for web
Land mark towers for web
 
Productivity in the email age
Productivity in the email ageProductivity in the email age
Productivity in the email age
 
Усыпальницы фараонов. Ладья Миллионов Лет
Усыпальницы фараонов. Ладья Миллионов ЛетУсыпальницы фараонов. Ладья Миллионов Лет
Усыпальницы фараонов. Ладья Миллионов Лет
 
Land mark towers for web
Land mark towers for webLand mark towers for web
Land mark towers for web
 
Web/Logo portfolio
Web/Logo portfolioWeb/Logo portfolio
Web/Logo portfolio
 
Bir elektrik devresi
Bir elektrik devresiBir elektrik devresi
Bir elektrik devresi
 
Interpretacion S
Interpretacion SInterpretacion S
Interpretacion S
 
Cyprus Investment from only 60,000 Euro - Move in TODAY
Cyprus Investment from only 60,000 Euro - Move in TODAYCyprus Investment from only 60,000 Euro - Move in TODAY
Cyprus Investment from only 60,000 Euro - Move in TODAY
 
Slide share -marketing to black moms
Slide share  -marketing to black momsSlide share  -marketing to black moms
Slide share -marketing to black moms
 
Land mark towers for web
Land mark towers for webLand mark towers for web
Land mark towers for web
 
Doctrina 14
Doctrina 14Doctrina 14
Doctrina 14
 
Jesus in Pictures
Jesus in PicturesJesus in Pictures
Jesus in Pictures
 

Similaire à SoTWLG Intro to Code Bootcamps 2016 (Roger Nesbitt)

Groovy Introduction - JAX Germany - 2008
Groovy Introduction - JAX Germany - 2008Groovy Introduction - JAX Germany - 2008
Groovy Introduction - JAX Germany - 2008Guillaume Laforge
 
Ruby on Rails 3.1: Let's bring the fun back into web programing
Ruby on Rails 3.1: Let's bring the fun back into web programingRuby on Rails 3.1: Let's bring the fun back into web programing
Ruby on Rails 3.1: Let's bring the fun back into web programingBozhidar Batsov
 
Save time by applying clean code principles
Save time by applying clean code principlesSave time by applying clean code principles
Save time by applying clean code principlesEdorian
 
Building DSLs On CLR and DLR (Microsoft.NET)
Building DSLs On CLR and DLR (Microsoft.NET)Building DSLs On CLR and DLR (Microsoft.NET)
Building DSLs On CLR and DLR (Microsoft.NET)Vitaly Baum
 
Introduction To Groovy 2005
Introduction To Groovy 2005Introduction To Groovy 2005
Introduction To Groovy 2005Tugdual Grall
 
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8tdc-globalcode
 
Visual Studio .NET2010
Visual Studio .NET2010Visual Studio .NET2010
Visual Studio .NET2010Satish Verma
 
Rubyconf2016 - Solving communication problems in distributed teams with BDD
Rubyconf2016 - Solving communication problems in distributed teams with BDDRubyconf2016 - Solving communication problems in distributed teams with BDD
Rubyconf2016 - Solving communication problems in distributed teams with BDDRodrigo Urubatan
 
2008 - TechDays PT: WCF, JSON and AJAX for performance and manageability
2008 - TechDays PT: WCF, JSON and AJAX for performance and manageability2008 - TechDays PT: WCF, JSON and AJAX for performance and manageability
2008 - TechDays PT: WCF, JSON and AJAX for performance and manageabilityDaniel Fisher
 
Grails Introduction - IJTC 2007
Grails Introduction - IJTC 2007Grails Introduction - IJTC 2007
Grails Introduction - IJTC 2007Guillaume Laforge
 
Advanced Javascript Unit Testing
Advanced Javascript Unit TestingAdvanced Javascript Unit Testing
Advanced Javascript Unit TestingLars Thorup
 
Extreme Swift
Extreme SwiftExtreme Swift
Extreme SwiftMovel
 
Dealing with Legacy Perl Code - Peter Scott
Dealing with Legacy Perl Code - Peter ScottDealing with Legacy Perl Code - Peter Scott
Dealing with Legacy Perl Code - Peter ScottO'Reilly Media
 
Groovy Update - JavaPolis 2007
Groovy Update - JavaPolis 2007Groovy Update - JavaPolis 2007
Groovy Update - JavaPolis 2007Guillaume Laforge
 

Similaire à SoTWLG Intro to Code Bootcamps 2016 (Roger Nesbitt) (20)

Groovy Introduction - JAX Germany - 2008
Groovy Introduction - JAX Germany - 2008Groovy Introduction - JAX Germany - 2008
Groovy Introduction - JAX Germany - 2008
 
Ruby on Rails 3.1: Let's bring the fun back into web programing
Ruby on Rails 3.1: Let's bring the fun back into web programingRuby on Rails 3.1: Let's bring the fun back into web programing
Ruby on Rails 3.1: Let's bring the fun back into web programing
 
Save time by applying clean code principles
Save time by applying clean code principlesSave time by applying clean code principles
Save time by applying clean code principles
 
Novidades do c# 7 e 8
Novidades do c# 7 e 8Novidades do c# 7 e 8
Novidades do c# 7 e 8
 
Building DSLs On CLR and DLR (Microsoft.NET)
Building DSLs On CLR and DLR (Microsoft.NET)Building DSLs On CLR and DLR (Microsoft.NET)
Building DSLs On CLR and DLR (Microsoft.NET)
 
Introduction To Groovy 2005
Introduction To Groovy 2005Introduction To Groovy 2005
Introduction To Groovy 2005
 
working with PHP & DB's
working with PHP & DB'sworking with PHP & DB's
working with PHP & DB's
 
Sorbet at Grailed
Sorbet at GrailedSorbet at Grailed
Sorbet at Grailed
 
Rits Brown Bag - TypeScript
Rits Brown Bag - TypeScriptRits Brown Bag - TypeScript
Rits Brown Bag - TypeScript
 
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
 
Visual Studio .NET2010
Visual Studio .NET2010Visual Studio .NET2010
Visual Studio .NET2010
 
Rubyconf2016 - Solving communication problems in distributed teams with BDD
Rubyconf2016 - Solving communication problems in distributed teams with BDDRubyconf2016 - Solving communication problems in distributed teams with BDD
Rubyconf2016 - Solving communication problems in distributed teams with BDD
 
2008 - TechDays PT: WCF, JSON and AJAX for performance and manageability
2008 - TechDays PT: WCF, JSON and AJAX for performance and manageability2008 - TechDays PT: WCF, JSON and AJAX for performance and manageability
2008 - TechDays PT: WCF, JSON and AJAX for performance and manageability
 
Grails Introduction - IJTC 2007
Grails Introduction - IJTC 2007Grails Introduction - IJTC 2007
Grails Introduction - IJTC 2007
 
Metaprogramming
MetaprogrammingMetaprogramming
Metaprogramming
 
Tdd is not about testing
Tdd is not about testingTdd is not about testing
Tdd is not about testing
 
Advanced Javascript Unit Testing
Advanced Javascript Unit TestingAdvanced Javascript Unit Testing
Advanced Javascript Unit Testing
 
Extreme Swift
Extreme SwiftExtreme Swift
Extreme Swift
 
Dealing with Legacy Perl Code - Peter Scott
Dealing with Legacy Perl Code - Peter ScottDealing with Legacy Perl Code - Peter Scott
Dealing with Legacy Perl Code - Peter Scott
 
Groovy Update - JavaPolis 2007
Groovy Update - JavaPolis 2007Groovy Update - JavaPolis 2007
Groovy Update - JavaPolis 2007
 

Dernier

一比一定(购)堪培拉大学毕业证(UC毕业证)成绩单学位证
一比一定(购)堪培拉大学毕业证(UC毕业证)成绩单学位证一比一定(购)堪培拉大学毕业证(UC毕业证)成绩单学位证
一比一定(购)堪培拉大学毕业证(UC毕业证)成绩单学位证eqaqen
 
Specialize in a MSc within Biomanufacturing, and work part-time as Process En...
Specialize in a MSc within Biomanufacturing, and work part-time as Process En...Specialize in a MSc within Biomanufacturing, and work part-time as Process En...
Specialize in a MSc within Biomanufacturing, and work part-time as Process En...Juli Boned
 
Personal Brand Exploration - Fernando Negron
Personal Brand Exploration - Fernando NegronPersonal Brand Exploration - Fernando Negron
Personal Brand Exploration - Fernando Negronnegronf24
 
怎样办理宾夕法尼亚大学毕业证(UPenn毕业证书)成绩单学校原版复制
怎样办理宾夕法尼亚大学毕业证(UPenn毕业证书)成绩单学校原版复制怎样办理宾夕法尼亚大学毕业证(UPenn毕业证书)成绩单学校原版复制
怎样办理宾夕法尼亚大学毕业证(UPenn毕业证书)成绩单学校原版复制yynod
 
Personal Brand Exploration ppt.- Ronnie Jones
Personal Brand  Exploration ppt.- Ronnie JonesPersonal Brand  Exploration ppt.- Ronnie Jones
Personal Brand Exploration ppt.- Ronnie Jonesjonesyde302
 
Joshua Minker Brand Exploration Sports Broadcaster .pptx
Joshua Minker Brand Exploration Sports Broadcaster .pptxJoshua Minker Brand Exploration Sports Broadcaster .pptx
Joshua Minker Brand Exploration Sports Broadcaster .pptxsportsworldproductio
 
Mysore Escorts Service Girl ^ 9332606886, WhatsApp Anytime Mysore
Mysore Escorts Service Girl ^ 9332606886, WhatsApp Anytime MysoreMysore Escorts Service Girl ^ 9332606886, WhatsApp Anytime Mysore
Mysore Escorts Service Girl ^ 9332606886, WhatsApp Anytime Mysoremeghakumariji156
 
Top profile Call Girls In Gangtok [ 7014168258 ] Call Me For Genuine Models W...
Top profile Call Girls In Gangtok [ 7014168258 ] Call Me For Genuine Models W...Top profile Call Girls In Gangtok [ 7014168258 ] Call Me For Genuine Models W...
Top profile Call Girls In Gangtok [ 7014168258 ] Call Me For Genuine Models W...gajnagarg
 
DMER-AYUSH-MIMS-Staff-Nurse-_Selection-List-04-05-2024.pdf
DMER-AYUSH-MIMS-Staff-Nurse-_Selection-List-04-05-2024.pdfDMER-AYUSH-MIMS-Staff-Nurse-_Selection-List-04-05-2024.pdf
DMER-AYUSH-MIMS-Staff-Nurse-_Selection-List-04-05-2024.pdfReemaKhan31
 
怎样办理哥伦比亚大学毕业证(Columbia毕业证书)成绩单学校原版复制
怎样办理哥伦比亚大学毕业证(Columbia毕业证书)成绩单学校原版复制怎样办理哥伦比亚大学毕业证(Columbia毕业证书)成绩单学校原版复制
怎样办理哥伦比亚大学毕业证(Columbia毕业证书)成绩单学校原版复制yynod
 
Top profile Call Girls In Agartala [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Agartala [ 7014168258 ] Call Me For Genuine Models ...Top profile Call Girls In Agartala [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Agartala [ 7014168258 ] Call Me For Genuine Models ...gajnagarg
 
Sample IT RISK REGISTER for Education Purpose
Sample IT RISK REGISTER for Education PurposeSample IT RISK REGISTER for Education Purpose
Sample IT RISK REGISTER for Education PurposeCyberGuru5
 
Top profile Call Girls In Ratnagiri [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In Ratnagiri [ 7014168258 ] Call Me For Genuine Models...Top profile Call Girls In Ratnagiri [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In Ratnagiri [ 7014168258 ] Call Me For Genuine Models...gajnagarg
 
Top profile Call Girls In Hubli [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Hubli [ 7014168258 ] Call Me For Genuine Models We ...Top profile Call Girls In Hubli [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Hubli [ 7014168258 ] Call Me For Genuine Models We ...gajnagarg
 
Vip Malegaon Escorts Service Girl ^ 9332606886, WhatsApp Anytime Malegaon
Vip Malegaon Escorts Service Girl ^ 9332606886, WhatsApp Anytime MalegaonVip Malegaon Escorts Service Girl ^ 9332606886, WhatsApp Anytime Malegaon
Vip Malegaon Escorts Service Girl ^ 9332606886, WhatsApp Anytime Malegaonmeghakumariji156
 
Top profile Call Girls In Sagar [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Sagar [ 7014168258 ] Call Me For Genuine Models We ...Top profile Call Girls In Sagar [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Sagar [ 7014168258 ] Call Me For Genuine Models We ...nirzagarg
 
K Venkat Naveen Kumar | GCP Data Engineer | CV
K Venkat Naveen Kumar | GCP Data Engineer | CVK Venkat Naveen Kumar | GCP Data Engineer | CV
K Venkat Naveen Kumar | GCP Data Engineer | CVK VENKAT NAVEEN KUMAR
 
怎样办理伊利诺伊大学厄巴纳-香槟分校毕业证(UIUC毕业证书)成绩单学校原版复制
怎样办理伊利诺伊大学厄巴纳-香槟分校毕业证(UIUC毕业证书)成绩单学校原版复制怎样办理伊利诺伊大学厄巴纳-香槟分校毕业证(UIUC毕业证书)成绩单学校原版复制
怎样办理伊利诺伊大学厄巴纳-香槟分校毕业证(UIUC毕业证书)成绩单学校原版复制yynod
 
Top profile Call Girls In Shillong [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Shillong [ 7014168258 ] Call Me For Genuine Models ...Top profile Call Girls In Shillong [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Shillong [ 7014168258 ] Call Me For Genuine Models ...gajnagarg
 

Dernier (20)

一比一定(购)堪培拉大学毕业证(UC毕业证)成绩单学位证
一比一定(购)堪培拉大学毕业证(UC毕业证)成绩单学位证一比一定(购)堪培拉大学毕业证(UC毕业证)成绩单学位证
一比一定(购)堪培拉大学毕业证(UC毕业证)成绩单学位证
 
Specialize in a MSc within Biomanufacturing, and work part-time as Process En...
Specialize in a MSc within Biomanufacturing, and work part-time as Process En...Specialize in a MSc within Biomanufacturing, and work part-time as Process En...
Specialize in a MSc within Biomanufacturing, and work part-time as Process En...
 
Personal Brand Exploration - Fernando Negron
Personal Brand Exploration - Fernando NegronPersonal Brand Exploration - Fernando Negron
Personal Brand Exploration - Fernando Negron
 
怎样办理宾夕法尼亚大学毕业证(UPenn毕业证书)成绩单学校原版复制
怎样办理宾夕法尼亚大学毕业证(UPenn毕业证书)成绩单学校原版复制怎样办理宾夕法尼亚大学毕业证(UPenn毕业证书)成绩单学校原版复制
怎样办理宾夕法尼亚大学毕业证(UPenn毕业证书)成绩单学校原版复制
 
Cara Gugurkan Kandungan Awal Kehamilan 1 bulan (087776558899)
Cara Gugurkan Kandungan Awal Kehamilan 1 bulan (087776558899)Cara Gugurkan Kandungan Awal Kehamilan 1 bulan (087776558899)
Cara Gugurkan Kandungan Awal Kehamilan 1 bulan (087776558899)
 
Personal Brand Exploration ppt.- Ronnie Jones
Personal Brand  Exploration ppt.- Ronnie JonesPersonal Brand  Exploration ppt.- Ronnie Jones
Personal Brand Exploration ppt.- Ronnie Jones
 
Joshua Minker Brand Exploration Sports Broadcaster .pptx
Joshua Minker Brand Exploration Sports Broadcaster .pptxJoshua Minker Brand Exploration Sports Broadcaster .pptx
Joshua Minker Brand Exploration Sports Broadcaster .pptx
 
Mysore Escorts Service Girl ^ 9332606886, WhatsApp Anytime Mysore
Mysore Escorts Service Girl ^ 9332606886, WhatsApp Anytime MysoreMysore Escorts Service Girl ^ 9332606886, WhatsApp Anytime Mysore
Mysore Escorts Service Girl ^ 9332606886, WhatsApp Anytime Mysore
 
Top profile Call Girls In Gangtok [ 7014168258 ] Call Me For Genuine Models W...
Top profile Call Girls In Gangtok [ 7014168258 ] Call Me For Genuine Models W...Top profile Call Girls In Gangtok [ 7014168258 ] Call Me For Genuine Models W...
Top profile Call Girls In Gangtok [ 7014168258 ] Call Me For Genuine Models W...
 
DMER-AYUSH-MIMS-Staff-Nurse-_Selection-List-04-05-2024.pdf
DMER-AYUSH-MIMS-Staff-Nurse-_Selection-List-04-05-2024.pdfDMER-AYUSH-MIMS-Staff-Nurse-_Selection-List-04-05-2024.pdf
DMER-AYUSH-MIMS-Staff-Nurse-_Selection-List-04-05-2024.pdf
 
怎样办理哥伦比亚大学毕业证(Columbia毕业证书)成绩单学校原版复制
怎样办理哥伦比亚大学毕业证(Columbia毕业证书)成绩单学校原版复制怎样办理哥伦比亚大学毕业证(Columbia毕业证书)成绩单学校原版复制
怎样办理哥伦比亚大学毕业证(Columbia毕业证书)成绩单学校原版复制
 
Top profile Call Girls In Agartala [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Agartala [ 7014168258 ] Call Me For Genuine Models ...Top profile Call Girls In Agartala [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Agartala [ 7014168258 ] Call Me For Genuine Models ...
 
Sample IT RISK REGISTER for Education Purpose
Sample IT RISK REGISTER for Education PurposeSample IT RISK REGISTER for Education Purpose
Sample IT RISK REGISTER for Education Purpose
 
Top profile Call Girls In Ratnagiri [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In Ratnagiri [ 7014168258 ] Call Me For Genuine Models...Top profile Call Girls In Ratnagiri [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In Ratnagiri [ 7014168258 ] Call Me For Genuine Models...
 
Top profile Call Girls In Hubli [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Hubli [ 7014168258 ] Call Me For Genuine Models We ...Top profile Call Girls In Hubli [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Hubli [ 7014168258 ] Call Me For Genuine Models We ...
 
Vip Malegaon Escorts Service Girl ^ 9332606886, WhatsApp Anytime Malegaon
Vip Malegaon Escorts Service Girl ^ 9332606886, WhatsApp Anytime MalegaonVip Malegaon Escorts Service Girl ^ 9332606886, WhatsApp Anytime Malegaon
Vip Malegaon Escorts Service Girl ^ 9332606886, WhatsApp Anytime Malegaon
 
Top profile Call Girls In Sagar [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Sagar [ 7014168258 ] Call Me For Genuine Models We ...Top profile Call Girls In Sagar [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Sagar [ 7014168258 ] Call Me For Genuine Models We ...
 
K Venkat Naveen Kumar | GCP Data Engineer | CV
K Venkat Naveen Kumar | GCP Data Engineer | CVK Venkat Naveen Kumar | GCP Data Engineer | CV
K Venkat Naveen Kumar | GCP Data Engineer | CV
 
怎样办理伊利诺伊大学厄巴纳-香槟分校毕业证(UIUC毕业证书)成绩单学校原版复制
怎样办理伊利诺伊大学厄巴纳-香槟分校毕业证(UIUC毕业证书)成绩单学校原版复制怎样办理伊利诺伊大学厄巴纳-香槟分校毕业证(UIUC毕业证书)成绩单学校原版复制
怎样办理伊利诺伊大学厄巴纳-香槟分校毕业证(UIUC毕业证书)成绩单学校原版复制
 
Top profile Call Girls In Shillong [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Shillong [ 7014168258 ] Call Me For Genuine Models ...Top profile Call Girls In Shillong [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Shillong [ 7014168258 ] Call Me For Genuine Models ...
 

SoTWLG Intro to Code Bootcamps 2016 (Roger Nesbitt)

  • 1. CODE BOOTCAMPS Making the most of Roger Nesbitt @mogest SUMMER OF TECH 2016
  • 4. You have knowledge. You have passion. How do you get a job?
  • 5. Myth busting Language overview Developer roles Winning at bootcamps TONIGHT
  • 6. Myth busting Language overview Developer roles Winning at bootcamps NEXT
  • 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
  • 8. MYTH #5 University prepares you for your working career
  • 9. MYTH #4 I need to specialise now to get a good job
  • 10. MYTH #3 I’m an 8/10 in Java
  • 13. MYTH #2 Front-end dev is easy Back-end dev is hard
  • 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
  • 17. Employers hire students for POTENTIAL not KNOWLEDGE
  • 18. Myth busting Language overview Developer roles Winning at bootcamps NEXT
  • 21.
  • 25. number = ARGV.first alphabet = ('a'..'z').to_a.join numbers = "22233344455566677778889999" puts IO.read("/usr/share/dict/words") .downcase .split .select { |word| word.tr(alphabet, numbers) == number }
  • 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)))
  • 29. function dictionaryLoaded(err, data) { if (err) { return console.log(err); } var number = process.argv[2]; var words = data.toLowerCase().split("n"); var matches = findMatchingNumbers( number, words ); console.log(matches); } function wordToNumber(word) { return word .replace(/[a-c]/g, '2') .replace(/[d-f]/g, '3') .replace(/[g-i]/g, '4') .replace(/[j-l]/g, '5') .replace(/[m-o]/g, '6') .replace(/[p-s]/g, '7') .replace(/[t-v]/g, '8') .replace(/[w-z]/g, '9'); } function findMatchingNumbers(targetNumber, words) { return words.filter(function(word) { return wordToNumber(word) === targetNumber; }); } var fs = require("fs"); fs.readFile( "/usr/share/dict/words", "utf8", dictionaryLoaded );
  • 30. Swift
  • 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.") } }
  • 32. PHP
  • 33. <?php $number = $argv[1]; $data = file_get_contents("/usr/share/dict/words"); $words = explode("n", strtolower($data)); $alphabet = range('a', 'z'); $numbers = array(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); function wordToNumber($word) { global $alphabet, $numbers; return str_replace($alphabet, $numbers, $word); } function wordMatchesNumber($word) { global $number; return $number == wordToNumber($word); } $matchingWords = array_filter($words, "wordMatchesNumber"); foreach ($matchingWords as $word) { echo "$wordn"; } ?>
  • 34. C#
  • 35. using System; using System.IO; using System.Text; using System.Linq; class PhoneNumberToWords { public string Number; public string[] Words; const string LetterMapping = "22233344455566677778889999"; public PhoneNumberToWords(string number, string dictionaryFile) { Number = number; Words = System.IO.File.ReadAllLines(dictionaryFile); } public void OutputMatchingWords() { Words.Where(word => WordMatchesNumber(word)) .ToList() .ForEach(word => Console.WriteLine(word)); } private bool WordMatchesNumber(string word) { return WordToNumber(word) == Number; } private string WordToNumber(string word) { StringBuilder builder = new StringBuilder(""); foreach (char c in word.ToUpper()) { if (c >= 65 && c < 65 + 26) { builder.Append(LetterMapping[c - 65]); } else { builder.Append(c); } } return builder.ToString(); } static void Main(string[] args) { String number = args[0]; new PhoneNumberToWords( number, "/usr/share/dict/words" ).OutputMatchingWords(); } }
  • 36. C
  • 37. #include <stdio.h> #include <ctype.h> #include <stdlib.h> #include <fcntl.h> #include <unistd.h> #include <sys/stat.h> char *read_file(void) { int fd; struct stat stat; char *words; fd = open("/usr/share/dict/words", O_RDONLY); if (fd == -1) { return NULL; } if (fstat(fd, &stat) == -1) { return NULL; } words = (char *)malloc(stat.st_size + 1); if (words == NULL) { return NULL; } if (read(fd, words, stat.st_size) != stat.st_size) { return NULL; } close(fd); words[stat.st_size] = 0; return words; } int main(int argc, char *argv[]) { const char *numbers = "22233344455566677778889999"; char *words, *word_ptr, *start_word_ptr; char *number, *number_ptr; int letter_index; if (argc != 2) { return 1; } number = argv[1]; words = read_file(); if (words == NULL) { return 1; } word_ptr = words; start_word_ptr = words; number_ptr = number; while (*word_ptr) { letter_index = toupper(*word_ptr) - 65; if (letter_index >= 0 && letter_index < 26 && numbers[letter_index] == *number_ptr) { number_ptr++; word_ptr++; if (*number_ptr == 0 && *word_ptr == 'n') { *word_ptr = 0; puts(start_word_ptr); start_word_ptr = ++word_ptr; number_ptr = number; } } else { while (*word_ptr != 'n') { word_ptr++; } start_word_ptr = ++word_ptr; number_ptr = number; } } free(words); return 0; }
  • 38. Myth busting Language overview Developer roles Winning at bootcamps NEXT
  • 39. Web Developer Front-end Developer Software Developer Software Engineer Mobile Developer Devops Engineer
  • 40. WARNING! Every organisation is wildly different. Every job is wildly different. The following is just a guideline!
  • 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
  • 42. WEB DEVELOPER Code management 101 22 March CSS 101 7 April Javascript 101 14 April PHP 26 July Database 101 5 April
  • 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
  • 45. Database 10% Javascript 10% HTML/CSS 10% Server coding 30% SOFTWARE DEVELOPER ALSO KNOWN AS SOFTWARE ENGINEER • Translating business logic • Sometimes UX too • Web / desktop / server • Web tech 0 – 30% • Database complexity • Working with designers or
 front-end developers
  • 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
  • 48. ??? 60% MOBILE DEVELOPER CROSS-PLATFORM • Javascript (React Native, Cordova / Phonegap) • C# (Xamarin) • Need to know native code too
  • 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%
  • 53.
  • 54. Myth busting Language overview Developer roles Winning at bootcamps NEXT
  • 55. WHY, SUMMER OF TECH? WHY???
  • 56.
  • 57.
  • 58.
  • 59.
  • 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
  • 69. Web Developer Front-end Developer Software Developer Software Engineer Mobile Developer Devops Engineer
  • 70.