Become a Guru

^<<

This page is about how to become a software development guru. Some of the principles may apply to becoming a guru in other fields.

Over time, progressively develop learning resources on the topics listed below.

If you are an educator of aspiring programmers, do link to your learning resources from this page, and back to this page.

Practices

 * Find good tutorials and learn via "copy/modify" of source code.
 * Pragmatic Software Development Tips

Read Relevant Inspirational Books

 * The Pragmatic Programmer (inspirational for aspiring career programmers).

Understand and Apply Appropriate Software Development Methodologies
Learn about the following (by doing):


 * Agile Methodologies such as
 * Feature Driven Development and
 * Extreme Programming

Identify suitable tools/frameworks to support software development processes such as


 * JUnit, Maven, Ant, Mantis, bugzilla, git, svn, cvs, trac, osrmt, continuous integration software, kosmos, ...

Understand and apply principles of agile software development:


 * The Agile Manifesto
 * 12 principles.

Read great articles on agile software development:


 * The New Methodology - Martin Fowler.
 * Alistair Cockburn's Articles.

Join, Learn and Engage with Relevant Online Communities
Visit good sites on software development regularly, subscribe to relevant mailing lists:


 * The Server Side
 * Discussions

Learn about Programming Paradigms and Languages
Learn about Programming paradigms (e.g. procedural, functional, declarative, object-orientation, ...) and try languages which support these paradigms (e.g. Pascal, Lisp, Prolog, SmallTalk, ...).
 * Learn a language a year. Start with Python or Ruby, include C/C++, Java and PHP, ....

Study Software Architecture

 * Learn about Software Architecture and Design Patterns
 * Tools for continually improving design and architecture: Unit testing, refactoring, ...
 * Frameworks such as Struts, Spring, Hibernate, Cocoon, JSF, OpenLaszlo, JBPM, Tomcat, JBoss, ...
 * Learn about web services, Service-oriented architecture, mashups, cloud computing, ... (please add and update).

Join a Community (or more than one)

 * Contribute to Free software projects.
 * Understand the benefits of Commons-based peer production.

Academic Foundation
Study computing science
 * Data structures and Algorithms
 * Operating systems
 * Databases
 * Compilers and interpreters
 * Artificial Intelligence

Curriculum Frameworks:

Challenge: check out the Java Specialists Symposium 2011 and create a new, updated version of this diagram. All topics covered there provide insight, but this one (Successful Developers) in particular.

Links etc.

 * open educational framework for computer science Software Engineering