Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests...

113
Becoming a full stack java web developer Karen Rahmeier, Codecinella Madison WI, May 2017

Transcript of Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests...

Page 1: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Becoming a full stack

java web developerKaren Rahmeier, Codecinella

Madison WI, May 2017

Page 2: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Who is this presenter?

Slide 2 of 113

Page 3: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

My Qualifications

• B.A. in Physics, Dartmouth College

• Employed full time as software developer since 1998

• Java web application developer since 2007

• Two-time graduate of Madison College Enterprise Java course• Fall, 2007

• Fall, 2016

• Four-time attendee of No Fluff Just Stuff• Greater Wisconsin Software Symposium

• Enthusiastic learner

Slide 3 of 113

Page 4: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Who is this talk for?Computer science and information technology students

Adults seeking a career change into a tech field

Tech bootcamp grads and others with 1-3 years employment in the tech sector

Slide 4 of 113

Page 5: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Outline

1% Qualifications of presenter

20% Introduction to software development field

20% What does it take to build a java web application? (fairly tech)

40% Demonstrate the process (most technical portion)

10% What other skills were assumed?

10% What proficiency required to begin work/identify as developer?

1% Resources for continued learning

Slide 5 of 113

Page 6: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

So you want to be a software developer…Where to even start?

Slide 6 of 113

Page 7: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

So many choices…

Slide 7 of 113

Page 8: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Write software or use it?

Create or write code• Mobile apps

• Websites

• Games

• Back-end functionality

• Front-end functionality

• User-interface designer

• SQL developer

• Data scientist/Business Intelligence

IT-related job, not coding• Project manager

• Business analyst

• Data scientist

• Database Administrator

• Security, networks, helpdesk

• QA, testing

• Education

• Academic research

• Scientific research

Slide 8 of 113

Page 9: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

I want to write code

http://tech.co/code-learn-2015-infographic-2014-12

Slide 9 of 113

Page 10: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Where and how should I learn?

• https://www.freecodecamp.com/

• http://exercism.io/

• https://www.learnenough.com/

Slide 10 of 113

Page 11: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

What should I learn?

https://svsg.co/how-to-choose-your-tech-stack/Slide 11 of 113

Page 12: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

What’s a tech stack?

Slide 12 of 113

Page 13: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

I want to get a job

http://www.codingdojo.com/blog/9-most-in-demand-programming-languages-of-2017/ Slide 13 of 113

Page 14: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

I mean, a job in Madison!

https://wallethub.com/edu/best-worst-metro-areas-for-stem-professionals/9200/

Slide 14 of 113

Page 15: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

My short story…How I became a java web application developer

Slide 15 of 113

Page 16: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

One sample career path

• STEM degree (physics)

• Science-related job (DNR)

• Y2K

• Consulting firm hired and trained me (client-server, Oracle database)

• Returned to State of WI, built wiscjobs (classic ASP, web, Microsoft)

• Dog park offer to learn java and change jobs

• Enterprise-level java web applications (DOT)

• Moved to smaller agency

Slide 16 of 113

Page 17: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Why did I choose java?

• At every fork, I take the best option available

• Always keeping my skills current; move in order to grow, learn

• Always watching for my next ‘best job fit yet!’

• SQL has served me in every job since I learned it

• Java has remained current and relevant longer than any other language I learned

• Java remains one of the top sought-after job skills

Slide 17 of 113

Page 18: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Java popularity

https://www.tiobe.com/tiobe-index/

Slide 18 of 113

Page 19: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Decision…Java web application developer

Slide 19 of 113

Page 20: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Outline

1% Qualifications of presenter

20% Introduction to software development field

20% What does it take to build a java web application? (fairly tech)

40% Demonstrate the process (most technical portion)

10% What other skills were assumed?

10% What proficiency required to begin work/identify as developer?

1% Resources for continued learning

Slide 20 of 113

Page 21: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

What does it take……to build a java web application?

Slide 21 of 113

Page 22: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Application requirements

