SlideShare a Scribd company logo
1 of 44
Download to read offline
On Being a Professional
Software Developer

Anton Kirillov
About Author
antonkirillov@
akirillov@
architect@
Ph.D. in CompSci

Computer Scientist, Distributed Systems Architect and Passionate Programmer
Agenda
What is this talk about
● Developers’ Essence
● Computer Science
● Polyglot Programming
● Evolution
What is this talk not about
● Agile
● Soft Skills
● How to Sell ABC to XYZ
Software Developer
A person concerned with facets of the software
development process. Their work includes
researching, designing, implementing, and
testing software. A software developer may
take part in design, computer programming,
or software project management. They may
contribute to the overview of the project on the
application level rather than component-level or
individual programming tasks.
Wikipedia
Software Engineering
The required techniques of effective reasoning
are pretty formal, but as long as programming
is done by people that don't master them, the
software crisis will remain with us and will be
considered an incurable disease. And you
know what incurable diseases do: they invite
the quacks and charlatans in, who in this case
take the form of Software Engineering gurus.
Dijkstra (2000) "Answers to questions from students of Software Engineering"
Beauty is more important in computing than
anywhere else in technology because software is
so complicated. Beauty is the ultimate defense
against complexity.
David Gelernter, “Machine Beauty: Elegance and the Heart of Technology”
Programming
We have seen that computer programming is an art,
because it applies accumulated knowledge to the world,
because it requires skill and ingenuity, and especially
because it produces objects of beauty. A programmer who
subconsciously views himself as an artist will enjoy what he
does and will do it better.
D. Knuth, Computer Programming as an Art (1974)
Programmers’ Competency Matrix
What’s in the Market
Market Requires Tools not Skills
Toolset is Legacy
“I suppose it is tempting, if the only tool you
have is a hammer, to treat everything as if it
were a nail”
― Abraham Maslow
“The tools we use have a profound (and
devious!) influence on our thinking habits, and,
therefore, on our thinking abilities”
― Edward Dijkstra
Skillset
Math & Abstraction
The effective exploitation of his powers of abstraction must
be regarded as one of the most vital activities of a
competent programmer.
E.W. Dijkstra, The Humble Programmer(1972)

Abstraction in mathematics is the process of extracting the
underlying essence of a mathematical concept, removing
any dependence on real world objects with which it might
originally have been connected, and generalizing it so that
it has wider applications or matching among other abstract
descriptions of equivalent phenomena.
Abstraction in CompSci
● Languages:
● OOP
● Functional
● Modern Lisps
● Control flow
● Abstract Data Types
● Lambda Abstraction
● Layered Architecture
Abstraction Principle
Each significant piece of functionality in a
program should be implemented in just one
place in the source code. Where similar
functions are carried out by distinct pieces of
code, it is generally beneficial to combine them
into one by abstracting out the varying parts.
Benjamin C. Pierce in Types and Programming Languages (2002)
Why Math
● Understanding function convexity very deeply
● Using induction to prove a recursive algorithm
● Formal correctness proofs
● DFAs, NFAs, Turing Machines, and theoretical computation in
general
● It makes a lot computer science concepts easier
● Specific concepts applicable to computer science are covered
arguably more deeply by mathematics
● Diversity of paradigms
● Precision and skepticism
● Math people are really smart =)
(Very) Applied Mathematics
● (Pure) Functions and State Machines ->
Stateful/Stateless Services Models
● HOF -> DI/IoC
● Set Theory -> SQL Joins
● Probability Theory -> Load Balancing,
Probabilistic Data Structures
Comp Sci
Theoretical Computer Science
Theoretical Computer Science
Applied Computer Science (AI)
Applied CS (Engineering)
Applied Computer Science
(Computational & Informational)
Data Structures & Algorithms
Use Cases
Why Data Structures & Algorithms
●

●

●

●

●

Queues:

○ Any Queueing processes
○ Distributed Persistent Queues for Event Processing
Bloom filters:
■ Used by Cassandra to check which SSTables mostly contains the key
■ Hbase also uses it to optimize the reads
Trees:
○ KV Database designing
○ Creating file system (S-Tree in HDFS)
○ Suffix tree: Genomic sequencing
○ Zoology: Maintaining the structures of the entire animal & plant kingdom.
○ Social Networks : Establishing relations between users based on some key
B-Trees (Binary Trees):
○ E-commerce : while accessing unique keys. B-Trees balanced multi-way
search tree of order N.
○ Searching : Searching quickly for a given element
Skip Lists:
● Implementation of ordered sets - Redis datastore
Single Example: Graphs
●

Search (PageRank)

●

The Facebook news feed & Facebook Graph Search.

●

Google Navigation and Google Directions on top of Google Maps uses some
very efficient planar graph shortest path algorithms.

●

Compilers use graph traversals to find code dependencies.

●

Graph coloring algorithms are used when optimizing the code for parallel uses of
the CPU registers.

●

CPU layout design problems are modeled as graph problems.

