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.
Contents
- 1 Practices
- 2 Read Relevant Inspirational Books
- 3 Understand and Apply Appropriate Software Development Methodologies
- 4 Join, Learn and Engage with Relevant Online Communities
- 5 Learn about Programming Paradigms and Languages
- 6 Study Software Architecture
- 7 Academic Foundation
- 8 Links etc.
- 9 References
Practices
- Find good tutorials on the web 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):
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[2]:
Read great articles on agile software development:
- The New Methodology - Martin Fowler.
- Alistair Cockburn's Articles.
- Feature Driven Development and Extreme Programming by Stephen Palmer.
- ...
Join, Learn and Engage with Relevant Online Communities
- Contribute to free software projects
- Many to choose from
- Understand the benefits of Commons-based peer production.
- ...
Visit good sites on software development regularly, subscribe to relevant[3] mailing lists:
Learn about Programming Paradigms and Languages
Learn about Programming paradigms (e.g. imperative, procedural, functional, declarative, object-orientation, ...) and try languages which support these paradigms (e.g. Pascal, Lisp, Prolog, SmallTalk, ...).
- Learn a language a year. Consider the following:
- Python
- Ruby
- C/C++
- Book: "The C Programming Language" by Brian W Kernighan and Dennis M Ritchie
- Java
- Interesting: How to Teach Java (and by implication: how to learn Java)
- Books:
- Effective Java - Joshua Bloch
- PHP
- ....
- Get to know which languages are best in what situations[4].
Study Software Architecture
- Learn about Software Architecture and w:Design Patterns
- Tools for continually improving design and architecture: w:Unit testing, refactoring, ...
- Frameworks such as Struts, Spring, Hibernate, Cocoon, JSF, OpenLaszlo, JBPM, Tomcat, JBoss, ...
- Learn about web services, w:Service-oriented architecture, mashups, cloud computing, ... (please add and update).
Academic Foundation
Aspects of Computer science. |
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.
Useful links for becoming a guru:
- How to be a good programmer...My tips
- Teach Yourself Programming in Ten Years
- open educational framework for computer science Software Engineering.
References
- ↑ See also: Coad, P., Lefebvre, E. & De Luca, J. (1999). Java Modeling In Color With UML: Enterprise Components and Process. Prentice Hall International. (ISBN 0-13-011510-X)
- ↑ A good overview: The New Methodology by Martin Fowler.
- ↑ Relevant to your interests in contributing and career development.
- ↑ See for example "Intended Use" on Wikipedia's Comparison of programming languages.