what they don't teach you in cs departments
TRANSCRIPT
What CS departments don't tell you about software
development…
…And what to do about it!
About Me
William Sullivan, BS (CIS) „04
AIG Technology
„04 – present
Software development and architectural design
Blog: statestreetgang.net
Email: [email protected]
DISCLAIMERWhat I meant to say was...
Disclaimer
Not an indictment of any school
Not an indictment of any instructor
Not an indictment of higher education
Disclaimer
I‟m the genius of me
I just think I‟m the genius of everything else
Biased towards the practical
Sorry, graduate students!
Biased towards Microsoft
WHAT THEY DON‟T TELL YOUThe Illuminati, Area 51 and CS Departments…
Professionalism
Learning
A lifetime pursuit
Thinking
Question always
Doing
Be able to produce
Written communication
Internal documentation
Critical for frameworks
External documentation
Affects user-experience
The code itself
Critical for maintenance
Interpersonal communication
Interpersonal skills
Teamwork
Constructive disagreement
Leadership skills
English as a 2nd language
An additional challenge for some
Patterns and Practices
Software Patterns
General solutions to common challenges
Gang of Four (GoF)
Best Practices
Accepted implementation of patterns
Language specific
Address other shortcomings
Requirements
What does the user REALLY need?
Distilled from what they want
The most value from the least code
Practical vs. Perfect
Good now is better than perfect later
Vaporware is the ultimate form of perfection
Version control
Second most used tool
Behind your IDE
Critical for concurrent development
Different tools, but common goals
Edit
Check in
Branching and merging
Unit and acceptance testing
Validating your code
Does it work
Validating your design
Does it do what the user needs it to do
Validating your documentation
Does what it says and says what it does
Software maintenance
Readable code
Easy to read and understand
Debugging
Examining code at runtime
Refactoring
Rewriting code
WHAT TO DO ABOUT ITWhy are you all still sitting here?
Get experienced
Is an education necessary?
Education is the key
Experience is the lock
Get experienced
Internships
Participate in OSS projects
Electives don‟t suck
Use electives wisely
Personal inventory
Identify areas where you are lacking
Fill holes in your experience
Don‟t go for the “easy A”
Personal growth is the key
Read a book, read a book…
Contain the big pictures of CS
The internet is a great microscope
Books are great telescopes
The classics never get deprecated
Read a chapter a week
Read a blog, read a blog…
Big names blog
Interact with big names
Learn directly from the best
Twitter is gaining ground on blogs
Participate
Be active in the community
User groups
Conferences
Blog
Your personal CV
Teach
Yes, even you can teach!
THE BEGINNINGThe end, or…