Software Development

What stops you from upgrading your programming skill set?

Justin James says time constraints and a lack of anything to use new skills on that stops him from upgrading his programming skill set. What about you? Take this quick poll to let us know.

I get the impression that few programmers get to upgrade their skill sets as often as they would like. It is not that they are lazy, but with everything else going on, it is often pushed to the bottom of the stack. At the same time, the IT industry puts a heavy premium on staying current.

Other programmers see no need to learn new skills; maybe they are maintaining legacy applications, and it would just be a waste of time. For me, it is usually time constraints, and a lack of anything to use new skills on that stops me -- even though I usually manage to find a way to use things that I've learned. What about you? Take this quick poll.

J.Ja

Disclosure of Justin's industry affiliations: Justin James has a working arrangement with Microsoft to write an article for MSDN Magazine. He also has a contract with Spiceworks to write product buying guides.

---------------------------------------------------------------------------------------

Get weekly development tips in your inbox
Keep your developer skills sharp by signing up for TechRepublic's free Web Developer newsletter, delivered each Tuesday.
Automatically subscribe today!

About

Justin James is the Lead Architect for Conigent.

67 comments
jslarochelle
jslarochelle

I would like to spend even more time at it but I think it safer to spend some of my free time on other things as well (family, guitar, reading on other subjects). I'm pretty happy with 2008: Wrote an OPC UA client module for a Java application. I had to use C# and C++/CLI to get this working. C++/CLI was used in the Java JNI layer as a bridge from native to .NET. I wrote a small C# script interpreter so that we could run unit tests on non-developper machines. The project had its problems but none of it related to the choice of languages or my specific design (problems with requirements and team coordination and also immaturity of OPC UA libraries). By the way if some of you guys want to do this kind of native to .NET acrobatics I recommend Expert C++/CLI by Marcus Heege. It has very detailed instructions on setting up the compilation for this. A life saver. I also keep using Ruby for quick day-to-day scripting (if I need a GUI I use JRuby). Ruby is very productive. However I will probably switch to Groovy because of the better Java integration (just add the Groovy attribute to your Java project and you can build a single Jar that uses Groovy classes). It adds Ruby-like functionality to the already rich Java libraries. Very productive for a Java programmer. In 2009 I hope to keep improving my requirements gathering and specification skills, my estimation skills as well as my general programming abilities. JS

aaronlewis
aaronlewis

I work on high-load, mission critical apps based on the .Net platform. Many of the new tech coming from Redmond is slow (like their ORM layers) compared to the way I've always done it, or it severely limits the reach of my apps. For example, writing part -- or all -- of GuildPortal in XAML would mean I'd have to write everything twice. I guess my point is, I'd be more interested in new tech, if the new tech offered real benefits to my users. An example of something that does meet those criteria would be AJAX.

beg0757
beg0757

Where to start? Where do you start when the last intense coding you did was on mainframe apps using Assembler or Cobol? Have taken some courses but missing the basic foundational differences between the mainframe languages and the C, C++, VB languages. Something that will help with that foundation so I "get it"

qkwzxyjp
qkwzxyjp

I would have to say that I am constantly working on my skills, but I don't often find the time to focus on the subjects that I would choose. My employer recently asked me to produce a set of Perl scripts -- so that has been my focus. While this means that I get the chance to improve my Perl skills, my language of choice would still be C... and I would dearly love to move toward embedded programming...

CodeCurmudgeon
CodeCurmudgeon

It is an utter waste for me to upgrade my skill set before my boss has done so and adopted the new methods, since he suffers from an imperative to be the alpha geek. I have repeatedly learned new methods, only to forget them on account of his policies.

ByteBin-20472379147970077837000261110898
ByteBin-20472379147970077837000261110898

I don't have the money. That's the biggest problem. I don't make much and courses and stuff really cost a lot. Right now I have to dig myself out of a financial rut (just like the rest of the world).

AspDotNetDvlpr
AspDotNetDvlpr

My problem is that I'm stuck maintaining all the legacy apps I developed with previous technology, and there's never any time to jump into the new technology, because of limited resources. In my case, it's being stuck maintaining and creating apps in classic ASP, instead of moving to ASP .Net. I've made attempts over the last several years, but there's just never time to justify converting existing infrastructure, and no resources to do it, so I just keep using what I'm good at, and what's already in place. I do get to use .Net or ASP .Net on small projects here and there, but it's few and far between, so my skillset has really stagnated. My drive to spend evenings learning it has diminished also, as I'm usually totally burnt from programming all day already lol Someday! I just keep telling myself that ;)

mikifinaz1
mikifinaz1

All those factors listed and the fact that it is all about maintenance. I hate working other people's old code.

PRIMEREBEL
PRIMEREBEL

