Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 A Framework for Technical Skills May, 2001 Gregor Hohpe.

Similar presentations


Presentation on theme: "1 A Framework for Technical Skills May, 2001 Gregor Hohpe."— Presentation transcript:

1 1 A Framework for Technical Skills May, 2001 Gregor Hohpe

2 2 What Should a Java Developer Know? Is it (bits & MASK) > 2 or bits & MASK > 2 ? The >>> operator BufferedInputStream vs. BufferedReader Inheritance and polymorphism Design Patterns UML Inner classes, exceptions How to use a JVM profiler How to debug with Visual Café How to tune a J2EE app server What bytecode looks like Performance implications of synchronized methods How to perform a topological sort on elements in a tree JXTA Extreme Programming …

3 3 Software Development Involves Much, Much More Than a Programming Language Modeling / Patterns Computer Science / Algorithms Languages Development Tools Package Applications Operating Systems Platforms Processor Architectures Assembly Language Architec- ture Soft- ware Engineer- ing Generic Specific

4 4 Computer Science / Algorithms Definition –Algorithms, data structures –Compiler theory, automata theory, coding theory –Data structure manipulation, control structures, typing –Widely applicable across languages, platforms or packages Example –Tree traversal, sorting algorithms –Compiler theory, how to write a tokenizer Books / Resources –Programming Pearls by Jon Bentley –The Art of Computer Programming by Don Knuth (hard core) –Code Complete by Steve McConnell (fills the gap between Computer Science and Software Construction)

5 5 Modeling / Patterns Definition –Modeling of objects and their interactions –Design patterns –UML –Largely independent from target language Example –Inheritance, Polymorphism –Factory pattern Books / Resources –Design Patterns by Gang of Four (Gamma et al) –Refactoring by Martin Fowler –UML Distilled by Martin Fowler –Object-Oriented Software Construction by Bertrand Meyer

6 6 Languages Definition –Language syntax –Libraries and frameworks –Underlying concepts, performance trade-offs, do’s and don’ts Example –Java, C++, Visual Basic, C# –The >>> operator –BufferedInputStream vs. BufferedReader Books / Resources –Core Java Series –Practical Java by Peter Haggar –Effective C++ by Scott Meyer –Many others

7 7 Development Tools Definition –Integrated Development Environments (IDEs) –Sometimes indistinguishable from the language (e.g. Visual Basic) –Profiler and debugging tools –Source control tools –Test Tools Example –Development Tools: Visual Café, Microsoft Developer Studio, WebGain Studio, DreamWeaver –Profiling Tools: OptimizeIt, Jprobe –Testing Tools: Parasoft jtest, JUnit –Mapping Tools: TopLink –Source Control: PVCS, CVS, SourceSafe Books / Resources –Tradeshows, Magazines –Help files

8 8 Package Applications Definition –Critical for rapid time-to-market, best-of-breed solutions –Typically requires mastery of lower levels (computer science, modeling, languages, tools) -- contrary to vendor claims –Most packages provide multiple language libraries (Java and C++ ) –Run on multiple platforms (NT, Unix, Linux, Mainframe) Example –Tibco, Vitria –Siebel, Clarify, Cygent –SAP, Oracle Apps Books / Resources –Vendor training –On-line documentation –Shadow experienced developers

9 9 Operating Systems / Platforms Definition –Critical during deployment and performance tuning –Very specialized to particular vendors and platforms –Sizing of hardware and installation of packages –System administration Example –Windows NT, Solaris, HP-UX, AIX, Linux –Oracle Enterprise Server –WebLogic Server –Shell scripts –Mount file systems Books / Resources –Man pages, vendor documentation –O’Reilly series

10 10 Processor Architectures / Assembly Language Definition –Basis for all higher-level languages and packages –No support for data types, abstraction and other constructs –Most times no longer relevant (phew!) in system integration –Very relevant in embedded systems Example –80x86 processor architecture –Graphics processors, numeric processors –Physical I/O control –Virtual device drivers Books / Resources –Cryptic section at the end of the isle where the scary people with long hair and thick glasses hang out

11 11 Architecture Definition –Combines expertise from all the competency areas with understanding of the business need –Establish the technical vision for a solution that will fulfil the users’ needs –Understand trade-offs between different technologies Examples –Client / Server vs. Thin Client Architectures –J2EE vs..NET –J2EE Architecture Patterns –Corba, Mom Books / Resources –Experience

12 12 Software Engineering Definition –Quality development, testing, lifecycle and dependency management –Team management, task planning –Management of external factors, risk management Example –Rational Unified Process, CMM, eXtreme Programming –PeopleWare Books / Resources –Rapid Development by Steve McConnell –Quality Software Management by Gerald Weinberg –The Mythical Man Month by Fred Brooks –Creating a Software Engineering Culture by Karl Wiegers

13 13 Conclusion There is a lot to learn Measure your skill set in each of the categories and create a learning path Be specific when specifying skill sets required for your project Allow people to contribute and learn Ensure a healthy mix of skill sets Ask the right questions (or are prepared to answer them)

14 14 Resources, Questions, Comments Contact Info: Gregor Hohpe, 415-783-5255, gregor@hohpe.com


Download ppt "1 A Framework for Technical Skills May, 2001 Gregor Hohpe."

Similar presentations


Ads by Google