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.
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. :)
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?
It's funny how I don't hear anyone saying, wow how cool, they listened and tried their best to respect 37signals. All this was was a few engineers trying to make something cool really quick just to show what you can do with AppEngine. Google, probably thought it was cool too and decided to showcase it.
This was really blown out of proportion. If anyone wants to perpetuate conspiracy theories you've got plenty of ammo with AppEngine. This HubbleChat thing is/was nothing. Cope.
[I just realized we don't do humor here. Mod me down :(]