All I've been able to find are classes or books for beginners. I'm about ready to take the next step but I can't find anything that isn't either the same beginner stuff everyone else has published or way too advanced for me.

BALTHOR
BALTHOR

The only program that I've ever seen make an exe start program is SynthMaker.

Saurondor
Saurondor

I see time constraint as a key issue limiting new skill set acquisition, but also the constraint that should be disregarded the quickest. I ask myself if the new skill will let me do something I do now faster or do something I can't do now. If the first case is true then I surely take the time to learn it. I will a) loose some time learning it b) loose some time as my work process adapts to its presence. If it its the second then I have to ask myself if I can make any good use of it in the short term. If so I keep dedicating a few hours a week to it so the learning curve isn't so large when I actually decide to use it. Then there is also the dreaded upgrade path some tools take and that will inevitably require you to get acquainted with the new version. And quite possibly upgrade applications to it. Anyway not upgrading your skills is a sure way to end up in a dead end. Someday someone will kill that legacy application you're maintaining and then what? On the other hand being the "perpetual student" is scarcely productive and I don't know anyone who will hire you because you know all the new stuff, but never actually used it in real life products. In my opinion there must be a balance in the time invested as well as foresight to were technology is going and were you're going as a professional.

Kam Guerra
Kam Guerra

Most companies and recruiters want people who are up to speed on the latest trends, but so few companies actually do anything with those skillsets other than advertise them as "available".

Justin James
Justin James

Is it time? Is it a lack of money? No desire? Wish you could do it at work, but the boss has you tied up all week long and doesn't support your efforts? Or maybe you are able to do it!Let us know! J.Ja

Tony Hopkinson
Tony Hopkinson

all things to all men component library/suite/framework, is about developer performance, not code. Never will be either, if you need that level of optimisation, the extras that give the suite the ease of use/reuse appeal have to go. Xml is verbose, .NET isn't compiled (unless you want to start messing with NGen), the GC is amssive performance overhead... Wrong choice for the problem domain in my opinion.

jslarochelle
jslarochelle

Are you still programming (even if less intensively) ? If the answer is yes, what language are you using ? What aspect of software development would you be more interested in improving (Analysis, Design, Coding or a specific language, Testing)? Here are a couple of sure values: Code Complete (2nd edition) Object Oriented Analysis and Design The first book focuses more on detailed design and coding while the second one covers analysis as well. Better recommendation will require more info. JS

Justin James
Justin James

I would suggest that you get a book or two, one that works you through building a full app from the ground up. Sure, it might be a cheesy "CD organization database" or a "To Do List" or the ever popular "recipe application", but it will be a good way to cover a lot of ground. J.Ja

Tony Hopkinson
Tony Hopkinson

Anything from your own media library app, to writing scrabble, to a wire frame graphics shoot 'em up. Doesn't matter what it is as long as you can approach it iteratively and you can bolt on extra doo dads, e.g a scrabble server so you can play over the internet, or a generic catalog solution. You can read how to books until your eyes bleed, programming is something you learn by doing. Another trick is to keep somethings common, for instance code a file processing batch but in C# on windows. Your own mini report designer... Pick something that you'll use, or that you enjoy playing with.

Justin James
Justin James

I agree on the cost. I never take courses, but I have become involved in my local .Net user's group, which is free and fun. Even the cost of books... they usually run around $50 and contain little useful information. I could drop $200 on books to learn something that I may never get to use. $200 buys a lot of diapers for the little one, or pays a good chunk of a car payment. :( J.Ja

Realvdude
Realvdude

I knew how behind I was when a client was moving to a new 2003 server and after a painful hour of why won't the app run, found I had to enable classic ASP. Unfortunately for me, I'm still supporting a DOS app as well.

Tony Hopkinson
Tony Hopkinson

Especially when it turns out to be my own from a younger more foolish incarnation, six months ago. There again that shows I have improved, maybe. What fool wrote this? Hmmm, Hopkinson, the tw@t.

Justin James
Justin James

