Thus, I am currently of the mind that while you have to specialise in a language to get a job, the way to ensure that one's career trajectory continues in a positive direction is to get very good at analysis and design. That is, translating real world entities and processes into clean, precise, scalable, and maintainable models. Most people have a preferred language, but as long as the language one must work with allows things like inheritance, encapsulation, and events, it is really only an afterthought. Ok, well also the language has to perform, be affordable (meaning its platform has to be), and be maintainable by future staff.
It seems futile and really a hacker's exercise to try to know every little nuance of a language. Personally I'll always have this fascination with obscure detail to some degree, but work-wise one has to preserve and increase one's value so it pays to look at what are the essential skills. I don't even think UML is that important. I honestly believe the key to making software engineering as effective as older forms, is improved and streamlined process. I think the communicative and documentative aspects become less important when the development process itself engenders constant progress.
I'm really just getting started but I predict these keywords are the ones to care about: agile, reusable, pragmatic, refactor, pattern, service
Books to pave the way on this journey:
The Pragmatic Programmer
Patterns of Enterprise Application Architecture
Analysis Patterns
Lean Software Development
http://www.martinfowler.com/articles/newMethodology.html
...and that's just to start with!
No comments:
Post a Comment