One suggestion that no one else has mentioned is take a job at below average pay. I mean so little that you know for sure you're a good deal.
I got my first real programming job back in '04 (with no degree) asking for about half what everyone else was making (I didn't have any idea what I should ask for). Within a year and a half I was at a jr. level pay and was able to move on to a much better salary.
Working on a messaging client that integrates Twitter and GTalk... And I mean really integrates. The end user doesn't know the difference between IM and twitter but the context in which the user sends a message decides the service to use. It's C# and WPF.
So... I am an avid TDD/Unit Test/BDD guy. I've been gravitating towards BDD lately and honestly I don't DI everything. Really if I'm just BDD-ing a layer I just need to DI the fringe dependencies, the things that would cause me to be dependent on other whole systems or sub-systems (think File I/O, Active Directory, Web Services, etc). My object still contains a lot of state.
I think saying that unit tests cause us to reinvent FP is a bit of a stretch. I do think that saying that unit testing causes us to write better code and we borrow heavily from many programming paradigms (DBC, FP, OOP, DSLs, etc) in order to write that better code.
So... I am an avid Test Driven Development/Unit Test/Behavior Driven Development guy. I've been gravitating towards Behavior Driven Development lately and honestly I don't Dependency Inject everything. Really if I'm just Behavior Driven Develop-ing a layer I just need to inject the fringe dependencies, the things that would cause me to be dependent on other whole systems or sub-systems (think File Input/Output, Active Directory, Web Services, etcetera). My object still contains a lot of state.
I think saying that unit tests cause us to reinvent functional programming is a bit of a stretch. I do think that saying that unit testing causes us to write better code and we borrow heavily from many programming paradigms (Design By Contract, Functional Programming, Object Oriented Programming, Domain Specific Languages, etcetera) in order to write that better code.
I agree. It's also important to remember that if those tickets didn't generate revenue and if they would never generate revenue no one would really want you to spend time on them.
Most businesses seem to use software as a set of automated business rules or as a service to clients and what the owner of such companies are looking at is profit. How much money did it cost for you to write software that made $X million? Honestly I think that's the only metric people really care about.
What about maintainability and the SOLID principles? That's a matter of by spending $N million on maintenance how many millions have we saved on future cost to implement profit driving features.
If what you are doing at your company doesn't somehow lead back to profit (even something as simple as "letting the devs do this keeps the good ones here") I guarantee no one will want you to do it. If you do it and it does drive some revenue, the question will be was the cost worth the reward.
The problem most companies have is it is very difficult to relate what each task a programmer works on to each dollar of revenue earned.
Some of us just don't know what they are or how to use them. I guarantee I'll be forming another study group some time in the future on the other topics you mentioned if they are as broad in application as you say. :)
My advice would just be to take a few stats courses. Make sure you're comfortable with your linear algebra inside out. Learn as many numerical methods as possible etc. etc.
In my mind, neural networks should only be used when you're trying to model actual biological systems. Otherwise, one should always use a proper model - since it actually gives insight into what's going on with the system, instead of just being a magic black box. Of course, notice that all commonly used ANN topologies have nothing to do with biology - feed forward, hopfield nets, kohonen maps etc. They have barely any resemblance to how actual neurons behave. Basically, they are just heuristics with a cool sounding name.
I would find it very odd if this guy didn't know what an array was but did know what a linked list is.
I'm guessing (since I've been there myself at one point) that he thinks a list is just some list in memory and he doesn't understand the internal representation of any of the structures at all.
Zaki... Great job on the service! The tasks that have been done thus far are of the highest quality I could expect. My concern is the tasks not getting done.
I had 3 or 4 done yesterday, but since then, nothing. Will you be able to cope with the load soon?
We should be back at full strength in terms of service time by mid-next week. When you say gone, do you mean replied to? My email is zaki (at) timesvr.com if you have any issues.
[I just realized we don't do humor here. Mod me down :(]