I know what you mean. There are endless "Introduction to..." or "XYZ for Dummies" items out there, which do little more than walk you through the wizards in something. Then there are resources like Dr. Dobbs Journal and MSDN Magazine, which are REALLY advanced on most of their content. That "gap" is supposedly filled by product documentation, but it so rarely is, leave folks like me and you to stumble around hitting the search engines. :( J.Ja

Justin James
Justin James

Yeah, you're very right about the bind that we're in... either we constantly upgrade and hope that it eventually pays off, or we stagnate and hope that we never need to find another job! The only way to really "win" is if you just enjoy this stuff for its own sake, or if your skills get upgraded and updated during your job somehow. J.Ja

Justin James
Justin James

I see a lot of jobs asking for a particular skill, but once the people get there, they never use that skill and they lose it. I know that I've taken jobs thinking that I would learn some skills, based on what was told to me, and a year later, I didn't learn a thing. That's just as frustrating! J.Ja

Osiyo53
Osiyo53

I do upgrade my programming skill set but not nearly as much as I'd wish. Time is a problem. Most of all my skills upgrading efforts occur on my own time. The company tries to have some training on company time. But cost and budget constraints hold that down to a bare minimum. As concerns my own free time, I DO have a wife and family, a home and property to maintain, enjoy fishing and vegetable gardening, etc. So there is only so much free time I'm willing to devote to skills upgrading. In some cases, money is a problem. There are tools and applications that I'd like to learn more about, but the purchase price is often too high for me to get all the ones I'm interested in. However, in many cases I can find a work-around. i.e. Finding a similar but less expensive or free equivalent. Which I can work with and learn while at home. Sit down classroom time is mostly not an option. Sometimes but rarely. Often too expensive both in time and money. Just as often, actual classes would be a waste of time. As many classes are geared towards raw beginners, and frankly if one has had some broad background experience and learning one can do as well or better by just purchasing a book on the subject and doing some Googling. Some other classes that advertise themselves to be more advanced either focus so narrowly on some particular aspect of the subject as to be not worth the cost to me or are so advanced that I don't even understand the wording of the goals statement. However, cost is the least of the problems. Available time is the biggest road block. There is also the matter in some cases of lack of desire. Enough real desire to cause one to use up some of one's limited time resources. For instance, there are a number of Web development tools I'd like to learn more about and employ. And another programming language I'd like to jump into. But the fact is I make do well enough with those tools I now have to satisfy the job requirements. I understand them well and can get the job done with minimum fuss, without endless debugging and long hours spent in referral to lengthy instruction documents. Which are often written by someone who seems incapable of speaking or writing in plain English and who seemingly assumes you already know a lot of things you may not know. And/or who uses ambiguous terms which have different meanings depending which programming language, application, or software/hardware manufacturer one is talking about. All of which can contribute to a steeper learning curve. Then there is the issue of WHICH tool or new programming language is the best to delve into. Today's much touted fad is too often tomorrow's forgotten and tossed aside article. So I tend to take a "Let's wait and see" attitude towards a lot of things. I've only so much time, and so many brains cells. If one tried to keep up on everything ... one doesn't get much real work accomplished. So I do spend time upgrading my skills, but I'm very selective about exactly what I'll spend time on. Now, I do know fellows in my trade who resist upgrading. Two primary reasons. (1) They've seen too many "Latest and Greatest" things come down the pike, just to see them discarded or forgotten about in a year or two. Or it's something so specialized in application and usage that what it can do for you ... simply isn't worth the time spent to learn it or cost of purchase/implementation. Not if the same thing can be accomplished some other way. (2) Some of my co-workers simply figure that their job is secure with the skills they now have for long enough into the future (years) that by the time they'll truly be pressed to upgrade ... it'll be time to retire anyway. So why bother? Unless it's something that makes their work TODAY ... easier or better, they aren't gonna bother. Chuckle, maybe it's a sign of age, Justin. But do you have any idea how many things I and others of my age have seen come along which were billed at the latest and greatest, MUST HAVE and MUST USE, Ohhhh so wonderful whatever ... that have eventually flopped and fallen on their faces? Or which have simply been found out to be a case of much-ado about nothing really important or useful in the long term. And, in some cases, the new toy is so specialized and limited in nature and application that I really don't want to delve into it too much and get pegged into a too highly specialized job slot. This can be great in that for a time you might be very much in demand and can expect a lot of work and extra pay compensation or other perks. But the highly specialized "expert" in a narrow field often finds him or her self facing some drawbacks to being in that position. Often, too often, the need for that narrow area of specialty simply goes away. And one is pegged as a "specialist" in that little hole of knowledge. Perhaps one hasn't kept current on more broadly useful knowledge and skills. Or perhaps the powers-that-be who do the hiring and firing have you so narrowly pegged in their minds as only fitting into THAT job slot that they decide to just let you go. After all, perhaps they've never actually seen you do anything else. Or since that narrow specialty is perhaps currently in so much demand, and commands so much extra pay/perks/opportunities, eventually a whole lot of folks jump into that same narrow specialty. And the field becomes flooded. Now one faces the prospect that you might be highly paid at a time when the market is flooded with folks willing and able to do the same work for far less money. Guess what happens? You're suddenly VERY replaceable. I've seen that happen many times. In fact, been there, done that. Becoming too specialized is kind of like the PhD thing. One ends up knowing more and more about less and less. A good thing while it lasts. But it often narrows one's options in the future. I come from a mechanical engineering background. Once knew a mechanical engineer who was considered the very best ... in a narrow but important field. Important at one time, anyway. This fellow was God within that narrow specialty. Not only within the organization that hired him, he was often consulted by NASA, research institutions, the best engineering colleges, etc. Then one day, somebody figured out a new way to do things, that made this fellow's specialty utterly irrelevant. In a matter of months his knowledge was not needed any more. And he'd spent so much time and effort focused on that tiny specialty that in fact his broader knowledge of the mechanical engineering field was VERY rusty and out of date. He went from Top Dog, to unemployed and sitting in a classroom with kids with peach fuzz on their faces trying to brush up on and update his skills and knowledge. Just a thought.

jck
jck

I am doing that right now. In fact after almost 15 years in the Microsoft programming arena, I have professionally left it. I currently and working maintaining an Access Database application that someone else wrote, but the thrust of my work is in HTML, XHTML, XSL, XML, XSLT, XSL-FO, XPATH, Java, Javascript, C++, etc. I am (re-)learning all this stuff, and working with Linux, Unix, Novell, Oracle, etc. Although I will be starting my own consulting LLC soon and doing Windows development for small business and home applications, I will no longer work at a job where everything is Microsoft only because it was the easy way out and not necessarily the right thing to do. So, I'm upgrading my programming skillset via move to a new job and a boss who actually lets me learn on the job and not expect me to study 6 hours a night at home and during my lunchbreak. FREE AT LAST...FREE AT LAST. THANK GOD ALMIGHTY, I'M FREE AT LAST.

IndianaTux
IndianaTux

The worst being that, even though I recieved my degree in 2006, all of my develompent education is based on what would be considered legacy languages. I learned on Visual Studio 6, rather than .NET, and learned COBOL and RPGIV for the AS/400 series, and QBASIC. Web design consisted of FrontPage 2000, and the instructor didn't like our XML book so we didn't learn it. Couple these constraints with the fact that my current position is hardware technician and you can see where my stress begins to build. I play with .NET now and then in my spare time, but supporting hardware takes up a good deal of my time, naturally. Since I am a husband and father, there is no time to learn at home, even weekends. You can imagine the frustration.

sconyers
sconyers

I don't have a particular need to upgrade my skill set, and I'm the kind of person that will never make upper management because I refuse to bring my work home unless absolutely necessary (scheduled maintenance, unforseen major problems with something I'm responsible for, etc.). That said, I am currently on a temporary assignment to our .NET development team because they have a huge backlog of work and I took a VB.NET class in college. It has been a great experience so far, and I will be making a recommendation to my boss to implement some kind of cross training between departments.

Tony Hopkinson
Tony Hopkinson

You may have to chhose a different tool to gain a skill. ie if you want to do threading something other than VB6. :p You can improve your skills y switching languages, or OS, even environment. Doing .net from the commandline and outside of Visual Studio can teach you a lot. Myself I'm doing vanilla C under linux at the moment, which is at least re teaching me a lot. I'd sort of forgotten what pointers were. :p

Jaqui
Jaqui

upgrading to the "latest and greatest" fad of the week.

jmgarvin
jmgarvin

That's why my skillset sometimes stagnates. On that note, since I deal with "learning on the fly" it means that I pick things up as I go and generally have a good knowledge of the product in 2-4 weeks.

Justin James
Justin James

That's exactly right. I can right a bazillion likes of C++ with my own custom memory management scheme, and gain an extra 5% - 10% improvement over .Net (assuming I knew C++ well, which I don't). And that is hoping that I don't have any memory management errors in there, buffer overrun errors, etc. Indeed, it seems to me like the majority of security exploits out there occur in C/C++ apps where there is a single line of code that is not right, waiting for an attacker with a fuzzer to find it. Frankly, while I know that I have the intellectual capacity and fortitude to work in an environment like this, I prefer not to. I hate to take a (partial) mindset of "throw more hardware at it", but if you compare the extra development and testing time of working at a lower level, it will take so much longer to get to market, that the hardware improvements during that time have erased the performance gains! I would love it if .Net and Java ran faster. From what I've seen, on average they are much closer to native code, around 90% - 95% of the speed at this point. Seeing as there are so few apps which actually push a modern CPU to anywhere near 100% on a core for more than a few seconds per hour of usage, a little bit of slowness is OK. J.Ja

beg0757
beg0757

I am posting under Justin but thanks to Tony too ... I appreciate the suggestions. Justin if you have a book in mind I would appreciate that suggestion too. Thanks again!!

Realvdude
Realvdude

What we have now is working, what do you need something new for? Obsolescence does not enter into the decision process. I'm at the point that I need to discipline myself to at least learn the newer versions of what I use now, or risk fossilizing with the company. JJ - I'm on the other end of the kids, one in college and one in the army, so we've begun the parttime empty nest era. This means my wife needs a little more of "us" time, because no one else is around.

beg0757
beg0757

you are located in my area - I wonder if you are at same company :) Anyway ... talk about legacy apps ... try cobol and assembler app coding! Most of my vb .net has been with sql server reporting services writing functions and expressions - not exactly worthy of how it works from scratch. I am clueless in that arena :(

Justin James
Justin James

A few weeks ago, I re-wrote a piece of code I wrote in VB.Net to C# about a year ago. Along the way, I ripped out the threading system I had home brewed, and replaced it with the Parallel Extensions Library. I was shocked at how bad some of the code was. Looking back, what had happened was that I had become so preoccupied with the central problem (namely, home brewing a threading system) that I had completely ignored the quality of much of the rest of the code base. I had spent so much effort trying to optimize that threading model, that I missed a lot of other optimizations. During the re-write, I significantly improved the rest of the code, since using the Parallel Extensions Library left me with more energy and time to address the other issues. J.Ja

CodeCurmudgeon
CodeCurmudgeon

Agreed, once you get past the basic stuff, you are left to experiment and pound your head against the monitor 'till you discover the incantation you need, or else seek out a wizard who will answer your questions. BTW: The best book I've encountered for getting over the hump from beginner to advanced techniques was Joe Celko's (sp?) _SQL for Smarties_. admittedly it only covers SQL, but there is a dire need for books like that for other technologies.

beg0757
beg0757

tell me how you started ... youre my hero! LOL

CodeCurmudgeon
CodeCurmudgeon

My best friend's girlfriend went to MIT starting in 1974 and majored in software engineering. How many classes do you suppose MIT offered her in programming languages? 0. Zero. None at all. They believed that any language they taught would be obsolete by time the student graduated and concentrated on a teaching process more like law schools use, teaching how to learn languages and technologies. When I graduated from a midwestern state university, I had five hours of FORTRAN and five hours of assembler for GE-Honeywell mainframes, one hour of COBOL and an hour of PL/1. Amazingly I did actually use the FORTRAN for a decade after graduation and the PL/I for nearly a decade after that. . . Then the whole world went GUI and most development stuff started being arbitrary and ill documented and requiring experimentation to determine whether techniques would work or not. Thanks, Chairman Bill for turning Computer Science from a branch of mathematics into an experimental science!

Justin James
Justin James

Yeah, that's a good point! How did you end up working in basic C on Linux? That's a bit of a change for you! J.Ja

jslarochelle
jslarochelle

Before moving to the newest silver bullet people should make sure that they master their current tools. This is a continuous process of course because new versions of a given platform adds new constructs and sometimes changes known behaviors. I know some people that sit on their laurels and are stuck using the mindset of a previous version of a tool. Very sad. JS

Justin James
Justin James

You seem to be one of those lucky developers who are able to stay in a development environment which you 100% (or close to it) control, and at the same time, do not seem to need to worry about the resume. Not 100% sure how you lucked out like that, but I am a bit envious. :) J.Ja

