www.oscer.ou.edu

Download Report

Transcript www.oscer.ou.edu

1
Oklahoma Information Technology
Mentorship Program
A Day in the Life of a
Software Development Professional
experiences of problem solving through hypothesis and predictions
2
Gayathri Swaminathan (abbv. G3)
•
•
•
•
•
•
•
Programmer Analyst
Junior systems administrator
Remote applications engineer
Systems analyst
worked in Unix/Linux since 2002
performed large scale deployments since 2004
implemented ERPs since 2008
3
Who do I represent
• A team of 48 individuals with expertise in
architectures:
– Network
– System
– Security
– Voice/Phone
• 15 individuals serve in systems roles
4
Background
•
•
•
•
Computer science
An engineer
Avid volunteer for opensource projects
Enjoy disassembling and reassembling of
components
• Routine problem solving exercises, automatic
deployments
• It's important to know how internals work
• Always enjoy a good troubleshooting exercise
5
Who do we support
• 30,000 students
• 2400 faculty
• OU's programs are offered in over 50 countries,
100 cities spanning 6 continents
• 170 classrooms in Norman campus
• 41 computer labs in Norman campus
For breakdown of OU IT's facts visit,
http://www.ou.edu/content/ouit/about/facts.html
6
What is the OITMP?




The Oklahoma Information Technology
Mentorship Program is an educational outreach
connecting networking professionals from OU,
OneNet, and other institutions with students in the
technology field
It is part of an NSF grant to enhance Oklahoma’s
educational and research capability through
network improvements
The goal: identify, develop, and recruit talent
Activities include:
 Presentations to students throughout OK
 Job shadowing opportunities (on-site & virtual)
7
Now we have been introduced...
A few questions to you!
- How many of you can play a musical instrument?
- Do you keep a log of number of lines of code you have written?
- Who uses your code?
- Who could use your code?
- Raise your hand if you ever thought, I could write software for that!
- How many of you use Linux?
- How many of you use Unix/Linux?
- How many of you have been in white board sessions
with your professor or classmates?
8
Foundations from CS
Books you must have in your personal library forever...
Who is a computer scientist?
“The single most important skill for a computer scientist
is problem solving. Problem solving means the ability to
formulate problems, think creatively about solutions, and
express a solution clearly and accurately.” ~ How to
think like a Computer Scientist, 2nd Edition
Translation: Here's skills to enhance continuously
Develop
Needs
assessment
Translate needs
to design
specifications
Versions
Testing
Functional Acceptance Performance
1
0
Needs assessment
Focus groups
Interviews
Scrums
Reviews
Reports
Observation
Consult
Deliverable
Records
Set
Expectations
Gap analysis
1
1
Design Specifications
System Overview
- What will it do?
- What functions?
- Design considerations
- Assumptions
- Dependencies
- Deliverable
System Architecture
- Platform
- Memory management
- Interfaces
- Assumptions
- Data
- Security
- Definition
- Uses
- Behavior
- Processing
System components
- Classification
- Constraints
System testing
- Unit
- Regression
- Integration
- Acceptance
- System
- Usability
1
2
Develop
The Unix Philosophy still rules!
Small is beautiful.

Make each program do one thing well.

Build a prototype as soon as possible.

Choose portability over efficiency.

Store numerical data in flat ASCII files.

Use software leverage to your advantage.

Use shell scripts to increase leverage and portability.

Avoid captive user interfaces.

Make every program a filter.
Credit: Mike Gancarz

Also refer: Notes of programming in C - Rob Pike
- http://www.lysator.liu.se/c/pikestyle.html
1
3
Life cycle, iterative
Gather requirements
Profile system
Dependencies
Define metrics
Discuss placement of
Security controls
Collect system
behaviors
Expect non-predictable
behaviors
Initiate conversations
on external interfaces
Start communications
on integrations
1
4
Testing
Testing frameworks
 Behavior Driven Development
 Test Driven Development
 Don't Repeat Yourself
 DevOps
Tools
R-Spec
Loadrunner
Cucumber
JMeter
JUnit
1
5
Keeping track
Source code management (aka) Version control
Distribution lists
Documentation sites
Workflow management
Bug & issue tracking
Tools
GIT
Bugzilla
SVN
Mailman
Mediawiki
CVS
JIRA
1
6
Feature or Bug?

Expect,
 your average user to consider a bug and a
feature, equally.
 the data you have to work with to be dirty
 bugs to make new feature requirements
 never ending compatibility needs on interfaces
 your software to be tested for usability/disability
policies
 Adapt,
 to popular interfaces
 to scale requirements
 nature of data and controls of data
1
7
Are you signed up?
At least one,
- Open source community
- Commitment of volunteerism
- Technical subscription
- Local user group (if there's none, start one!)
- an online portfolio of your work (website, github
or livejournal)
All of the below,
- LinkedIn
- Udacity
- Computer.org
- http://www.google.com/intl/en/jobs/students/
- Complete CSDA or CSDP
1
8
Things I wish I had done as a student
Done distributed software development
 Written formal specifications and standards
 Written good documentation
 Facilitated enough “birds of a feather” sessions
 Locate, connect and engage a community of students
with specific interest
 Evaluated enough needs and quickly develop a
framework detailing requirements
 Worked on multiple platforms
 Presented at a conference

1
9
What do interviewers want?
Technical:
 Stay relevant, stay informed
 Be good in at least one platform you mentioned
in your resume
 Can you detect a problem and approach to solve it
 Strength in algorithms, data structures
 Broad knowledge of components within a “system”
Personal:
 Your appearance, confidence, attitude and enthusiasm
 Can you describe your interests well?
 Can you precisely narrow down to an “issue” or “crux”
of a solution?
 How well do you interact
2
0
Q&A