Do you ever feel like you're buried under umpteen zillion backlogged emails, feeds, books, articles, journals, magazines, and printouts? Do you ever feel that you're hopelessly behind, with so much new stuff created every day that you can never possibly hope to keep up?
Iām starting to think we need more arrows. Like big, red, helpful arrows that point to a specific class in the big 3500+ class chart along with the text āprobably a good class to start withā.
I think it is a good thing to āfeel stupidā. Not in the negative sense, but to feel that you donāt know enough.
I donāt think Einstein walked around saying "Damn, I am maybe the smartest man aliveā. Like with my newborn son, the more stuff he learns the more stuff my son needs to learn. The more books you read, you start to see how little you actually know. No matter how many programming languages you know even more programming languages you donāt know.
I am very much a JIT developer, I donāt worry about technology I donāt know. I just learn it, if I need it. So far it has worked great; I have solved every task in my career. But now I am starting to feel like a bad developer. I am mostly doing .Net programming, and more often I tend to get in little stupid situations when I think I am being smart. Like when I develop some smart UserControl, and the other developers just say, āwell the framework already have that functionality, maybe only 80% as good as yours, but it works, so let us use that insteadā. This is just an example and I do love a lot of things with huge the Frameworks like Java and .Net. But I tend to find that I should be less smart, creative and stupid. I should just be wise and follow the leaders.
One of the things that is frequently forgotten about these things, it that the people who are ābehindā are experts. People on the cutting edge are not, because it takes years to master any new field.
Switching to new platforms/languages sets people back years - sure the principles and general experience carry over, but the fluency, speed, and specialised knowledge of the quirks and āgotchasā do not.
Interesting comments by Peter Palludan up there. I think this is evidence that programming, even at āadvancedā levels, is āmaturingā farther away from a science and more toward a āknowledge tradeā. I.e. anyone that knows the general rules can get by.
This may be good for productivity, and for advancement of technology in the computer industry. But I got into programming because of the challenge. I fear for the day that programming stops requiring creative thought and critical problem solving skills. I.e., when it becomes the intellectual equivalent of manual labor: problem X is a variant of general problem type Y. General problem type Y is solved with tool Z. Apply tool Z to problem X with appropriate force and click problem solved.
Thatās not what I got into this industry for. I want challenges. Recognizing the type of screw and turning the correct screwdriver is not a challenge for me. I want to solve new problems that have never been tackled before.
Iām going to print the first bit (SecretGeek) and start reading it to myself every day when I get to work. Iām always stressing about āneeding to knowā.
Actually, if I could drop the multiplayer Call of Duty 2 habit, and use that time to learn, Iād be a guru.
I donāt have it right to hand, but one of my rotating e-mail sigs goes something like:
āIād rather learn SQL than 100,000 programmers APIsā.
For those not doing database work, thatās not much help. For the rest however, it sure does. If only we can get the coders fingers out of the dataā¦
Good suggestions. But like a diet, the effects only last so long before your subscriptions/bookmarks/whatever are once again massive. Itās a perfect addiction: free, pleasurable, seemingly useful and beneficial, with no obvious downsides, at first at least.
I find that if I just read Coding Horror and The Daily Grind everyday, Iām well informed about the current goings on in the software development world.
Cheers to all those who can keep up with more than a couple of RSS feeds a day.
You know, I agree with you, in principle, especially as it refers to myself. I donāt need to learn every new thing ā and because I work in the embedded space, itās great to see all this Web 2.0 and āYet Another Means Of Communication Between 2 Computers With Some Horrible Protocol Built On Top Of IPā just zoom by over my head like a 747 going from NY to LA. I donāt care what those guys in the 747s are doing ā odds are that theyāll just crash anyway.
On the flip side, Iāve worked with programmers that just didnāt want to learn anything new. Programmers who start brand new MFC apps to send data over TCP (rather than using C# or VB). Programmers who get confused when using Bugzilla because they didnāt read the error messages. Programmers who still need to be told why version control systems arenāt just something setup to get in your way.
If youāre reading a blog, youāre probably not one of those people though ā and your statement is true. Itās the people that donāt ready ANY blogs which worry me.
The problem with ājust in timeā learning is that it easily becomes ātoo little, too late.ā If you are blessed with sufficiently long or flexible schedules that you can easily budget in the learning time for the technologies you discover you need, more power to you. All too often though, it seems that by the time I discover I need a new technology, itās too late to come up to speed by the time I need it. So I think I need to anticipate a bit to keep ahead of the curve.
Itās nice to know Iām not the only person doing this.
In fact, computer sciences is a very vast subject, so itās impossible to be up to date in all of itās fields. Itās much wiser to just keep a ācacheā of knowledge, and fill it as you need. Of course, you have to be a fast learner, and avid reader for this. For example, I was able to learn C# and .NET in under a week to start a project, as well as learning the Twisted Python framework as I programmed a server in it.
Now, if you ask me something about Twisted, Iād probably know the answer, but in a very general way, no details. My cache has been flushed and filled with something else (VB.NET, SQLServer, TurboGears, among others) and so I just have a vague remembrance of whole things I was using earlier. But when I start using them again, things fall in place much faster, because I already know how things work, and even if I donāt remember which class did XML serializing, I know there IS XML serializing and the documentation does the rest.
As Dave W. points out, you gotta be careful though. When the projects schedule is small, and time is tight, you better use the tools you better know and, only later, refactor or create a new version using the best practice.
Not much of a coder, but found this post from a friend, who is.
secretgeek, your list almost freed me ā but mostly because, not being a real coder (about at first grade level for HTML now LOL), I didnāt understand most of it, so knew it was ok not to. THEN you did it ā had to add:
You are beautiful just the way you are.
You are brilliant, interesting, wise and fun to be around.
You rock.
Now, Iām all uptight again! If you think Iām beautiful, brilliant, interesting, wise, fun to be around AND rock ā boy, you missed the boat on me! Since you missed that boat by a whole ocean and contenient, Iām now fearing that Iām missing the boat by not worrying about the rest of your list! LOL
Agree completely. Iāve been at Microsoft for over 7 years now and didnāt go to college (yet), or know code when I started. Everything Iāve done so far (Systems Engineer, Dev, PM) Iāve learned as I needed it. You can pull this off, you just canāt be too lazy (save that special sort that causes you to go learn something so you can automate the job youāre too lazy to do. That kind is worth gold.)