Justin James
Justin James

... I used to use my evenings to try new coding ideas, read magazines, etc. Now that there is a woman and a child in my life, my evenings are spent primarily with the family. Any learning has to happen after 10 or 11 PM! J.Ja

jslarochelle
jslarochelle

I think that's one of the reasons why truly mastering a tool like a programming language is a lot of work. It is also one of the reasons why good programmers are worth the money. JS

Justin James
Justin James

To make it even more maddening, these things are always changing. There were, for example, code optimizations that I would do in VB.Net in .Net 1.X that seem superflous in .Net 2.0 and 3.X. And the "right way" of doing things is always expanding too. I almost wish the compiler had access to a list of obsolete code patterns and alert me to them... J.Ja

jslarochelle
jslarochelle

For most business code, casual programming in Java or even the slow Ruby 1.8.x (C interpreter) is adequate. However, there are cases where a deeper understanding of your language and platform is required and that is where the senior (or advanced) programmer gets his mark. In some situations, realizing that thousands of small object allocations are hidden behind your code (in the form of autoboxing of primitive values or other such things) and adjusting your code to avoid the pitfall can make a big difference (String concatenation with + in Java use to be a good example but the new Sun compilers now use a StringBuilder for this). Of course people should first focus on good design and then if performance issues are uncovered get the profiler out and fix the problem. If things are well encapsulated fixing should not be a problem. JS