• Persistence of data (need database)

• Functionality provided through browser (need web app server)

• Secure (logged-on users can do more things)

Slide 22 of 113

Page 23: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Desirable features:

• User interface• Attractive layout, works in most browsers, quick to build, easy to maintain,

looks modern

• Free to develop• mySql, Tomcat, Eclipse or IntelliJ, Github

• Source code repository• backed up, can be shared

Slide 23 of 113

Page 24: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Create it!Codecinella event-and-attendee tracking application

Slide 24 of 113

Page 25: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Sketch or outline your project plan

• Event and attendee tracking application

• Required functionality:• Show past events• Add new event• Upload attendees of specific event• Show attendees

• Optional functionality:• Search• Sort• Display total attendees at event• Display total events by attendee

Slide 25 of 113

Page 26: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Slide 26 of 113

Page 27: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Design your test plan (Why does testing matter?)

• Junior developers: “If it works the first time, it must be right!”

• Senior developers: “If it works the first time, I missed something big!”

• End users always use the code differently than developers

• People think differently: you only built and tested according to your way of thinking

• There are lots of moving parts and interdependencies, therefore many possible failure points

Slide 27 of 113

Page 28: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Design your test plan (What IS testing?)

• Unit tests

• Integration Tests

• Functional Tests

• Automated Tests

• Manual Tests

• User-interface Tests

• User-acceptance Tests

• Load Tests

Slide 28 of 113

Page 29: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Design your test plan (How will you know you have succeeded?)

• Minimum test requirements:• Show past events

• Add new event

• Upload attendees of specific event

• Show attendees

• Code coverage requirements:• All data access methods tested

• All complex application methods tested

Slide 29 of 113

Page 30: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Set up your laptop environment

• Install Eclipse or IntelliJ

• Download MySql

• Download Tomcat (not tomee)

• Download java jdk, jre version 1.8

Slide 30 of 113

Page 31: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Set up your database

• Open SqlWorkbench

• Create root account/user

• Create new database

• Create tables in the database

• Enter a little test data

Slide 31 of 113

Page 32: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Design your database

Slide 32 of 113

Page 33: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Slide 33 of 113

Page 34: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Open/Launch your IDE (integrated development environment)

• Create a new project

• Consider saving it on github

• Add and test functionality in modular blocks• Show past events• Navigation via menu links• Logon security• Add event with attendees

• Optional features• Change the look and feel with Bootstrap• Add a web service to look up inspirational quotes by women in tech

Slide 34 of 113

Page 35: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Slide 35 of 113

Page 36: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Slide 36 of 113

Page 37: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Outline

1% Qualifications of presenter

20% Introduction to software development field

20% What does it take to build a java web application? (fairly tech)

40% Demonstrate the process (most technical portion)

10% What other skills were assumed?

10% What proficiency required to begin work/identify as developer?

1% Resources for continued learning

Slide 37 of 113

Page 38: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Functionality: Show past events

• Build events jsp page

• Read from database and display all events

• Optional:• Allow searching by past event

Slide 38 of 113

Page 39: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Functionality: show past events

Slide 39 of 113

Page 40: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

• Create Event.java (includes hibernate mapping annotations)

• Create showEvents.jsp (the display page)

• Create showEvents.java (controller)

• Create EventDao.java

• Create and run unit tests

• Test via application as deployed locally to browser

Functionality: Show past events

Slide 40 of 113

Page 41: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Slide 41 of 113

Page 42: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Slide 42 of 113

Page 43: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Slide 43 of 113

Page 44: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

• Create Event.java (includes hibernate mapping annotations)

• Create showEvents.jsp (the display page)

• Create showEvents.java (controller)

• Create EventDao.java

• Create and run unit tests

• Test via application as deployed locally to browser

Functionality: Show past events

Slide 44 of 113

Page 45: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Slide 45 of 113

Page 46: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Slide 46 of 113

Page 47: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Slide 47 of 113

Page 48: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Functionality: Show past events

