Download - 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
[email protected]://www.tonybibbs.comTwitter: http://twitter.com/tonybibbsFacebook LinkedIn515.554.8046