Tony Hopkinson
Tony Hopkinson

Do everything you can in the high level stuff, and as little as you have to in the low level. You want the low level stuff to be self contained with very clean interfaces, none of this one method with fifty argument of which 40 are optional crap. Any one who starts complicating the low level stuff just because they can should be beaten unmercifully until they agree never to do it again. Personally I'd always rather adjust a datamodel to improve an algorithm, than start looking at how I can optimise a poor one. Most of the problems I've seen can be solved enough (optimisation is always diminishing returns) to be practical without resorting to the big hammer that is C or machine code. The question has never been can you make it faster, it's always been, is it worth the effort. Well at least for those of us who know what we are doing.

Justin James
Justin James

I can't think of any off hand; to be honest, I rarely read programming books (although I am planning on reading one about Ruby soon). Sadly, most of the programming books that I have glanced through either follow a "reference book" format, or a "for dummies" format (where they show small snippets of code). The only book I saw that really walked you through a project "Cradle to Grave" was a C++ book I read partially through a while back; I don't recall the title of it, it was a book on the shelf at a job, and I'd read pieces of it while waiting for things to download and such. J.Ja

Tony Hopkinson
Tony Hopkinson

of Hello World, then I realised I needed to internationalise it. :(

jhoward
jhoward

A few years back I was updating/rewriting a few tools that were originally done in C (a product of the time they were written) where I had written my own linked lists, dynamic string buffers etc. Rewriting the apps in C++ using the STL containers and strings cleaned everything up so much that I noticed a lot of optimizations I had missed (as well as bottlenecks I had introduced myself) while trying not to introduce buffer overflow errors or references to NULL pointers. In keeping with the main topic however it is mostly time that FORCES me to update my skill set because as so many developers can attest to, getting that product out the door has become all important.

Justin James
Justin James

Ah, the NC/SC area... my current specialty. :) Charlotte is nice, fairly pricey to live in. Unfortunately, it's major IT employers are Wachovia (currently merging with Wells Fargo, which should produce layoffs) and Bank of America (laying off 35,000 over the next 3 years). So I would suspect that Charlotte is about to become a "buyer's market" when it comes to IT talent. Greenville is a different market, one that I am not familiar with. I know the Columbia market quite well. Currently, it seems to be holding steady, but people are getting worried. Let me know if you get serious about NC/SC, I know oodles of quality recruiters in the area (and a number of people who can keep an eye out for you), I'd be glad to get you in touch with them. I just got back from Florida earlier today (Brooksville, near Tampa), visiting my grandmother. Nice place to visit, I'd hate to live there, at least in her area. Very clear distinction between the "haves" (older retirees and the doctors to keep them on their feet) and the "have nots", and it is rather depressing to me. It seems like the only people who are successfull and under 60 are doctors. J.Ja J.Ja

