Slide 1

Slide 1 text

Aman Gupta Karmani · github.com/tmm1 open-source and me tips for a career in software development

Slide 2

Slide 2 text

• programming for 20+ years • full-stack polyglot dev + ops • 10 years in silicon valley building my career • founded multiple startups • early engineer at GitHub • consulting for AirBnb, Twitter, etc • thousands of open-source contributions • moved to sunny Santa Barbara in 2018 Aman Karmani · @tmm1 about me

Slide 3

Slide 3 text

about me 2003 - high school

Slide 4

Slide 4 text

tips for a career in software development master a scripting language pick any one you like and get really good at it

Slide 5

Slide 5 text

tips for a career in software development invest in your development environment experiment with di ff erent code editors like vim, emacs, intellij, vscode to fi nd what makes you most productive

Slide 6

Slide 6 text

tips for a career in software development learn web technologies html, css, javascript http request/response + headers

Slide 7

Slide 7 text

about me 2006 - college

Slide 8

Slide 8 text

about me 2008 - San Francisco

Slide 9

Slide 9 text

2009 - conferences about me

Slide 10

Slide 10 text

tips for a career in software development engage with your community attend conferences, talks and meetups about the languages and frameworks you’re using

Slide 11

Slide 11 text

about me 2010 - rails performance consulting

Slide 12

Slide 12 text

tips for a career in software development learn to use debugging tools when you’re stuck, fi nd a tool which will dig deeper
 
 pro fi lers, tracers, inspectors, debuggers for example: chrome web inspector

Slide 13

Slide 13 text

about me 2011

Slide 14

Slide 14 text

about me 2012 - pro fi ling tools

Slide 15

Slide 15 text

tips for a career in software development think about how and where your code will run writing code is only half the battle.. maintenance + operations resilient software saves you sleep

Slide 16

Slide 16 text

about me 2013 - ruby-core team

Slide 17

Slide 17 text

about me 2014 - RubyKaigi Tokyo ! Aman Gupta (@tmm1) VP Technical Infrastructure GitHub, Inc. Ruby 2.1 in Production How I upgraded github.com from 1.8.7-p72 to 2.1.2 http://bit.ly/ruby21-in-production

Slide 18

Slide 18 text

2016 about me

Slide 19

Slide 19 text

2017 about me

Slide 20

Slide 20 text

2018 about me

Slide 21

Slide 21 text

2021 about me

Slide 22

Slide 22 text

what is open source?

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

pick your battles why open source? 
 Operating System 
 Device Drivers Framework Libraries Proprietary Business Logic } } closed source trade secret speci fi c to your product/business open source shared infrastructure community adding features edge case bugs found and fi xed credit card
 processing http
 webserver tcp/ip
 network stack memory management
 
 process scheduling

Slide 25

Slide 25 text

open-source is a super power control your own destiny • look behind the scenes, instead of getting stuck • every change documented for future devs (+ you) • who changed it and when • what lines changed where • why why why

Slide 26

Slide 26 text

how does open source work? code
 (version control)
 discussion
 (code review)

Slide 27

Slide 27 text

case study open-source software for tax returns

Slide 28

Slide 28 text

OpenTaxSolver 20 years old! • written in C • subversion source control • hosted on sourceforge • GPLv2, contribute patches via email • mailing list + facebook group for discussion

Slide 29

Slide 29 text

since 1996! excel1040 • written in excel macros (!) • no source control
 no license • can it be called open- source? • hosted on google sites • contribute bug reports via email

Slide 30

Slide 30 text

• written in TypeScript and React.js • git for source control • AGPL3, hosted on GitHub • discord discussions • automation: CI, codecov, dependabot, code formatting newcomer UsTaxes.org

Slide 31

Slide 31 text

let’s contribute!

Slide 32

Slide 32 text

• with the project • README, contribution guidelines, coding style • recent discussions, upcoming releases and goals • with the code base • look at open and recently closed issues • read through open and merged pull requests • what libraries, languages and frameworks are used? • how to setup a development environment? familiarize yourself let’s contribute

Slide 33

Slide 33 text

start small let’s contribute

Slide 34

Slide 34 text

documentation and project planning not all contributions are code let’s contribute

Slide 35

Slide 35 text

let’s contribute setup development environment

Slide 36

Slide 36 text

let’s contribute setup development environment

Slide 37

Slide 37 text

document for the future let’s contribute

Slide 38

Slide 38 text

document for the future let’s contribute

Slide 39

Slide 39 text

copy existing patterns and style let’s contribute

Slide 40

Slide 40 text

code review and scope creeeeeeeep let’s contribute

Slide 41

Slide 41 text

code review and scope creeeeeeeep let’s contribute

Slide 42

Slide 42 text

code review and scope creeeeeeeep let’s contribute

Slide 43

Slide 43 text

bug fi x: follow the open source let’s contribute

Slide 44

Slide 44 text

bug fi x: follow the open source let’s contribute

Slide 45

Slide 45 text

bug fi x: follow the open source let’s contribute

Slide 46

Slide 46 text

bug fi x: follow the open source let’s contribute

Slide 47

Slide 47 text

fi x bugs that a ff ect you let’s contribute

Slide 48

Slide 48 text

tips for a career in software development participate in open-source! build your skills and your portfolio scratch your own itch

Slide 49

Slide 49 text

newborn project taxes.cue

Slide 50

Slide 50 text

questions? Aman Karmani [email protected] · github.com/tmm1