• Create Event.java (includes hibernate mapping annotations)

• Create showEvents.jsp (the display page)

• Create showEvents.java (controller)

• Create EventDao.java

• Create and run unit tests

• Test via application as deployed locally to browser

Slide 48 of 113

Page 49: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Slide 49 of 113

Page 50: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Slide 50 of 113

Page 51: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Slide 51 of 113

Page 52: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

• Controller classes:

Slide 52 of 113

Page 53: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

HttpServletRequest

• Menu link clicked by user

• Magic happens:• the browser talks to the application server

• and your application works!

• Java API gives class method names• doGet, doPost

• (Tomcat) application server implements it

• Fundamental aspect of java web application

Slide 53 of 113

Page 54: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Dog Request Response Protocol

Slide 54 of 113

Page 55: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Dog Request Response Protocol

dogOutRequest

• isRainingOut?

• isGoodSmellsOut?

• needToPee

• isSquirrelOut?

dogInResponse

• gotMuddyPaws

• butBarkingIsFun

• seeMyNewStick

• iDidPee

Slide 55 of 113

Page 56: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Dog Request Response Protocol

dogOutAPI

• requestPurpose(text)

• dogInitiatedRequest(boolean)

• doorOutId(int, kitchenDoor=1)

• dogRequestWaitTime(timestmp)

• dogRequestUrgency(int)

dogInAPI

• coatMoistureLevel(int)

• pawCleanlinessLevel(int)

• askedForInHerself(boolean)

• responseTimeToInCommand(ts)

• doorInId(int, kitchenDoor=1)

• supplementalItemCarriedIn(text)

Slide 56 of 113

Page 57: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Functionality: Show past events

• Create Event.java (includes hibernate mapping annotations)

• Create showEvents.jsp (the display page)

• Create showEvents.java (controller)

• Create EventDao.java

• Create and run unit tests

• Test via application as deployed locally to browser

Slide 57 of 113

Page 58: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Slide 58 of 113

Page 59: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Slide 59 of 113

Page 60: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Slide 60 of 113

Page 61: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Slide 61 of 113

Page 62: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Slide 62 of 113

Page 63: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Functionality: Show past events

• Create Event.java (includes hibernate mapping annotations)

• Create showEvents.jsp (the display page)

• Create showEvents.java (controller)

• Create EventDao.java

• Create and run unit tests

• Test via application as deployed locally to browser

Slide 63 of 113

Page 64: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Slide 64 of 113

Page 65: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Slide 65 of 113

Page 66: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Functionality: Show past events

• Create Event.java (includes hibernate mapping annotations)

• Create showEvents.jsp (the display page)

• Create showEvents.java (controller)

• Create EventDao.java

• Create and run unit tests

• Test via application as deployed locally to browser

Slide 66 of 113

Page 67: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Build and deploy applicationMaven build

jUnit tests pass

Tomcat web server deployment

Slide 67 of 113

Page 68: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Build and deploy the application

Slide 68 of 113

Page 69: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Slide 69 of 113

Page 70: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Slide 70 of 113

Page 71: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Slide 71 of 113

Page 72: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Slide 72 of 113

Page 73: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Build more functionality!Navigation via menu links

Logon security

Add event with attendees

Slide 73 of 113

Page 74: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Build event upload functionalitySneak preview…

Slide 74 of 113

Page 75: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Upload an event file

Slide 75 of 113

Page 76: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Slide 76 of 113

Page 77: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Slide 77 of 113

Page 78: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

We made it! Success!Basic application functionality is working!

Production-ready?

Fully tested?

Slide 78 of 113

Page 79: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Build out more enhancementsFuture enhancements placeholder page

Change look and feel with Bootstrap

Add web service for inspirational quotes by women in tech

Slide 79 of 113

Page 80: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

That was easy…

Slide 80 of 113

Page 81: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Outline

1% Qualifications of presenter

20% Introduction to software development field

20% What does it take to build a java web application? (fairly tech)

