How to stop being a php developer and become a software engineer

Post on 14-Jul-2015

156 views 0 download

Transcript of How to stop being a php developer and become a software engineer

How to stop being a PHP developer and become a software engineer

MVK for PHP programmer

PHP

SQL

html / css

javascript

http

memcache, nginx, *nix, frameworks

Frameworks

Hipsters are coming

What if PHP6 will be fancy?

PHP 6

So what should I learn?

Berkeley University

Dreifus model of skill aquisition

novice

advanced beginner

competent

proficient

expert

GET vs POST

I have no idea (using “register_globals”)

$_GET vs $_POST

URLs vs forms

http methods

http request with headers

Step outside of PHP world

MATH

Have you seen my math teacher?

Discrete mathPretend there’s nothing between 1 and 0

Probability

Combinatorics

Optional math

Formal languages and automata

Number theory

Computational geometry

How to learn math?Practice

Data structures

array (real one)

list

dictionary (map, hash)

set

stack / queue

heap

tree

graph

Fancy data structures

skip lists

self-balancing trees

tries for compact string representation

b-trees

bloom filter

Learn python

This slide uses 25th frame to make you learn Python. Obey.

Algorithms

Big O notation

Sorting

Searching

Graphs and paths

Books & courses

Computer architecture

Integers and floats

year 2037

your math teacher was lying: 0.1 + 0.2 !== 0.3

Memory hierarchy

CPU, I/O, asm

Books & courses & curiosity

OS design

Real OS

Scheduler, processes, threads

Compiling vs VMs

Books

Computer networks

Physical and link layer

copper cables, optics

wi-fi, bluetooth, mobile

Network layer (IP)

Transport layer

TCP and UDP

Application layer

DNS, mail, http, RTP

CDNs, streaming

Computer networks

Network security

symmetric key

public/private key

certificates

digital signatures

MAC

Network security

Books & courses

MVK for software engineer

Math

Algorithms & DS

Hardware and architecture

OS design

Computer networks*

OOD

testing

tools

compilers

application architecture

etc.

New language every year

asm*

C

Java

python

Learn functional language

Be curious

Break things

Build things

Keep learning

Thank you