Commentary On How To Make Novice Programmers More Professional (slashdot.org)
Over the weekend, my colleague David ran a story that sought people's suggestion on how to make (force, encourage, advice) a novice programmer to be more professional. Several people have shared their insightful comment on the topic. One such comment, which has received an unusual support on not just Slashdot but elsewhere, is from William Woody, owner of Glenview Software (and who has previously worked as CTO at Cartifact, architect at AT&T Interactive). He writes: The problem is that our industry, unlike every other single industry except acting and modeling (and note neither are known for "intelligence") worship at the altar of youth. I don't know the number of people I've encountered who tell me that by being older, my experience is worthless since all the stuff I've learned has become obsolete. This, despite the fact that the dominant operating systems used in most systems is based on an operating system that is nearly 50 years old, the "new" features being added to many "modern" languages are really concepts from languages that are between 50 and 60 years old or older, and most of the concepts we bandy about as cutting edge were developed from 20 to 50 years ago. It also doesn't help that the youth whose accomplishments we worship usually get concepts wrong. I don't know the number of times I've seen someone claim code was refactored along some new-fangled "improvement" over an "outdated" design pattern who wrote objects that bear no resemblance to the pattern they claim to be following. And when I indicate that the "massive view controller" problem often represents a misunderstanding as to what constitutes a model and what constitutes a view, I'm told that I have no idea what I'm talking about -- despite having more experience than the critic has been alive, and despite graduating from Caltech -- meaning I'm probably not a complete idiot.) Our industry is rife with arrogance, and often the arrogance of the young and inexperienced. Our industry seems to value "cowboys" despite doing everything it can (with the management technique "flavor of the month") to stop "cowboys." Our industry is agist, sexist, one where the blind leads the blind, and seminal works attempting to understand the problem of development go ignored. You can read the full comment here or here.
How come we don't ask this question? Can we get rid of the layers of useless HR bureaucracy?
It does not comment the obvious, that industry love the young because they are cheaper, and have yet not learned to say no to crap.
How do you become a more professional programmer when your full time job isn't programming?
I was a video game tester for six years, went back to school to get an A.S. degree in computer programming, and got into IT support because I enjoy the work. I program at home (Python and web development) and occasionally write PowerShell scripts at work, but the only time I deal with other programmers is when I'm cleaning up their messes over the network at work.
BTW, Microsoft SharePoint IS NOT a proper bug tracking tool.
I like how much of the comment was focused on arrogance, and then he broke out the Caltech means I'm smarter bullshit.
In short its because idiots are too stupid to realize their own stupidity that experience is derided as outdatedness.
Of course a certain addiction to the "new and shiny" is probably what got many interested into CS in the first place, so it will be hard to get rid of that completely
This is then bolstered by employers knowing exactly that some 23 year old will work insane hours and is much more easily exploitable than a veteran.
Here comes the Dunning-Kruger effect on the employers side: They too are unable to realize that the code produced by a newbie can be orders of magnitude worse than that produced by a veteran. Sure the LoC per day look impressive but it is not at all a measure for productivity.
They say the brain is the second thing to go.. I forget what the first thing was.....
"File to fit, pound to insert, paint to match" - Aircraft Maintenance 101
I got the same impression. It was his proper use of capital letters, commas, paragraphs, grammar in an essay that was logically constructed that shows his loss of faculties. Any one can do that with some effort. A younger person would have been able to forcefully make the same point with a concise tweet:
HAXXORS Sux!!! sjw ftw!
all the stuff I've learned has become obsolete
And as a mechanical engineer in my 30s I wish that some older engineers would accept that some of it is.
We trail behind software by some years, despite building software constantly. Every engineer I work with insists on building their own Simulink models. "Continuous Integration" is just some "new fad". Yet every so often we'll have builds break because they didn't run the build scripts in the right order.
I could replace 4-5 full time engineers with Jenkins and some continuous integration scripts building software, doing the dSpace hardware in the loop testing and e-mailing us the results.
Our process was literally:
I had the whole process packed up into a Jenkinsfile and automated but most people thought it was some "new fad".
Accept that sometimes we come up with a way to do better.
Too often I've heard that the way I develop my web applications is outdated. My 'old' but proven stable an secure approach is labeled 'obsolete', while the modern and 'cool' new techniques often cause stability and security issues. There seems to be an unspoken contest for many young developers to be the first to adopt new fancy technology. It's more about being cool than about delivering quality.
Also, many young developers use third-party libraries too easily. They don't look at the quality of that library, they only look at 'does it do what I want'. Too often, that results in a big mess of spaghetti code. Young developers are lazy, too lazy to determine the 'general approach' (don't know the right English term for it) for their software and they're not mature enough to stick to that. I a big fan of the Keep It Short & Simple (KISS) approach. The third-party libraries I use must also follow that approach. If I can't find the right library, I write it myself. Yes, that takes more time. But it will safe time in the end, because it will give me good control over my application. I won't allow a crappy third-party library to mess up my application. Ever.
It doesn't have to be like this. All we need to do is make sure we keep talking.
Yep, I've been coding for 40 years and have seen this argument come up over and over. Every set of 20 somethings pee on older coding methods and bang the drum for their 'new' way of software development and then when they get into their 30's they bitch about the the next 20 year old's peeing on their code. They should teach a class in college about it. There's only one thing worse than this. It's some 50 year old Architect who always trying to prove he's hip by jumping on every new thing that comes down the development pipeline. Everyone gets caught in a permanent rewrite mode until the product fails to meet the delivery date, the customers leave, and the company folds.
I agreed with the poster up until the last part, where he suggested that the "massive view controller" problem was a misunderstanding of what constitutes a "view" and a "model". I'd ask poster if he understands what constitutes a "controller" in the MVC model. And from that I surmise that who ever told him he didn't know what he was talking about was probably correct, at least in that particular instance.
But that the poster didn't realize this, throws into doubt earlier things he said, which I agreed with up until I got to that sentence. It strikes me now that those perspectives might really have been the result of the posters "arrogance and ignorance" as the phrase goes. And furthermore that his claims of things being a solved problem for "20 to 50", while I agree this happens a lot, I think we might disagree on what the specific instances of this are.
I would say for instance that, while it didn't need to invent a new language to do it, "Rust" provides a good solution to dynamic memory allocation (namely, compile-time static analysis), that is different and in many ways better than garbage collection and automatic reference counting (ARC). While he might claim this problem was solved decades ago, it is just a fact that compile-time static analysis for dynamic memory allocation did not exist until recently, except in the form of "scope" as opposed to "lifetime", which, while similar, it is different from.
Now there will certainly be a great deal of rediscovery, of re-inventing wheels poorly (for instance i just found someone re-created the java "date object", but made the linux epoch (zero milliseconds) dependent on the time zone.), but it must be noted also that there still are a fair amount of new, interesting ideas.
Anyone who's been in the industry for more than a decide knows it.
When Fascism comes to America, it will call itself Anti-Fascism, and tell you to give up your guns.
Younger people are usually cheaper and easier to fool and push around. We've outsourced thinking, experience and knowledge to the machine. There's no going back. Welcome to the permanent "Leisure Class" except with no money. We're boned.
Well, there was the one lonely close paren in an unfortunate location...
You have the right to remain sentient. If you give up the right to remain sentient, you will be elected to public office
It’s kinda hard when the “tried ant true” (cough, PHP, cough) is one of the most unprofessionnal language there is
Maybe it is time to let go, retire and go repair motorcycles or support local communities by starting up a Hackerspace or something.
I've been watching the development of AI recently, reflecting on all of the work we did in the 70s on Machine Intelligence and Perception, or in the 80s on Expert Systems, and ruing the day that all of that expertise was kind of lost; we seem to now be benefiting from the march of technology to provide huge resources for computation that are built into Brute Force solutions for Deep Mind kind of AI, and we have lost the focus on what makes an intelligently coded algorithm.
As one old enough to remember when "meme languages" meant C and SQL. Then Ada. Then Perl, Java and Javascript.
To be a pro you need to learn the new meme languages enough to make your own decision whether to use them rather than rejecting them because they're not the tried and true language you've been using for the past ten years.
However, in my experience the mistake most programmers make is learning a single IDE/framework and expecting everything to be done in it. Visual Studio, Eclipse/Spring, Node IDE de jour, whatever. That guarantees you will be obsolete in a couple of years.
A surprising amount of the resistance is plain fear: if you describe a solved problem in computer science, some number of the PHBs and some of the engineers will be frightened, and push back. Others will cover their ears and say "naa, naa, naa, can't hear that". After all, if they knew it was a solved problems and did the wrong thing, they could get in trouble!
The frightened folks need to keep an eye on the news: I reccomend the morning paper.
The person proposing a known fix should do so either very early in the project's life when it's easy to change, or very late, after a fiasco when it has to change. The middle is A Bad Time to change horses.
davecb@spamcop.net
This sort of thing affects lots of different organizations not just the programming world. The arrogant newbie enters into an organization and immediately wants to change everything because in his/her eyes, until they came along the place was being run by a bunch of hick hayseeds. That's not to say that things can't be improved but one needs to spend some time observing, building relationships, and then making suggestions for improving things. One of the most appropriate lines from Beverly Hills Cop is when Axel Foley's boss tells him, "You're a hell of a good cop but you don't know every f*cking thing."
Our industry seems to value "cowboys
Yes. I have lost count of the number of times people have been praised and rewarded for fixing some "disaster" or outage. But without anybody ever asking how the problem occurred - frequently at the hands of the very same hero who then "saved" the company.
There seems to be the view in upper management that problems just happen: like earthquakes and floods. There is usually so much relief when the lights come back on (metaphorically) that everything leading up to an outage gets forgotten or forgiven. I even know of some individuals who, if not exactly creating problems, are very happy when there is an issue. Not just because it gives them the opportunity to be a "star", but because all the process-driven and procedural restrictions get tossed, and they have free rein to fix things by any means necessary.
politicians are like babies' nappies: they should both be changed regularly and for the same reasons
The commentary has a major flaw. It does not comment the obvious, that industry love the young because they are cheaper, and have yet not learned to say no to crap.
Not only does it ignore the primary reason why companies often favor young workers, that omission causes the commentary to not touch on the the times when our industry values experience as much as any other.
While I have seen a great deal of ageism in this industry, I have never seen it on projects when a project is really important to the company. When I work on a project where the C-level really cares about its success, they don't want young people in important roles on the project. I grew out a beard in my early 30's just to look older, because of instances like the time I had a client I first met in person after working with her remotely for months say "wow I pictured you as a grizzled veteran, but are you even done with college yet?" I try to downplay my age as much as possible since in many important meetings I'm the only one under 40, and often one of the few under 50.
Ever since I graduated to projects where success will actually move the needle of the company's financial statements, I have heard far more derogatory comments about how young someone is than derogatory comments about how old someone is.
-- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
It's not because your obsolete, it's because you're too expensive. When I was young I was lucky to get $40k, now I can command six figures. It's because I have experience. If you want more professional programmers then pony up the cash for experienced professionals... you get what you pay for and there is no free lunch.
If you are a senior professional, the important thing to remember is don't price yourself out of the market. For me, salary is usually the last thing I think about during the job hunt, I'm more interested in finding a role doing something that I enjoy and something that can benefit from my experience. As long as pay is within two standard deviations from the national average I'll seriously consider the offer. Also pay isn't everything, I prefer companies with a good benefits package and ones that are stable with a proven track record.
As a member of the Obsolete generation, I have a "biased" view of what was stated. The industry is guilty of being Ageist, and Sexist. Also of being blind to history. Thus they repeat it. All the "new" innovations are based on reworked versions of past innovations. The Cowboys rule and they have always. Companies and schools have tried to impose standards, but fail because results count, not support ability. Batch job submission became RJE, RJE became RPC with a GUI, Time sharing became CIS, Citrix is timesharing in a new wrapper. Everything old is new again once its repackaged. But show me the Millennial that understands that and they are just as obsolete as I am. There is not a shortage of qualified programmers, there is a shortage of Mid and upper management, and young programmers that understand this. Its the nature or culture of IT in general. .Who can do it quick that counts. That is why we have always had want ads that ask for 5 years experience with a product that has been out for 6 months. In the end it does not matter if programmers are professional enough, they will be phased out by AI not too for in the future. Many who call themselves programmers today are little more then scrip writers. Its a dying industry.
The core problem is not w/ engineers nor CEO-level executives: the real root problem here, as usual, is a failure of low-level management & hiring policies.
Error: NSE - No Signature Error
"Programming is not a field, it's a pop culture." -- Alan Kay, paraphrased
Ezekiel 23:20
I didn't read the original article. I did read the summary which says absolutely nothing about "How To Make Novice Programmers More Professional." It seemed to be a whinge about how one seasoned developer felt disrespected by management. I don't see how that helps make novice programmers better in any way.
Looking back on my development, a mentor was insistent that shortcuts often lead to delays and inefficiency later on. Do things right in the first place and move forward.
I'm not sure that's relevant to this discussion, but I'm one of the dinosaurs.
Funny, I remember winning my first autocross race against 25 young punks when I was 56 yrs. old. But go ahead and keep thumping your chest moron.
Just another day in Paradise
It's not asked much because the answer is no.
Control in employment (and government) extends top down, not bottom up. Most places, if you even attempt it as bottom up, you're likely to be out on the street, starving.
If you don't want to be a controlled resource, then you have three options.
1: Strike out on your own. This is very hard, but it can be done. I did it and was successful at it. I retired reasonably early (in my early 40's) and have been enjoying myself since. I did it without a college degree, and got a good deal of it done prior to the Internet. If I had had the Internet available in those early days, I would have saved a lot on textbooks. :) Basically, this is "if you want it done your way, you need to be the boss."
2: Find the means to search until you find the very rare exception to the rule where the idea of actually doing good work is integral to the operation, and get them to hire you. This type of job search is expensive, slow, unlikely to succeed (there are very few such operations, comparatively speaking), and it also means that you still probably have to navigate the idiotic irrelevancies HR throws up on a constant basis. They still may not do things your way, but they may be using methodology that works well and you can at least live with.
3: Move into a field where this stuff isn't a cause of going home at night so annoyed your dog avoids you.
I've fallen off your lawn, and I can't get up.
Sure. Anyone my age has seen the wheel reinvented several times because the minicomputer people were too arrogant to study what the mainframe people had done, and then the microcomputer people were too arrogant to study what the minicomputer people had done.
"How to Do Nothing," kids activities, back in print!
I'm in IT, and we have the same problems programmers have, to a slightly lesser degree. Experience is not valued the same way it is in other fields -- most people don't trust a doctor straight out of medical school more than they'd trust a mid-career specialist who's probably seen thousands of patients. The reverse seems true in development -- employers place enormous faith in fresh grads programming in Web Framework of the Month and discard people who've seen this stuff 20 times over because they're too expensive. In IT, experience usually matters a tiny bit more, but it's really hard to justify the higher salary levels and you have to work very hard to keep your skills current as you age.
I'm in the middle of a huge "migration to the cloud" for one of the core products the company I work for sells. When talking about Azure, Microsoft lumps us "old school" folks into a term they call "IT Pros" to separate them from "Developers." Because it's the cloud and they're targeting new developers writing from scratch, almost everything provided is aimed at developers and abstracted to a very high level. This is getting better, but Microsoft's a software company and they're used to interfacing with developers especially since they're not releasing packaged products anymore, instead they're rolling out and improving services as they go. The truth is that all this cloud stuff is just another layer removed from the actual hardware to make people's lives easier. It doesn't absolve you of the need to design in contingencies for failures or to know how things actually work at a low level. The best people I've worked with on cloud things so far have been the older crowd -- they understand that behind the magic is still servers, still TCP/IP, DNS, load balancers, VPNs, firewalls, etc. and that the concepts behind these haven't disappeared. Someone fresh out of school might not have the background and might even say "oh, that's low level crap, the cloud provides magic 100% uptime and infinite scale!" (And yes, I've had conversations that end like that...the concept of backup and DR is lost on some people regardless of cloud-vs.-on-premises.)
That said, I do know people my age who haven't really grown all that much in their careers and have done the same thing for ages. The problem is that everyone over 40 gets lumped in together. You basically have to know someone to get hired past 40 at some places. How do we as an industry recognize hard-won experience for what it is instead of worshiping the cult of the 25 yeard old startup employee working 100 hour weeks because they're basically learning on the job?
Like the difference between "bear" and "bare". Or maybe how to not keep the smart quotes from Word in the article so it doesn't barf on the screen under /.'s retarded lack of unicode.
I don't see a lack of professionalism - just standard lack of experience and youthful hubris. And only more projects and time fix those.
That is all.
For vaguely similarly slow scripting, there is:
Python. Tried and true. Worlds better than PHP.
Perl (it tends to be messy as hell, but it's certainly tried and true, and it doesn't have to be messy...)
There's no good reason to use PHP. There are bad reasons -- like "PHP is all I know", and "they made me use PHP" -- but there are no good reasons.
If you require real performance, you won't use any of the above. Performance is not their strength. They only way they can achieve performance is to either bring huge hardware to bear, or end up calling something written in a high-performance language. For tried and true, there is c and c++; for the risk-takers, looking into go might be called for.
And just so I don't have to bother to reply to the inevitable whining about c (which is always whining from those incompetent in c), yes, you'll need a good programmer, or several. There are plenty out there. Of course, you might have to stop looking in Islamabad, Mumbai and grade schools for your employees in order to find them.
I've fallen off your lawn, and I can't get up.
Do those people get upset about Hillary exonerating pedophiles by manipulating polygraphs?
I'm so confused.
.NET devs at my church over 50 who no one will hire.
I keep hearing startups refuse to consider older developers, but then I hear there is more opportunity for them there.
I really have no idea, and any advice for how to navigate age is welcome. I have 2
Saying older programmers can't perform as well as younger ones is just HR-speak for "older programmers don't put in free overtime." You can't change HR.
Don't stop where the ink does.
http://thecodelesscode.com/cas...
Ten Thousand Mistakes
âoeTen mistakes, a thousand times each.â
To be clear, I do not support the slander, or marginalization of anyone based on color, race, creed, or religion.. Moving on. So, I read through the comments, saw the ups and downs. But what's disturbing is the fact when those whom speak up regarding glaring issues, there is no support.. this is how most people see it, 1. employer wants to start an initiative to jump start productivity. 2. employer may not want to pay or does not have a budget for the expectations.. 3. leverage someone in the workforce to spear-head this project, regardless if they are qualified or not. Latteral move requiring no extra Budget outlay. 4. if it doesn't work, employer blames employee whom is laid off and then is also responsible for those whom acted on the advice and subsequently got laid off. Which opens other avenues.. 5. Now employer has several openings that can be filled by younger less experienced individuals (drones), that can try to do the work at a significantly reduced cost.. Long term looks shabby, short term looks great. yes I agree our profession is messed up to some degree, but does that mean that we should sweep incidences like this under the rug, and try to move forward with a short ter vision? Or, can we stop this vicious cycle and bolster a better future-vision for ourselves and those whom will undoubtedly come after our passing? What ever happened to the concept of "forward thinking?" Thank you all for your time and attention (or lack there of, thanks just the same)
I am strongly going on 50. The funny thing is, part of my work-time I code (mostly C these days) and for full consulting-rates at that, because what I code is apparently too difficult for the hot-shot cowboys. Of course, I also deliver useful documentation, analyze problems not caused by me, explain how web-technology works to "developers", explain different architectural, design and implementation options, do security analysis, etc. The very competent and helpful UNIX-guru on the customer-side is even 10 years older than me.
The part of the industry that is ageist and arrogant (i.e. the far larger part) is also very incompetent, and very, very stupid, because when it really hits the fan, they need some older guys (and the occasional gal) that actually have a clue how everything works and are not confined to their nice, sterile "Framework"-world, where problems do not exist and nobody needs to even understand how an URL is composed of components. This also nicely explain why so many IT projects fail or deliver vastly under-performing results: Lack of experience and the lack of understanding that comes with it. Amateurs.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
PHP is more a "tried and ran screaming" kind of technology....
That said, a really good developer can wrest solid code even from PHP, but it is kind of hard. Most PHP "developers" (and I include the language design team here) should instead realize their true potential and move to things like shoveling dirt, stacking shelves or flipping burgers. They would probably manage to even mess that up though.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
He did not stay on his obscure back-alley defrauding stupid people? Now he is trying to defraud everybody.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
Anti-aging technology is not encouraged here. Slashdot posts must only promote eugenics and genocide.
As a 50+ programmer, who has written lots of code in more languages than I can remember, I agree absolutely that experience counts for a lot.
Why am I not excited about that great new framework? Because it does the same thing that X did 2 years ago, Y did 5 years ago and Z did 10 years ago, and they were bloated crap too. Great steaming piles of half-tested code that introduce outside dependencies in our project that we cannot control.
Oh look, a new programming language. Everyone who ever enjoyed a compiler course has written their own programming language. Me too, whoopie. It's the libraries that come with the language that make it useful, not the syntactic sugar. It's the maturity of those libraries that make it stable and secure. I love playing with new languages, but I would never use a new language for anything important. WebAssembly? Ouch, please tell me they aren't serious, because I guarantee it will be used for productive websites far too soon. The articles about compatibility problems (websites depend now not only on your browser, but on your hardware), security breaches (sandboxed, riiiight), etc. almost write themselves, lacking only the specific details that we will hear all too soon.
On the process side: Agile programming? We called it iterative development 30 years ago. It has the same advantages and disadvantages that it always had. Scrum? Don't get me started. DevOps? Old hat with new buzzwords. If we keep changing our tools and processes every couple of years, it's no wonder we produce crappy products filled with bugs and security holes.
Chasing the new shiny is almost always a stupid idea if you are trying to produce a solid, reliable, secure system. Experienced programmers recognize crappy new ideas for the re-treads they usually are. Experienced programmers have probably built systems similar to what you need, and know how to do it. Experience counts for a lot.
BUT.
But, there is still competence. I have worked with "seasoned programmers" whose productivity was a net negative, because the rest of the team spent so much time cleaning up after them. Typically, these people have no idea how incapable they really are - they actually do view themselves as the seasoned, experienced programmer you just can't do without. Also typically, for whatever reason, you aren't allowed to remove them from your team.
And I have also seen young programmers produce some incredible stuff. Three of my bachelor students build a complete website, multilingual, including a custom CMS and custom rendering, along with most of an accompanying web-shop. For a customer with very specific requirements. In nine weeks. The code is still running today, 8 years later. The custom, multilingual CMS and the rendering system is rock-solid stable, running unchanged. Some of the code shows that they were only students - hard-coded constants and other sins - but overall it's better quality stuff than what 99% of the "seasoned" programmers could produce, much less in such a short time.
So, yes: experience counts, but so does skill. And the two are not always correlated...
Enjoy life! This is not a dress rehearsal.
Have you noticed there was Unix since the 70s, actually? What Windows? Many of us are using web and programming for the Web since the 90s.
Interestingly enough, you are still young and unexperienced to get the meaning of not taking crap. Interesting.
https://www.google.com/url?sa=...
I am in New Zealand and I have not seen age as an issue with the exception of pay expectations due to experience levels. I am 54 and no one asks if my knowledge is current, they just look at the work I have been doing recently. There is a shortage of skilled workers here so people are employed based on their skills/experience vs their pay expectations, age is not a consideration. My understanding is there is a skills shortage in the USA too so age bais seems counter productive. What about other countries? Maybe some Slashdot readers outside the USA and NZ would care to comment on what their country is like?