jck
jck

I work with all good people. Everyone from the janitor to the head administrator seems to be cool. Although since I wrote a previous post, I had my boss put a start time on me. Has kinda ticked me off, cause I hate reporting in like a school kid or a untrustworthy spouse. If I was not going to be able to make it in that day, I would call. That's professionalism. Having to call in every little delay (like I did at my last job) just seems like micro-management and borders on professional stalking. Where I am now, I am one of two senior programmers. I am more of the Microsoft-trained person, the other guy who's been here years is a Unix/Linux/C++ trained guy and he's real sharp. It's nice to work with someone so competent and intelligent who I can actually talk with technically about things without getting the "huh????????" look. As for jobs - Well, I have made a decision...of sorts: I will either be here another 1-2 years, or 20. I am actually looking at moving to the Charlotte or Winston-Salem NC, or Greenville, SC areas. I like that part of the country. I think part of my dissatisfaction is geography...and the fact that there are so many annoying, rude, beligerent and pious retirees down here in FL who are of the mindset that they own the world after 40 years of work and can drive however they want, be as rude as they want, and disobey the law when they want. (Yes, I have uncountable times seen elderly people in FL run into someone and just keep going...and when the law catches them, they don't jail them like they would a younger person.) If I don't go to SC or NC, I think my next option is either OH...or TX/OK. After that, I might move all the way to CA and go to work at Long Beach on the docks with my cousin and get in there with seniority before he retires so I can have a good pension. But somehow, I have to find a happy place in life. If a geography change doesn't work, then my next option is change of profession. I think I'll become a trash truck driver lol :^0

Justin James
Justin James

I've had jobs like that, loved them. Never worked for government. I can tell you, the major differentiator between those jobs and the miserable jobs: * Did they respect me as a person, or think of me as a "human resource"? * Were they large enough to employ multiple people for any given role, or was it a "many hats" scenario? If they *did* have many people per role, how good were they? * Were the deadlines for projects reasonable, or were they "what-if" scenarios or completely based in fantasy? * How tolerant was the organization of delay? Would a missed deadline cost money, or would it simply be "let's apologize and move on"? * Was the company willing/able to hire more people? Or were they strictly into controlling costs, or maybe not allowed to hire people for whatever reason (talent shortage, poor pay scales, in a bad location, etc.)? J.Ja

beg0757
beg0757

Your first description sounds familiar ... been there ... done that. It isnt that way now for me but there is no time for learning either - unless on my own time - whatever THAT is (there isnt any). Its refreshing to hear that some make it out of the rat race back into some form of sanity. Maybe I need to look into a government IT job :)