40% Demonstrate the process (most technical portion)

10% What other skills were assumed?

10% What proficiency required to begin work/identify as developer?

1% Resources for continued learning

Slide 81 of 113

Page 82: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Wait a minute…… wasn’t there more?

… weren’t there lots of other skills assumed and used during that process?

… languages, libraries, tools all jumbled together? How’d you do all that?

Slide 82 of 113

Page 83: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Wait a minute…Didn’t a bunch of other skills get used to build that?

• “Technical Sophistication1”

1 https://www.learnenough.com/command-line-tutorial#aside-technical_sophistication

Slide 83 of 113

Page 84: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

https://www.learnenough.com/command-line-tutorial#aside-technical_sophistication Slide 84 of 113

Page 85: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Wait a minute…Didn’t a bunch of other skills get used to build that?

• Technical Sophistication1

• SQL - structured query language

1 https://www.learnenough.com/command-line-tutorial#aside-technical_sophistication

Slide 85 of 113

Page 86: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Wait a minute…Didn’t a bunch of other skills get used to build that?

• Technical Sophistication1

• SQL – structured query language• JSP – java server pages

1 https://www.learnenough.com/command-line-tutorial#aside-technical_sophistication

Slide 86 of 113

Page 87: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Wait a minute…Didn’t a bunch of other skills get used to build that?

• Technical Sophistication1

• SQL – structured query language• JSP – java server pages• HTML – hyper text markup language

1 https://www.learnenough.com/command-line-tutorial#aside-technical_sophistication

Slide 87 of 113

Page 88: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Wait a minute…Didn’t a bunch of other skills get used to build that?

• Technical Sophistication1

• SQL – structured query language

• JSP – java server pages

• HTML – hyper text markup language

• Javascript, jQuery

1 https://www.learnenough.com/command-line-tutorial#aside-technical_sophistication

Slide 88 of 113

Page 89: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Wait a minute…Didn’t a bunch of other skills get used to build that?

• Technical Sophistication1

• SQL – structured query language

• JSP – java server pages

• HTML – hyper text markup language

• Javascript, jQuery

• CSS – cascading style sheets

• Bootstrap

1 https://www.learnenough.com/command-line-tutorial#aside-technical_sophistication

Slide 89 of 113

Page 90: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Wait a minute…Didn’t a bunch of other skills get used to build that?

• Technical Sophistication1

• SQL – structured query language

• JSP – java server pages

• HTML – hyper text markup language

• Javascript, jQuery

• CSS – cascading style sheets

• Bootstrap

• Hibernate – a library of code for easy access between java objects and database

1 https://www.learnenough.com/command-line-tutorial#aside-technical_sophistication

Slide 90 of 113

Page 91: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Outline

1% Qualifications of presenter

20% Introduction to software development field

20% What does it take to build a java web application? (fairly tech)

40% Demonstrate the process (most technical portion)

10% What other skills were assumed?

10% What proficiency required to begin work/identify as developer?

1% Resources for continued learning

Slide 91 of 113

Page 92: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

How proficient…… with the theory do I need to be before starting?

Slide 92 of 113

Page 93: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Dreyfus Competency Model

http://softwarecreation.org/images/2009/novice-expert.jpgSlide 93 of 113

Page 94: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Learning new technical skills

• Technical jargon can be overwhelming.

Slide 94 of 113

Page 95: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

• Technical jargon can be overwhelming.

• Learning a foreign language or culture is hard to do all at once.

Slide 95 of 113

Page 96: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

• Technical jargon can be overwhelming.

• Learning a foreign language or culture is hard to do all at once.

• Immersion is a good way to learn.

Slide 96 of 113

Page 97: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

• Technical jargon can be overwhelming.

• Learning a foreign language or culture is hard to do all at once.

• Immersion is a good way to learn.

• “I had to become comfortable with not knowing, not understanding.”

Slide 97 of 113

Page 98: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

• Technical jargon can be overwhelming.

