emarsys xp reggeli 2016.08.12
TRANSCRIPT
"THE 10000 HOUR RULE"Malcolm Gladwell: Outliers~5 years to master a specific skillPracticeLove your job
ACM COMPUTING CURRICULA● Algorithms and Complexity ● Architecture and Organization ● Computational Science ● Discrete Structures ● Graphics and Visualization ● Human-Computer Interaction ● Information Assurance and Security ● Information Management ● Intelligent Systems ● Networking and Communications ● Operating Systems ● Platform-based Development ● Parallel and Distributed Computing ● Programming Languages ● So�ware Development Fundamentals ● So�ware Engineering ● Systems Fundamentals ● Social Issues and Professional Practice
PROGRAMMER COMPETENCY MATRIX2^n (Level 0) n^2 (Level 1) n (Level 2) log(n) (Level 3)
datastructures
Doesn'tknow thedifferencebetweenArray andLinkedList
Able toexplain anduse Arrays,LinkedLists,Dictionariesetc inpracticalprogrammingtasks
Knows space and timetradeoffs of the basic datastructures, Arrays vsLinkedLists, Able toexplain how hashtablescan be implemented andcan handle collisions,Priority queues and waysto implement them etc.
Knowledge of advanceddata structures like B-trees, binomial andfibonacci heaps,AVL/Red Black trees,Splay Trees, Skip Lists,tries etc.
algorithms Unable tofind theaverage ofnumbers inan array (It'shard tobelieve butI'veinterviewedsuchcandidates)
Basic sorting,searchingand datastructuretraversal andretrievalalgorithms
Tree, Graph, simple greedyand divide and conqueralgorithms, is able tounderstand the relevanceof the levels of this matrix.
Able to recognize andcode dynamicprogramming solutions,good knowledge ofgraph algorithms, goodknowledge ofnumerical computationalgorithms, able toidentify NP problemsetc.
FIND YOUR WEAKNESSES1. Learn about IT Knowledge Areas2. Fill a competency matrix3. Create roadmap from the results
GOOGLE TECHNICAL DEVELOPMENT GUIDE1. Take an “Introduction to CS” course2. Code in (at least) ONE object-oriented programming language (C++, Java®, Python®)3. Learn other programming languages (JavaScript, CSS, HTML, Ruby, PHP, C, Perl, Shell script, Lisp,
Scheme)4. Test your code5. Develop logical reasoning and knowledge of discrete math6. Develop a strong understanding of algorithms and data structures7. Develop a strong knowledge of operating systems8. Learn UX design9. Learn artificial intelligence
10. Learn how to build compilers11. Learn cryptography12. Learn parallel programming13. Work on projects outside of the classroom14. Work on a small piece of a large system (codebase), read and understand existing code, track down
documentation, and debug15. Work on projects with other programmers16. Practice your algorithmic knowledge and coding skills17. Become a teaching assistant
TEACH YOURSELFFollow the trendsRead (a lot of)
so�ware engineering blogsSo�ware Engineering blogs (aggregated version)
technology booksPractice
KatasCodeWarsCodingDojo KataCatalogue
ChallengesProject EulerPython ChallengeRuby QuizCodinGame
Pet projects
THE ENDCreated by / / [ ] Milán Unicsovics @thesn4pdragon thesnapdragon
LINKShttps://www.amazon.com/Outliers-Story-Success-Malcolm-Gladwell/dp/0316017930http://www.acm.org/education/curricula-recommendationshttp://www.starling-so�ware.com/employment/programmer-competency-matrix.htmlhttps://www.google.com/about/careers/students/guide-to-technical-development.htmlhttp://www.gartner.com/newsroom/id/3114217http://thesnapdragon.tk/rsshttps://www.codewars.comhttp://codingdojo.org/cgi-bin/index.pl?KataCataloguehttps://projecteuler.nethttp://www.pythonchallenge.comhttp://rubyquiz.com/https://www.codingame.com