jck
jck

I got a job in the private sector...where I interviewed and it was "oh yes...you will get this and that...and you'll like it if you like learning the latest tech." Of course then: - they started demanding I work more hours than I said I would be required to - they started making it my responsibility to make up for time when management lolly-gagged making decisions - they broke their promise of making sure the vacation I requested got honored...and a friend of mine who I was going to see ended up dying and I didn't get to see him like I was supposed to. So, I got treated like crap, driven crazy, micro-managed, stressed-out, and then in the end found a job working in a government IT shop where my new boss told me in the interview "I don't care when you get here...just work 8 hours for me and don't leave before 4:30pm. Okay?" So far, I've gotten in as early as 7:15am and as late as 9:15am...never left before 4:30pm...and never had anything said to me. Plus, they told me to learn it all on the job. They said "You don't get paid for working at home, so why should you?" It's refreshing to have people to work with who really care about you and your having a life.

beg0757
beg0757

Last time I *really* coded was in cobol and assmebler ... for *years* then started working with Reporting pkgs (Sql Reporting Services, CA Cleverpath Reporter, F&T etc) which allowed a little exposure to VB .net in writing reports (expressions, functions, calculations) but not writing a vb.net from scratch (or even from snippets on web). I have taken a vb .net course - but it was just going thru the steps - didnt really "get it" like I did when learning mainframe languages. So how does one pick this stuff up? and then get past the beginning?

Tony Hopkinson
Tony Hopkinson

box were damn strange. I had a bucket full of problems with XP as well. I know I'll be very reluctant to purchase Toshiba again.

jslarochelle
jslarochelle

Because right now things are ambiguous to say the least. I think that M$ would benefit from having a free multi platform .NET. There already is a lot of interesting code coming out of the MONO community and this is bound to increase in the future. And it would be good to see M$ contribute something for a reason other than purely money for once. Right now however for multiplatform development I would stick to tools like Java (or Python, Ruby, etc ...). Because MONO could quickly turn into a Trojan horse for distros like OpenSUSE or other Linux distros that have key applications build on MONO. Currently I'm running a number of Java applications in both Windows ans Linux using the same JAR and this is working great so with Java getting open sourced I think this is one of the best environment for multi platform development. In the meantime MONO is very useful for developers like me working on Linux at home and Windows at work. I look forward to reading about your experiments with MONO. JS

jslarochelle
jslarochelle