●

Memory garbage collection strategies may use graph traversals.

●

Inventory allocation in web advertising can be written as a network flow problem.

●

Data replication problems frequently use minimal spanning tree algorithms to
keep the bandwidth use down.

●

Most big data processing pipelines involve a series of interdependent steps that
can be modeled as a directed acyclic graph.
Programming Languages
Programming Languages

About the use of language: it is impossible to
sharpen a pencil with a blunt axe. It is equally
vain to try to do it with ten blunt axes instead.
E.W. Dijkstra, How do we tell truths that might hurt?(1975)
Why Polyglot Programming Matters
● Most interesting open-source projects are in different
language than yours (Storm, Finagle)
● Lay back and relax in Turing’ Tarpit
● Concurrency Idioms (Shared Memory, Actors, STM)
● Write once - run anywhere! JVM is mature enough to
host new languages (and they appear!)
● We don’t need most of GoF Patterns in FP!
● There are a complete frameworks build around lack of
some features in core language (DI containers)
Why Polyglot Programming Matters
● Another level of abstraction
● You can borrow design ideas from other
languages (e.g. I am a lambda junkie)
● Different understanding of things (address
arithmetic, OOP, HOF, Monads etc.)
● Effective reasoning (map and reduce)
● Idiomatic code: ceremony vs. conciseness

Abstract away from language!
Language Landscape is Changing
FORTRAN —"the infantile disorder"—, by now nearly 20 years old, is
hopelessly inadequate for whatever computer application you have in mind
today: it is now too clumsy, too risky, and too expensive to use.
PL/I —"the fatal disease"— belongs more to the problem set than to the
solution set.
It is practically impossible to teach good programming to students that have
had a prior exposure to BASIC: as potential programmers they are mentally
mutilated beyond hope of regeneration.
The use of COBOL cripples the mind; its teaching should, therefore, be
regarded as a criminal offence.
APL is a mistake, carried through to perfection. It is the language of the
future for the programming techniques of the past: it creates a new generation
of coding bums.
Code Samples
FizzBuzz: Java
for (int i = 0; i < 100; i++){
if ((i % 15) == 0){
System.out.println("FizzBuzz");
} else if ((i % 3) == 0){
System.out.println("Fizz");
} else if ((i % 5) == 0){
System.out.println("Buzz");
} else {
System.out.println(i);
}
}
FizzBuzz: Java

