(I'm 40 and my current role is with a small company where I implement solutions rather than have a title)
(I'm 40 and my current role is with a small company where I implement solutions rather than have a title)
Bingo.
Security is one of the few cross-discipline, cross-domain specialities where it is possible to be a reasonably good domain expert and still have a good coverage across other domains. The fundamentals don't change. (And I say this as someone who's been immersed in the field for 25 years, so of course I'm biased.)
There are few other domains that can offer the same level of constant demand.
The beauty - and the depressing aspect - of security is that maybe 10% of security is about software. The remaining 90% is all about what is between people's earlobes. To become good at security, you'll need to learn how to explain extremely difficult and often subtle concepts. And you'll have to do that for both technical and non-technical crowd. That's a fantastic and continuous trial by fire. It's also lots of fun!
Bonus: because everything is a tradeoff, you really can't avoid the engineering approach. Teaching the concepts and reasons for tradeoffs to less senior developers will be part of the job specification. Fun.
> language/framework of the week
To quote something I have often stated in our interviews - there are only four programming language families. Everything else is syntax.
1: Imperative - C, Fortran, Pascal, ...
2: Object-oriented - C++, Java, Python, Ruby, (maybe Delphi's Object-Pascal), ...
3: Functional - OCaml, Erlang, Haskell, F#, ...
4: Declarative - Makefiles, QML, SQL, ....
To be perfectly honest, I don't know which bucket I should use for Prolog. It's supposedly logical, declarative and functional at the same time. I've never managed to understand it, despite trying.
And for the record: perl in basic form is imperative. With the introduction of "bless" keyword it crosses over to object-oriented domain but following the syntax is not necessarily straightforward. [I've spent a non-insignificant number of days auditing OO-perl. It's not a pleasant experience.]
If I wanted to jam languages into 4 categories, it would probably be the Algol, Lisp, and ML families, plus All Those Other Languages. :)
Declarative vs imperative is more interesting: what vs how, building descriptions of problems rather than chains of calculations or lists of steps. I don't think functional style is strongly related to declarative, except in the very low level sense that a functional program doesn't necessarily have a sequential evaluation semantics. But that's increasingly true of seemingly imperative languages also.
* Imperative languages describe how to perform the solution.
* Functional languages describe the solution.
* Logic languages describe the problem.
I'm not sure I actually agree with this categorisation, though.