In my case I did not buy a machine with all the latest stuff (not a quadcore or exotic brand). This was planned not just for budget reasons but (because I was thinking of moving to Linux) to avoid having to chase drivers and tweaking the configuration. Still, I was a little bit surprise how fast I was able to make the move (first distro I tried). I was also surprise at how good and user friendly the main distro are turning out. Although I expected this I was also surprised at how much better large environment like Netbeans run better under Linux. At work I'm running XP on a sligthly more powerful machine and Netbeans is not running as smoothly. I don't think its the JVM version because even a native Windows applications like C++ builder run very well under Linux/Wine (this was just a test, I do not really plan to use this because for C++ I plan to use the GNU suite of tools (possibly under Netbeans because it's turning out to be a really nice C++ environment for the GNU tools). Although I have used Linux in the past (something like 3 or 4 years ago) newer major distro feel really good (I also have Ubuntu on a second partition). For a programmer the shell (bash - default for many distro - in my case) is very nice also. So nice that I have installed Cygwin at work in order to be able to reuse scripts. JS

Justin James
Justin James

I've been playing (off and on) with the Mono Project VM of SuSE w/Mono, to give it a test spin. Early in 2009, I'll be writing an article about what it's like to try porting a Windows .Net project to Mono. :) J.Ja

Tony Hopkinson
Tony Hopkinson

All blew chunks on the hardware, in various places. SimplyMepis was the first on that worked both as a live CD and then did the same on install. Had a few fights with it, expect a few more, but it's interesting.

jslarochelle
jslarochelle

I'm going through a similar if in a way less ambitious process. I recently bought a new PC for home. Because I was getting tired of Windows I tried one of those "live" Linux DVD (one with OpenSUSE 11 on it). Since it booted up with no problem I decided "the hell with Vista" and clicked the "Install on hard drive" desktop icon. I'm having a great time rediscovering the bash shell and finding out how great Linux is as a developers environment. Even managed to work on my C# stuff using MONO. Since I'm also able to work on my Java stuff using Netbeans (and Ruby, Groovy, ...) I doubt I will ever go back. Those new Linux distros are very good (I also took a look at Ubuntu). JS

Tony Hopkinson
Tony Hopkinson

Well sort of anyway. : cmake, batch files, shell environment, permissions. Just getting the bits running that some of the examples assumed just should... Kdevelop for instance relies on automake, but I didn't really find that out until I couldn't build anything. And while you can find shed loads of documentation, it all seems to assume you've built up to the IDE, so you'll have and know all this anyway. It's pretty much a classic situation with linux help, if you want it handed to you on a plate, you'd best like broccoli in passion fruit sauce.

Justin James
Justin James

I remember using the more "old school" technologies during school, like COBOL, vanilla C, vanilla Pascal, vanilla BASIC (meaning "line numbers")... there was great educational value in them, but I highly doubt that I would do them at home "for fun". Well, that's not 100% true; if I stumbled across a really good 1970's or 1980's era "how to become a programmer from scratch" type book, I might give it a go, just for the sake of revisiting the fundamentals. I know that for me, what I was leanring in C (data structures like linked lists, trees, graph maps, stacks, queues, etc.) was extremely valuable in molding how I think, even if I rarely use it in practice. Ditto for COBOL. J.Ja

Tony Hopkinson
Tony Hopkinson

But it had gone silly and I couldn't find the recovery disk. So having promised to give linux a bit more of a go several times. I thought bugger it and did. Probably going to prompt a misadventures with linux post, as I have never tried using linux as a desktop, and the machine had some serious mismatches with some distros. Toshiba Equium EA60, not a machine I'd recommend for a linux adventure, unless you like battling unfriendly natives with a novelty balloon. Eventually however I got SimplyMepis to 'just work'. I installed KDevelop, as I've always been of the opinion that you don't know something until you use it in anger. Several missteps later I got that working, too well. Essentially I didn't have a clue what it was doing under the hood or why and there was too much of it to know where to start in crud reduction. So being a curious fellow (take that how you want :p ). I uninstalled it and went to GCC at the command line, with SciTE (thank you Jacqui) as my editor. Now I'm learning stuff, including relearning vanilla C. Learning is fun, as long as you can find a suitable starting point. I've found the further removed I am from my usual environment (VS 2008 and Delphi 6) the less time I spend tripping over foolish assumptions about how it should work. For the newbies and the less tech wise though, I've got to say I'm a professional and I urge you do not try this at home. :D

joeller
joeller

Six years ago I got a couple of Microsoft Certifications, which were almost immediately obsoleted by the release of .Net and a couple of years later by SQL Server 2005. However since that time I have been working for employers serving customers who want to stay with the old and proven (My last employer's client had decided that SS2000 was safe enough to use and was upgrading to it in 2006.) In addition, I also find myself having to spend time in parallel learning to service new customers with different environments, so instead of learning the latest SQL Server methods and tools I have to spend time learning Oracle and DB2. Instead of completing the task of switching from VB.Net to C#, I end up learning Java and JSP and their various IDEs. Instead of building my SOA skills and AJAX skills I end up having to spend time learning the about the ObjectDataSource control. Needless to say I have books on all sorts of new methodologies and skill sets which I have never been able to finish because as soon as I get into one I have to drop it and learn something else. It is very frustrating.

Justin James
Justin James

It's odd, I think that I would be very happy in a very "pure logic" programming environment, in which I was working on algorithm type stuff (in which case, "latest and greatest" usually has no place). Otherwise, for the work I usually find myself doing (small scale utility type apps and Web development), the existing tools are a pain the neck which the "latest and greatest" promises to alleviate, but in reality, they just add Yet Another Abstraction Layer. This would be fine, except that they almost always have a "chink in the armor" of their abstraction layer, requiring me to go in at a low level and plaster over the problems. It relly annoys me. The .Net data bound controls are a good example. Data binding as an idea is great. I think it's rediculous that programmers still need to put forth effort to get data onto the screen. But at the same time, the data bound controls rarely meet my needs, and in nearly every project I touch, I find myself manually opening a DB connection to run a query and then inject the values into the UI. Ugh. On a related noted, ORM is like that too... every ORM system I've touched never seems to cut it. This is the appeal of the "latest and greatest", because the 80% that existing systems give me is never 100% of the project I'm working on! J.Ja

Jaqui
Jaqui

I wouldn't be happy with a company that always wants the latest and greatest new tech. So, by improving existing skills instead of learning the latest and greatest, I get interest from companies which value skill and quality with PROVEN [ aka stable ] technologies. If we get more specific, like cloud computing, I will learn enough about it to be able to write such an app, if I ever have need to, but using languages and techniques I have spent the time developing my skills in, rather than using the latest techniques. I'm currently working on a project specification for a "pet" project. a standards compliant tool set for cross platform development, for C, objective C and C++. By tool set, I mean a compiler, base libraries, make, patch, widget set, IDE that will support ALL operating systems, and look, feel, function the same on ALL operating systems. [ big project, but it will be interesting. :D ]

Editor's Picks