for (int i = 0; i < 100; System.out.println(++i %
3 == 0 ? i % 5 == 0 ? "Fizzbuzz" : "Fizz" : i % 5
== 0 ? "Buzz" : i));
FizzBuzz: Scala
(1 to 100) map { x =>
(x % 3, x % 5) match {
case (0,0) => "FizzBuzz"
case (0,_) => "Fizz"
case (_,0) => "Buzz"
case _ => x toString
}
} foreach println
FizzBuzz: Clojure
(use '[match.core :only (match)])
(doseq [n (range 1 101)]
(println (match [(mod n 3) (mod n 5)]
[0 0] "FizzBuzz"
[0 _] "Fizz"
[_ 0] "Buzz"
:else n)))
FizzBuzz: Enterprise Edition
EnterpriseQualityCoding/FizzBuzzEnterpriseEdition
LoopComponentFactory myLoopComponentFactory = new LoopComponentFactory();
LoopInitializer myLoopInitializer = myLoopComponentFactory.createLoopInitializer();
LoopCondition myLoopCondition = myLoopComponentFactory.createLoopCondition();
LoopStep myLoopStep = myLoopComponentFactory.createLoopStep();
IsEvenlyDivisibleStrategyFactory myFizzStrategyFactory = new FizzStrategyFactory();
IsEvenlyDivisibleStrategy myFizzStrategy = myFizzStrategyFactory.createIsEvenlyDivisibleStrategy();
StringPrinterFactory myFizzStringPrinterFactory = new FizzStringPrinterFactory();
StringPrinter myFizzStringPrinter = myFizzStringPrinterFactory.createStringPrinter();
IsEvenlyDivisibleStrategyFactory myBuzzStrategyFactory = new BuzzStrategyFactory();
IsEvenlyDivisibleStrategy myBuzzStrategy = myBuzzStrategyFactory.createIsEvenlyDivisibleStrategy();
StringPrinterFactory myBuzzStringPrinterFactory = new BuzzStringPrinterFactory();
StringPrinter myBuzzStringPrinter = myBuzzStringPrinterFactory.createStringPrinter();
IsEvenlyDivisibleStrategyFactory myNoFizzNoBuzzStrategyFactory = new NoFizzNoBuzzStrategyFactory();
…..
FizzBuzz: Enterprise Edition
EnterpriseQualityCoding/FizzBuzzEnterpriseEdition
Evolve!
Evolve!
● Wiki that!
● Build a robot!
● Attack a book!
● Compete!
● Toy projects!
● Open-source!
● Coursera?
● Hire people smarter than You!
Enjoy the Community!
● Attend conferences, check!
● Attend meetups in Your city
● Share Your knowledge, sync with community!

Ads =)
Recap
● Computer programming is the core competency
● Don’t depend on market
● Abstraction as main tool
● Choose field, not framework
● Be polyglot
● Don’t fear to explore
● Evolve
First they ignore you, then they laugh at
you, then they fight you, then you win
Mahatma Gandhi
{}
thisRoom getPeople foreach( person => {
shakeHand(person)
thanks(person)
}
> ~questions?

More Related Content

What's hot

Deep Learning with MXNet - Dmitry Larko
Deep Learning with MXNet - Dmitry LarkoDeep Learning with MXNet - Dmitry Larko
Deep Learning with MXNet - Dmitry LarkoSri Ambati
 
The Factoring Dead: Preparing for the Cryptopocalypse
The Factoring Dead: Preparing for the CryptopocalypseThe Factoring Dead: Preparing for the Cryptopocalypse
The Factoring Dead: Preparing for the CryptopocalypseAlex Stamos
 
10 more lessons learned from building Machine Learning systems
10 more lessons learned from building Machine Learning systems10 more lessons learned from building Machine Learning systems
10 more lessons learned from building Machine Learning systemsXavier Amatriain
 
Self driving computers active learning workflows with human interpretable ve...
Self driving computers  active learning workflows with human interpretable ve...Self driving computers  active learning workflows with human interpretable ve...
Self driving computers active learning workflows with human interpretable ve...Adam Gibson
 
Deep learning on Hadoop/Spark -NextML
Deep learning on Hadoop/Spark -NextMLDeep learning on Hadoop/Spark -NextML
Deep learning on Hadoop/Spark -NextMLAdam Gibson
 
Introduction To TensorFlow
Introduction To TensorFlowIntroduction To TensorFlow
Introduction To TensorFlowSpotle.ai
 
Josh Patterson, Advisor, Skymind – Deep learning for Industry at MLconf ATL 2016
Josh Patterson, Advisor, Skymind – Deep learning for Industry at MLconf ATL 2016Josh Patterson, Advisor, Skymind – Deep learning for Industry at MLconf ATL 2016
Josh Patterson, Advisor, Skymind – Deep learning for Industry at MLconf ATL 2016MLconf
 
Mentoring Session with Innovesia: Advance Robotics
Mentoring Session with Innovesia: Advance RoboticsMentoring Session with Innovesia: Advance Robotics
Mentoring Session with Innovesia: Advance RoboticsDony Riyanto
 
High Performance Machine Learning in R with H2O
High Performance Machine Learning in R with H2OHigh Performance Machine Learning in R with H2O
High Performance Machine Learning in R with H2OSri Ambati
 
Anomaly detection in deep learning (Updated) English
Anomaly detection in deep learning (Updated) EnglishAnomaly detection in deep learning (Updated) English
Anomaly detection in deep learning (Updated) EnglishAdam Gibson
 
Jean-François Puget, Distinguished Engineer, Machine Learning and Optimizatio...
Jean-François Puget, Distinguished Engineer, Machine Learning and Optimizatio...Jean-François Puget, Distinguished Engineer, Machine Learning and Optimizatio...
Jean-François Puget, Distinguished Engineer, Machine Learning and Optimizatio...MLconf
 
Thinking in parallel ab tuladev
Thinking in parallel ab tuladevThinking in parallel ab tuladev
Thinking in parallel ab tuladevPavel Tsukanov
 
Data Science Accelerator Program
Data Science Accelerator ProgramData Science Accelerator Program
Data Science Accelerator ProgramGoDataDriven
 
First steps with Keras 2: A tutorial with Examples
First steps with Keras 2: A tutorial with ExamplesFirst steps with Keras 2: A tutorial with Examples
First steps with Keras 2: A tutorial with ExamplesFelipe
 
A Tale of Three Deep Learning Frameworks: TensorFlow, Keras, & PyTorch with B...
A Tale of Three Deep Learning Frameworks: TensorFlow, Keras, & PyTorch with B...A Tale of Three Deep Learning Frameworks: TensorFlow, Keras, & PyTorch with B...
A Tale of Three Deep Learning Frameworks: TensorFlow, Keras, & PyTorch with B...Databricks
 
Hadoop Summit 2014 - San Jose - Introduction to Deep Learning on Hadoop
Hadoop Summit 2014 - San Jose - Introduction to Deep Learning on HadoopHadoop Summit 2014 - San Jose - Introduction to Deep Learning on Hadoop
Hadoop Summit 2014 - San Jose - Introduction to Deep Learning on HadoopJosh Patterson
 
Ehtsham Elahi, Senior Research Engineer, Personalization Science and Engineer...
Ehtsham Elahi, Senior Research Engineer, Personalization Science and Engineer...Ehtsham Elahi, Senior Research Engineer, Personalization Science and Engineer...
Ehtsham Elahi, Senior Research Engineer, Personalization Science and Engineer...MLconf
 
Deeplearning on Hadoop @OSCON 2014
Deeplearning on Hadoop @OSCON 2014Deeplearning on Hadoop @OSCON 2014
Deeplearning on Hadoop @OSCON 2014Adam Gibson
 
Matrix Factorizations at Scale: a Comparison of Scientific Data Analytics on ...
Matrix Factorizations at Scale: a Comparison of Scientific Data Analytics on ...Matrix Factorizations at Scale: a Comparison of Scientific Data Analytics on ...
Matrix Factorizations at Scale: a Comparison of Scientific Data Analytics on ...Databricks
 

What's hot (20)

Deep Learning with MXNet - Dmitry Larko
Deep Learning with MXNet - Dmitry LarkoDeep Learning with MXNet - Dmitry Larko
Deep Learning with MXNet - Dmitry Larko
 
The Factoring Dead: Preparing for the Cryptopocalypse
The Factoring Dead: Preparing for the CryptopocalypseThe Factoring Dead: Preparing for the Cryptopocalypse
The Factoring Dead: Preparing for the Cryptopocalypse
 
10 more lessons learned from building Machine Learning systems
10 more lessons learned from building Machine Learning systems10 more lessons learned from building Machine Learning systems
10 more lessons learned from building Machine Learning systems
 
Self driving computers active learning workflows with human interpretable ve...
Self driving computers  active learning workflows with human interpretable ve...Self driving computers  active learning workflows with human interpretable ve...
Self driving computers active learning workflows with human interpretable ve...
 
Deep learning on Hadoop/Spark -NextML
Deep learning on Hadoop/Spark -NextMLDeep learning on Hadoop/Spark -NextML
Deep learning on Hadoop/Spark -NextML
 
Introduction To TensorFlow
Introduction To TensorFlowIntroduction To TensorFlow
Introduction To TensorFlow
 
Josh Patterson, Advisor, Skymind – Deep learning for Industry at MLconf ATL 2016
Josh Patterson, Advisor, Skymind – Deep learning for Industry at MLconf ATL 2016Josh Patterson, Advisor, Skymind – Deep learning for Industry at MLconf ATL 2016
Josh Patterson, Advisor, Skymind – Deep learning for Industry at MLconf ATL 2016
 
Mentoring Session with Innovesia: Advance Robotics
Mentoring Session with Innovesia: Advance RoboticsMentoring Session with Innovesia: Advance Robotics
Mentoring Session with Innovesia: Advance Robotics
 
High Performance Machine Learning in R with H2O
High Performance Machine Learning in R with H2OHigh Performance Machine Learning in R with H2O
High Performance Machine Learning in R with H2O
 
Anomaly detection in deep learning (Updated) English
Anomaly detection in deep learning (Updated) EnglishAnomaly detection in deep learning (Updated) English
Anomaly detection in deep learning (Updated) English
 
How To Do A Project
How To Do A ProjectHow To Do A Project
How To Do A Project
 
Jean-François Puget, Distinguished Engineer, Machine Learning and Optimizatio...
Jean-François Puget, Distinguished Engineer, Machine Learning and Optimizatio...Jean-François Puget, Distinguished Engineer, Machine Learning and Optimizatio...
Jean-François Puget, Distinguished Engineer, Machine Learning and Optimizatio...
 
Thinking in parallel ab tuladev
Thinking in parallel ab tuladevThinking in parallel ab tuladev
Thinking in parallel ab tuladev
 
Data Science Accelerator Program
Data Science Accelerator ProgramData Science Accelerator Program
Data Science Accelerator Program
 
First steps with Keras 2: A tutorial with Examples
First steps with Keras 2: A tutorial with ExamplesFirst steps with Keras 2: A tutorial with Examples
First steps with Keras 2: A tutorial with Examples
 
A Tale of Three Deep Learning Frameworks: TensorFlow, Keras, & PyTorch with B...
A Tale of Three Deep Learning Frameworks: TensorFlow, Keras, & PyTorch with B...A Tale of Three Deep Learning Frameworks: TensorFlow, Keras, & PyTorch with B...
A Tale of Three Deep Learning Frameworks: TensorFlow, Keras, & PyTorch with B...
 
Hadoop Summit 2014 - San Jose - Introduction to Deep Learning on Hadoop
Hadoop Summit 2014 - San Jose - Introduction to Deep Learning on HadoopHadoop Summit 2014 - San Jose - Introduction to Deep Learning on Hadoop
Hadoop Summit 2014 - San Jose - Introduction to Deep Learning on Hadoop
 
Ehtsham Elahi, Senior Research Engineer, Personalization Science and Engineer...
Ehtsham Elahi, Senior Research Engineer, Personalization Science and Engineer...Ehtsham Elahi, Senior Research Engineer, Personalization Science and Engineer...
Ehtsham Elahi, Senior Research Engineer, Personalization Science and Engineer...
 
Deeplearning on Hadoop @OSCON 2014
Deeplearning on Hadoop @OSCON 2014Deeplearning on Hadoop @OSCON 2014
Deeplearning on Hadoop @OSCON 2014
 
Matrix Factorizations at Scale: a Comparison of Scientific Data Analytics on ...
Matrix Factorizations at Scale: a Comparison of Scientific Data Analytics on ...Matrix Factorizations at Scale: a Comparison of Scientific Data Analytics on ...
Matrix Factorizations at Scale: a Comparison of Scientific Data Analytics on ...
 

Viewers also liked

F*cking with fizz buzz
F*cking with fizz buzzF*cking with fizz buzz
F*cking with fizz buzzScott Windsor
 
ConnectM Corporate Overview (jan 2014)
ConnectM Corporate Overview (jan 2014)ConnectM Corporate Overview (jan 2014)
ConnectM Corporate Overview (jan 2014)Abhijay Sisodia
 
IT Competence Framework In Shell SFIA
IT Competence Framework In Shell SFIAIT Competence Framework In Shell SFIA
IT Competence Framework In Shell SFIASFIA User Forum
 
IT Skills Capability System
IT Skills Capability SystemIT Skills Capability System
IT Skills Capability SystemPenny Baker
 
Unified Competency Framework
Unified Competency Framework Unified Competency Framework
Unified Competency Framework Vishwanath Ramdas
 
Sales Methodology for B2B SaaS Companies
Sales Methodology for B2B SaaS CompaniesSales Methodology for B2B SaaS Companies
Sales Methodology for B2B SaaS CompaniesGuillaume Lerouge
 

Viewers also liked (8)

Traits of a Good Engineer
Traits of a Good EngineerTraits of a Good Engineer
Traits of a Good Engineer
 
F*cking with fizz buzz
F*cking with fizz buzzF*cking with fizz buzz
F*cking with fizz buzz
 
ConnectM Corporate Overview (jan 2014)
ConnectM Corporate Overview (jan 2014)ConnectM Corporate Overview (jan 2014)
ConnectM Corporate Overview (jan 2014)
 
IT Competence Framework In Shell SFIA
IT Competence Framework In Shell SFIAIT Competence Framework In Shell SFIA
IT Competence Framework In Shell SFIA
 
IT Skills Capability System
IT Skills Capability SystemIT Skills Capability System
IT Skills Capability System
 
Unified Competency Framework
Unified Competency Framework Unified Competency Framework
Unified Competency Framework
 
Sales Methodology for B2B SaaS Companies
Sales Methodology for B2B SaaS CompaniesSales Methodology for B2B SaaS Companies
Sales Methodology for B2B SaaS Companies
 
Competency frameworks
Competency frameworksCompetency frameworks
Competency frameworks
 

Similar to On being a professional software developer

Антон Кириллов, ZeptoLab
Антон Кириллов, ZeptoLabАнтон Кириллов, ZeptoLab
Антон Кириллов, ZeptoLabDiana Dymolazova
 
Computing with Directed Labeled Graphs
Computing with Directed Labeled GraphsComputing with Directed Labeled Graphs
Computing with Directed Labeled GraphsMarko Rodriguez
 
Brownfield Domain Driven Design
Brownfield Domain Driven DesignBrownfield Domain Driven Design
Brownfield Domain Driven DesignNicolò Pignatelli
 
Emarsys XP reggeli 2016.08.12.
Emarsys XP reggeli 2016.08.12.Emarsys XP reggeli 2016.08.12.
Emarsys XP reggeli 2016.08.12.Milán Unicsovics
 
Are High Level Programming Languages for Multicore and Safety Critical Conver...
Are High Level Programming Languages for Multicore and Safety Critical Conver...Are High Level Programming Languages for Multicore and Safety Critical Conver...
Are High Level Programming Languages for Multicore and Safety Critical Conver...InfinIT - Innovationsnetværket for it
 
Practical functional programming in JavaScript for the non-mathematician
Practical functional programming in JavaScript for the non-mathematicianPractical functional programming in JavaScript for the non-mathematician
Practical functional programming in JavaScript for the non-mathematicianIan Thomas
 
FP vs OOP : Design Methodology by Harshad Nawathe
FP vs OOP : Design Methodology by Harshad NawatheFP vs OOP : Design Methodology by Harshad Nawathe
FP vs OOP : Design Methodology by Harshad NawatheChandulal Kavar
 
GATE, HLT and Machine Learning, Sheffield, July 2003
GATE, HLT and Machine Learning, Sheffield, July 2003GATE, HLT and Machine Learning, Sheffield, July 2003
GATE, HLT and Machine Learning, Sheffield, July 2003butest
 
Programing paradigm &amp; implementation
Programing paradigm &amp; implementationPrograming paradigm &amp; implementation
Programing paradigm &amp; implementationBilal Maqbool ツ
 
The Apache Solr Semantic Knowledge Graph
The Apache Solr Semantic Knowledge GraphThe Apache Solr Semantic Knowledge Graph
The Apache Solr Semantic Knowledge GraphTrey Grainger
 
Scales02WhatProgrammingLanguagesShouldWeTeachOurUndergraduates
Scales02WhatProgrammingLanguagesShouldWeTeachOurUndergraduatesScales02WhatProgrammingLanguagesShouldWeTeachOurUndergraduates
Scales02WhatProgrammingLanguagesShouldWeTeachOurUndergraduatesHans Ecke
 
Analyzing Big Data's Weakest Link (hint: it might be you)
Analyzing Big Data's Weakest Link  (hint: it might be you)Analyzing Big Data's Weakest Link  (hint: it might be you)
Analyzing Big Data's Weakest Link (hint: it might be you)HPCC Systems
 
Themes for graduation projects 2010
Themes for graduation projects   2010Themes for graduation projects   2010
Themes for graduation projects 2010mohamedsamyali
 
Big Data: the weakest link
Big Data: the weakest linkBig Data: the weakest link
Big Data: the weakest linkCS, NcState
 
Sudipta_Mukherjee_Resume_APR_2023.pdf
Sudipta_Mukherjee_Resume_APR_2023.pdfSudipta_Mukherjee_Resume_APR_2023.pdf
Sudipta_Mukherjee_Resume_APR_2023.pdfsudipto801
 

Similar to On being a professional software developer (20)

Антон Кириллов, ZeptoLab
Антон Кириллов, ZeptoLabАнтон Кириллов, ZeptoLab
Антон Кириллов, ZeptoLab
 
Learning to code in 2020
Learning to code in 2020Learning to code in 2020
Learning to code in 2020
 
Computing with Directed Labeled Graphs
Computing with Directed Labeled GraphsComputing with Directed Labeled Graphs
Computing with Directed Labeled Graphs
 
Persian MNIST in 5 Minutes
Persian MNIST in 5 MinutesPersian MNIST in 5 Minutes
Persian MNIST in 5 Minutes
 
Lec 1 25_jul13
Lec 1 25_jul13Lec 1 25_jul13
Lec 1 25_jul13
 
Brownfield Domain Driven Design
Brownfield Domain Driven DesignBrownfield Domain Driven Design
Brownfield Domain Driven Design
 
Emarsys XP reggeli 2016.08.12.
Emarsys XP reggeli 2016.08.12.Emarsys XP reggeli 2016.08.12.
Emarsys XP reggeli 2016.08.12.
 
Are High Level Programming Languages for Multicore and Safety Critical Conver...
Are High Level Programming Languages for Multicore and Safety Critical Conver...Are High Level Programming Languages for Multicore and Safety Critical Conver...
Are High Level Programming Languages for Multicore and Safety Critical Conver...
 
Practical functional programming in JavaScript for the non-mathematician
Practical functional programming in JavaScript for the non-mathematicianPractical functional programming in JavaScript for the non-mathematician
Practical functional programming in JavaScript for the non-mathematician
 
Paradigms
ParadigmsParadigms
Paradigms
 
FP vs OOP : Design Methodology by Harshad Nawathe
FP vs OOP : Design Methodology by Harshad NawatheFP vs OOP : Design Methodology by Harshad Nawathe
FP vs OOP : Design Methodology by Harshad Nawathe
 
GATE, HLT and Machine Learning, Sheffield, July 2003
GATE, HLT and Machine Learning, Sheffield, July 2003GATE, HLT and Machine Learning, Sheffield, July 2003
GATE, HLT and Machine Learning, Sheffield, July 2003
 
Programing paradigm &amp; implementation
Programing paradigm &amp; implementationPrograming paradigm &amp; implementation
Programing paradigm &amp; implementation
 
The Apache Solr Semantic Knowledge Graph
The Apache Solr Semantic Knowledge GraphThe Apache Solr Semantic Knowledge Graph
The Apache Solr Semantic Knowledge Graph
 
Scales02WhatProgrammingLanguagesShouldWeTeachOurUndergraduates
Scales02WhatProgrammingLanguagesShouldWeTeachOurUndergraduatesScales02WhatProgrammingLanguagesShouldWeTeachOurUndergraduates
Scales02WhatProgrammingLanguagesShouldWeTeachOurUndergraduates
 
IN4308 1
IN4308 1IN4308 1
IN4308 1
 
Analyzing Big Data's Weakest Link (hint: it might be you)
Analyzing Big Data's Weakest Link  (hint: it might be you)Analyzing Big Data's Weakest Link  (hint: it might be you)
Analyzing Big Data's Weakest Link (hint: it might be you)
 
Themes for graduation projects 2010
Themes for graduation projects   2010Themes for graduation projects   2010
Themes for graduation projects 2010
 
Big Data: the weakest link
Big Data: the weakest linkBig Data: the weakest link
Big Data: the weakest link
 
Sudipta_Mukherjee_Resume_APR_2023.pdf
Sudipta_Mukherjee_Resume_APR_2023.pdfSudipta_Mukherjee_Resume_APR_2023.pdf
Sudipta_Mukherjee_Resume_APR_2023.pdf
 

Recently uploaded

Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 

Recently uploaded (20)

Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 

On being a professional software developer

  • 1. On Being a Professional Software Developer Anton Kirillov
  • 2. About Author antonkirillov@ akirillov@ architect@ Ph.D. in CompSci Computer Scientist, Distributed Systems Architect and Passionate Programmer
  • 3. Agenda What is this talk about ● Developers’ Essence ● Computer Science ● Polyglot Programming ● Evolution What is this talk not about ● Agile ● Soft Skills ● How to Sell ABC to XYZ
  • 4. Software Developer A person concerned with facets of the software development process. Their work includes researching, designing, implementing, and testing software. A software developer may take part in design, computer programming, or software project management. They may contribute to the overview of the project on the application level rather than component-level or individual programming tasks. Wikipedia
  • 5. Software Engineering The required techniques of effective reasoning are pretty formal, but as long as programming is done by people that don't master them, the software crisis will remain with us and will be considered an incurable disease. And you know what incurable diseases do: they invite the quacks and charlatans in, who in this case take the form of Software Engineering gurus. Dijkstra (2000) "Answers to questions from students of Software Engineering"
  • 6. Beauty is more important in computing than anywhere else in technology because software is so complicated. Beauty is the ultimate defense against complexity. David Gelernter, “Machine Beauty: Elegance and the Heart of Technology”
  • 7. Programming We have seen that computer programming is an art, because it applies accumulated knowledge to the world, because it requires skill and ingenuity, and especially because it produces objects of beauty. A programmer who subconsciously views himself as an artist will enjoy what he does and will do it better. D. Knuth, Computer Programming as an Art (1974)
  • 10. Market Requires Tools not Skills
  • 11. Toolset is Legacy “I suppose it is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail” ― Abraham Maslow “The tools we use have a profound (and devious!) influence on our thinking habits, and, therefore, on our thinking abilities” ― Edward Dijkstra
  • 13. Math & Abstraction The effective exploitation of his powers of abstraction must be regarded as one of the most vital activities of a competent programmer. E.W. Dijkstra, The Humble Programmer(1972) Abstraction in mathematics is the process of extracting the underlying essence of a mathematical concept, removing any dependence on real world objects with which it might originally have been connected, and generalizing it so that it has wider applications or matching among other abstract descriptions of equivalent phenomena.
  • 14. Abstraction in CompSci ● Languages: ● OOP ● Functional ● Modern Lisps ● Control flow ● Abstract Data Types ● Lambda Abstraction ● Layered Architecture
  • 15. Abstraction Principle Each significant piece of functionality in a program should be implemented in just one place in the source code. Where similar functions are carried out by distinct pieces of code, it is generally beneficial to combine them into one by abstracting out the varying parts. Benjamin C. Pierce in Types and Programming Languages (2002)
  • 16. Why Math ● Understanding function convexity very deeply ● Using induction to prove a recursive algorithm ● Formal correctness proofs ● DFAs, NFAs, Turing Machines, and theoretical computation in general ● It makes a lot computer science concepts easier ● Specific concepts applicable to computer science are covered arguably more deeply by mathematics ● Diversity of paradigms ● Precision and skepticism ● Math people are really smart =)
  • 17. (Very) Applied Mathematics ● (Pure) Functions and State Machines -> Stateful/Stateless Services Models ● HOF -> DI/IoC ● Set Theory -> SQL Joins ● Probability Theory -> Load Balancing, Probabilistic Data Structures
  • 24. Data Structures & Algorithms Use Cases
  • 25. Why Data Structures & Algorithms ● ● ● ● ● Queues: ○ Any Queueing processes ○ Distributed Persistent Queues for Event Processing Bloom filters: ■ Used by Cassandra to check which SSTables mostly contains the key ■ Hbase also uses it to optimize the reads Trees: ○ KV Database designing ○ Creating file system (S-Tree in HDFS) ○ Suffix tree: Genomic sequencing ○ Zoology: Maintaining the structures of the entire animal & plant kingdom. ○ Social Networks : Establishing relations between users based on some key B-Trees (Binary Trees): ○ E-commerce : while accessing unique keys. B-Trees balanced multi-way search tree of order N. ○ Searching : Searching quickly for a given element Skip Lists: ● Implementation of ordered sets - Redis datastore
  • 26. Single Example: Graphs ● Search (PageRank) ● The Facebook news feed & Facebook Graph Search. ● Google Navigation and Google Directions on top of Google Maps uses some very efficient planar graph shortest path algorithms. ● Compilers use graph traversals to find code dependencies. ● Graph coloring algorithms are used when optimizing the code for parallel uses of the CPU registers. ● CPU layout design problems are modeled as graph problems. ● Memory garbage collection strategies may use graph traversals. ● Inventory allocation in web advertising can be written as a network flow problem. ● Data replication problems frequently use minimal spanning tree algorithms to keep the bandwidth use down. ● Most big data processing pipelines involve a series of interdependent steps that can be modeled as a directed acyclic graph.
  • 28. Programming Languages About the use of language: it is impossible to sharpen a pencil with a blunt axe. It is equally vain to try to do it with ten blunt axes instead. E.W. Dijkstra, How do we tell truths that might hurt?(1975)
  • 29. Why Polyglot Programming Matters ● Most interesting open-source projects are in different language than yours (Storm, Finagle) ● Lay back and relax in Turing’ Tarpit ● Concurrency Idioms (Shared Memory, Actors, STM) ● Write once - run anywhere! JVM is mature enough to host new languages (and they appear!) ● We don’t need most of GoF Patterns in FP! ● There are a complete frameworks build around lack of some features in core language (DI containers)
  • 30. Why Polyglot Programming Matters ● Another level of abstraction ● You can borrow design ideas from other languages (e.g. I am a lambda junkie) ● Different understanding of things (address arithmetic, OOP, HOF, Monads etc.) ● Effective reasoning (map and reduce) ● Idiomatic code: ceremony vs. conciseness Abstract away from language!
  • 31. Language Landscape is Changing FORTRAN —"the infantile disorder"—, by now nearly 20 years old, is hopelessly inadequate for whatever computer application you have in mind today: it is now too clumsy, too risky, and too expensive to use. PL/I —"the fatal disease"— belongs more to the problem set than to the solution set. It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration. The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offence. APL is a mistake, carried through to perfection. It is the language of the future for the programming techniques of the past: it creates a new generation of coding bums.
  • 33. FizzBuzz: Java for (int i = 0; i < 100; i++){ if ((i % 15) == 0){ System.out.println("FizzBuzz"); } else if ((i % 3) == 0){ System.out.println("Fizz"); } else if ((i % 5) == 0){ System.out.println("Buzz"); } else { System.out.println(i); } }
  • 34. FizzBuzz: Java for (int i = 0; i < 100; System.out.println(++i % 3 == 0 ? i % 5 == 0 ? "Fizzbuzz" : "Fizz" : i % 5 == 0 ? "Buzz" : i));
  • 35. FizzBuzz: Scala (1 to 100) map { x => (x % 3, x % 5) match { case (0,0) => "FizzBuzz" case (0,_) => "Fizz" case (_,0) => "Buzz" case _ => x toString } } foreach println
  • 36. FizzBuzz: Clojure (use '[match.core :only (match)]) (doseq [n (range 1 101)] (println (match [(mod n 3) (mod n 5)] [0 0] "FizzBuzz" [0 _] "Fizz" [_ 0] "Buzz" :else n)))
  • 37. FizzBuzz: Enterprise Edition EnterpriseQualityCoding/FizzBuzzEnterpriseEdition LoopComponentFactory myLoopComponentFactory = new LoopComponentFactory(); LoopInitializer myLoopInitializer = myLoopComponentFactory.createLoopInitializer(); LoopCondition myLoopCondition = myLoopComponentFactory.createLoopCondition(); LoopStep myLoopStep = myLoopComponentFactory.createLoopStep(); IsEvenlyDivisibleStrategyFactory myFizzStrategyFactory = new FizzStrategyFactory(); IsEvenlyDivisibleStrategy myFizzStrategy = myFizzStrategyFactory.createIsEvenlyDivisibleStrategy(); StringPrinterFactory myFizzStringPrinterFactory = new FizzStringPrinterFactory(); StringPrinter myFizzStringPrinter = myFizzStringPrinterFactory.createStringPrinter(); IsEvenlyDivisibleStrategyFactory myBuzzStrategyFactory = new BuzzStrategyFactory(); IsEvenlyDivisibleStrategy myBuzzStrategy = myBuzzStrategyFactory.createIsEvenlyDivisibleStrategy(); StringPrinterFactory myBuzzStringPrinterFactory = new BuzzStringPrinterFactory(); StringPrinter myBuzzStringPrinter = myBuzzStringPrinterFactory.createStringPrinter(); IsEvenlyDivisibleStrategyFactory myNoFizzNoBuzzStrategyFactory = new NoFizzNoBuzzStrategyFactory(); …..
  • 40. Evolve! ● Wiki that! ● Build a robot! ● Attack a book! ● Compete! ● Toy projects! ● Open-source! ● Coursera? ● Hire people smarter than You!
  • 41. Enjoy the Community! ● Attend conferences, check! ● Attend meetups in Your city ● Share Your knowledge, sync with community! Ads =)
  • 42. Recap ● Computer programming is the core competency ● Don’t depend on market ● Abstraction as main tool ● Choose field, not framework ● Be polyglot ● Don’t fear to explore ● Evolve
  • 43. First they ignore you, then they laugh at you, then they fight you, then you win Mahatma Gandhi
  • 44. {} thisRoom getPeople foreach( person => { shakeHand(person) thanks(person) } > ~questions?