20070921 Uni Softwareengineering

Post on 20-Jun-2015

1.289 views 0 download

Tags:

description

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

Transcript of 20070921 Uni Softwareengineering

For the University of Northern Iowa

Presented by Tony Bibbs

April 18, 2008

Software Development:Building Better Idiots

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.

“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:

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

Software Development Goals

1)Suck Less

2)Commoditize Software Delivery

3)Develop talent into Alpha Geeks

4)Build Better Idiots

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.

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.”

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)

SDLC at a Glance

Real Project with Full Analysis

Use Cases Process flows ERD

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.

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

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.

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.

PM Process at a Glance

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.

SDLC Success Stories

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

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)

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.

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

Contacting Me

tony@tonybibbs.comhttp://www.tonybibbs.comTwitter: http://twitter.com/tonybibbsFacebook LinkedIn515.554.8046