• Learning a foreign language or culture is hard to do all at once.

• Immersion is a good way to learn.

• “I had to become comfortable with not knowing, not understanding.”

• “Flow state” and “beginner’s mind” are desirable1.• So is curiosity.

• So is knowing how you learn

1 http://csis.pace.edu/~grossman/dcs/XR4-PromiscuousPairing.pdf

Slide 98 of 113

Page 99: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Dunning-Kruger Effect1

• The more you know, the LESS competent you think you are.

• The less you know, the MORE competent you think you are.

• People are terrible judges of their own expertise.

1 https://en.wikipedia.org/wiki/Dunning-Kruger_effect

Slide 99 of 113

Page 100: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

http://softwarecreation.org/images/2009/novice-expert.jpg Slide 100 of 113

Page 101: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Software as a rapidly evolving field

• Email becomes common communication method

• Internet becomes available

• Google search engine widely adopted

• Online purchases become possible

• Smart phones become ubiquitous

• Companies struggle over how best to use technology

• Hacking and security become major issues

• Languages and tools proliferate

Slide 101 of 113

Page 102: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

How best to navigate through the options?

• Remain/become aware of technology trends

• Know if you like to be ‘cutting edge’ or ‘trailing edge’

• Find a employer match for your values and speed of change

• Always be learning.

• Always be on the lookout for your next growth areas.

• Listen to the experts when deciding what technologies are likely to endure (ThoughtWorks)

Slide 102 of 113

Page 103: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Thoughtworks Technology Radar• Updated every six months, searchable by topic

• Rings:• Adopt

• Trial

• Assess

• Hold

• Quadrants• Programming Languages and Frameworks

• Tools

• Platforms

• Techniques

Slide 103 of 113

Page 104: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Thoughtworks Technology Radar

https://www.thoughtworks.com/radar

Slide 104 of 113

Page 105: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Create your own radar

Slide 105 of 113

Page 106: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Have patience with the learning process

Slide 106 of 113

Page 107: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Writing software is great because…There’s always something to learn.

Slide 107 of 113

Page 108: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Writing software is great because…“If you can create technology, you can change the world.”

Susan Wojcicki, SVP, Google

Slide 108 of 113

Page 109: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Outline

1% Qualifications of presenter

20% Introduction to software development field

20% What does it take to build a java web application?

40% Demonstrate the process (most technical portion)

10% What other skills were assumed?

10% What proficiency required to begin work/identify as developer?

1% Resources for continued learning

Slide 109 of 113

Page 110: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Resources for continued learning(non-technical)

• Go: Put Your Strengths to Work by Marcus Buckingham

• Unlocking the Clubhouse by Allan Fisher and Jane Margolis

• Clean Code by Robert C. Martin

• The Clean Coder by Robert C. Martin

• The Passionate Programmer by Chad Fowler

• Books on becoming a better software developer:https://dbader.org/blog/my-favourite-books-about-programming

Slide 110 of 113

Page 111: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Resources for continued learning (technical)

• http://www.w3schools.com/

• https://www.learnenough.com/

• http://exercism.io/

• http://www.mkyong.com/

Slide 111 of 113

Page 112: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Links to download tools• MySql: https://dev.mysql.com/downloads/installer/

• mysql-installer-web-community

• IntelliJ (not free): https://www.jetbrains.com/idea/download/

• Eclipse: https://www.eclipse.org/downloads/?

• Java: https://java.com/en/download/

• Apache Tomcat: https://tomcat.apache.org/download-80.cgi

• Git: https://git-scm.com/downloads

• Bootstrap (just use CDN links): http://getbootstrap.com/getting-started/

• Hibernate (include in POM file): http://hibernate.org/orm/downloads/

Slide 112 of 113

Page 113: Becoming a full stack web developer - Codecinella · (What IS testing?) •Unit tests •Integration Tests •Functional Tests •Automated Tests •Manual Tests •User-interface

Thank you…for your time and attention

Slide 113 of 113