21
For the University of Northern Iowa Presented by Tony Bibbs April 18, 2008 Software Development: Building Better Idiots

20070921 Uni Softwareengineering

Embed Size (px)

DESCRIPTION

This is a talk I've given a few times at my alma mater, the University of Northern Iowa (UNI).

Citation preview

Page 1: 20070921 Uni Softwareengineering

For the University of Northern Iowa

Presented by Tony Bibbs

April 18, 2008

Software Development:Building Better Idiots

Page 2: 20070921 Uni Softwareengineering

About me

BS in Computer Science from UNI in 1997 Ex-Wrastler. No, seriously. Software Engineer at Rockwell International 11 years doing Software Consulting Worked at 2 start-ups. One died. Official Nerd-Herder Managed popular CMS for over four years Give a variety of tech-talks like this one. Huge open source fan Self-declared internet junkie.

Page 3: 20070921 Uni Softwareengineering

“Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to build bigger and better idiots. So far, the universe is winning.

Fantasy Author Rick Cook:

Page 4: 20070921 Uni Softwareengineering

Evolution of the Software at ITE

In 2002 there was no software development process. Project Management wasn't a formal competency. Didn't know how to effective do business analysis Testing? What's that? Work environment was hostile. Project failure was the norm. Too much Not-Invented-Here (NIH) Syndrome

Page 5: 20070921 Uni Softwareengineering

Software Development Goals

1)Suck Less

2)Commoditize Software Delivery

3)Develop talent into Alpha Geeks

4)Build Better Idiots

Page 6: 20070921 Uni Softwareengineering

Goal #1: Suck Less

Get some first round draft picks (someday you?) Find any software development methodology Support the SDLC with sound project management. Trash fringe technologies (ColdFusion) Develop real competencies (PHP, Java, .NET) Actually have fun for a change.

Page 7: 20070921 Uni Softwareengineering

Joel “Joel on Software” Spolsky:

“Beware of Methodologies. They are a great way to bring everyone up to a dismal, but passable, level of performance, but at the same time, they are aggravating to more talented people who chafe at the restrictions that are placed on them.”

Page 8: 20070921 Uni Softwareengineering

The AEGS SDLC

SDLC Goals: Follow Industry Standards Remain consistent with DAS-ITE Customer

Service model Balance speed of delivery with quality Remain flexible to business needs Make decisions as a team (consensus)

Page 9: 20070921 Uni Softwareengineering

SDLC at a Glance

Page 10: 20070921 Uni Softwareengineering

Real Project with Full Analysis

Use Cases Process flows ERD

Page 11: 20070921 Uni Softwareengineering

Goal #2: Commoditize Software Delivery

Software should be a simple commodity like cars.

Building software works like building cars Software Frameworks are the automotive

assembly line. A good framework allows good developers to

focus on innovation and it makes bad developers tolerable.

Page 12: 20070921 Uni Softwareengineering

Goals for all AEGS frameworks

Minimize the significance of the programming language. PHP, C, Java, C# are all nooses waiting for their next victim.

Leverage in-house talent by making frameworks consistent across all core competencies

Automate low-level tasks (creating files, doing builds, running tests). Continuous Integration!

Focus on innovating the business solution

Page 13: 20070921 Uni Softwareengineering

Key Framework Components

Model-View-Controller (MVC) – Cleanly separates visual components (views) from business logic (models). Encourages reuse.

Object Relational Mapper (ORM) – Reduce the amount of SQL written by over 75%.

Unit Testing with tools like nUnit, PHPUnit and nUnit.

Moving towards continuous integration.

Page 14: 20070921 Uni Softwareengineering

Goal #3: Develop Alpha Geeks

In software we can do more with less. 3 alpha geeks can produce more quality code than 2x subpar counterparts.

The lazier the better. Collaboration is key. Twitter, IRC, IM, wikis, email,

blogs you name it we use it. Encourage individuals to master something. GIS,

mapping, AJAX, EJB, etc. From a team perspective, cover all the angles: PM,

BA, Architect, Frontend Engineer, Backend Engineer, Testers.

Page 15: 20070921 Uni Softwareengineering

PM Process at a Glance

Page 16: 20070921 Uni Softwareengineering

Goal #4: Build Better Idiots

This is where we sit today organizationally. Sound software is being delivered but initial

quality is suspect (thanks to better idiots). Working to establish a formal software test

competency.– Unit, System and Integration testing.

Page 17: 20070921 Uni Softwareengineering

SDLC Success Stories

Iowa Sex Offender Register Iowa School Alerts FARMS Enterprise A&A (ITE), ePayment (ITE) Health Facilities (DIA)

Page 18: 20070921 Uni Softwareengineering

Programming Resources

Design Patterns Model-View-Controller (MVC) Pattern Object Relational Mapping (ORM) PHP Apache Web Server MySQL RDBMS Linux Operating System Enterprise Architect (UML Tool)

Page 19: 20070921 Uni Softwareengineering

Becoming an Alpha Geek

RTFM Learn Linux! Contribute to an open source project. Master Google Searching:

[-inurl:(htm|html|php) intitle:”index of” +”last modified” +”parent directory” +description +size +(”paris_hilton.wmv”|”paris_hilton.avi”)]

Learn to love mailing lists and user groups Develop your soft skills. Blog. Tell the world what you're geekin' out on. Give talks. Tons of respectable geek conferences.

Page 20: 20070921 Uni Softwareengineering

Questions?

Possible Ideas: What I'd do different if I could do college over again? Start-ups Engineering vs. Consulting Government vs Private Sector Examples of Successful Nerdy UNI Grads

– Chris Pirillo– Tim Perdue– Dave Weis

Page 21: 20070921 Uni Softwareengineering

Contacting Me

[email protected]://www.tonybibbs.comTwitter: http://twitter.com/tonybibbsFacebook LinkedIn515.554.8046