In architecture there is a trend of computational design - if you google for 'designed with grasshopper', you'll see some amazing shapes. The best designs don't come from the best programmers, they come from the best architects and designers who also know how to code.
Maybe it would be possible for them to become professional programmers, but I think it's much more valuable for them to be hybrids. Not every job can benefit from coding skills, but software is eating the world and learning how to code is becoming more and more widely applicable and useful.
That said, I think most people can learn to code, but I don't think _everyone_ can learn how to code. I have worked with a few people in menial jobs that I honestly don't believe could learn how to code. I realize that this is a pedantic assertion about corner cases, but I am a programmer. :)
Maybe that'll change in the future, but for now the wiser course may be to keep your superpowers to yourself.
Which is fine, but the tasks that go down that path aren't really enough to point me toward a full-time dev gig. So I'm in a weird middle ground between being a PM/BA/Developer without acquiring full experience in any of the three roles right now.
That being said, if I had to do it again I'd do the same thing. Just not sure how to navigate out of it.
Actually given the way our economy is currently structured, it's easier to get a good job as a developer having never written a line of code than it is to get a good job as a marketer even with 5+ years of experience. It might take you a couple tries to pass the interviews, but that doesn't matter because getting interviews is relatively easy. (Albeit if you don't have a GitHub portfolio, getting each interview will probably require you doing some take home assignment that will take a couple days for each company.)
There's always a few programming jobs that no one wants because the pay is awful and the company/job description is crap (PHP web apps for 28k/year? ROFLOL). But then they act as proof of employability for slightly better companies and soon you have 12-24 months of "professional" experience and landing interviews at OK companies is not unreasonable.
That's how a lot of us, no degree type, got our first foot in the door.
IT systems type roles are also a good segue into programming roles. And IT admin roles are so much easier to land.
Lotus Domino. Never Forget.
"client-server" VB6 apps with an MDB file on a NT4 fileshare passing as server is the lowest I've been lucky to have to deal with. Boy that was crap. That and actual cgi-bin script actually written in perl.
I suspect it broke me as a programmer for years!
As for family businesses, they rarely if ever hire software developers. They hire someone for a different role who can code, such as the "help wanted" sign I saw last week in Santa Fe looking for a sales clerk who could also maintain a small website front to back.
Amen. I'm constantly writing little Ruby scripts to do some automated task, usually fixing CSVs or extracting data to load it in a database to compensate for crappy reporting in a tool I use. I suppose that this or my recreational Clojure programming is something I could turn into a job, but I prefer to have it be a tool that allows me to do my job better. Or to run better D&D campaigns...
There definitely is a divide between like software engineer, and say person who uses programming to make their job a bit more efficient. It seems as though everyone is representing it as a binary choice when as paulcole said it's more of a gradient.
A lot of software interviews I've seen (and had to sit through) tended to be about tangential stuff like language minutiae, and whether you have memorized the Big-O complexity of the interviewer's favorite algorithm, and can you invert a binary tree without looking it up (because obviously we all code without internet access). Very computer-sciencey.
i liken it to any skilled trade. you can probably fix your kitchen table or change the brake rotor on your car but you're probably not qualified to work at a bespoke furniture shop or the porsche dealership - but you could be, if you really tried, or if you got lucky. and if you did get lucky, you could probably figure it out with some help.
some people just can't do these things, no matter how hard they try. they simply don't possess the aptitude, or iq, or whatever you want to call it. maybe just plain old discipline.
the interesting thing about programming to me is it's easy to lose - i'm totally unqualified to do anything serious these days because for the past 5 years i've spent most of my time running a business and doing 'housekeeping' technical (sysadmin, very light dev, some ops stuff) tasks that i don't want my senior devs to do.
You can code. The whole point the article is trying to get across is that a lot of people are simply unable to learn how to code. You've learnt. You CAN become a professional.
You just don't realize it.
The step you've taken is the hard one. In fact, there's another big dirty secret in programming.
A load of professional programmers aren't able to do what you can do, they can't make new programs. They can only modify existing programs. Making new programs is beyond them (or at least takes them an inordinate amount of time). Automating scripts to make their job easier is something that they would take weeks to do.
EDIT: I'm not sure I agree with the article though, I've heard several arguments that we simply teach programming badly. Especially in universities.
A load of professional programmers are not able to make new programs.
A load of professional programmers are not able to modify existing programs.
And a load of professional programmers are not able to finish programs.
Almost no-one is good at all 3. Most are extremely bad at least one of these.
Lots of people who are "good" at making new programs are actually pretty bad.
I'm bad at this. I'm not sure if this is caused by a lack of programming skills or a lack of project management skills.
But, try to actually take them up on the offer and you'll probably find yourself jumping through programming interviews that will scoff at your basic skills.
Most of us got started writing little scripts. It's definitely a great start. To say that he could work as a professional programmer now is ridiculous. Could he have a career if he put in the time? Maybe. Can he get a job? Maybe. But, it's not the slam dunk these people are suggesting.
Note that I'm not even differentiating getting past interviews vs actually doing the work. I think either would be a stretch from writing a few scripts.
Starting and ending one's programming skills with scripting is not a programming sin. For some businesses, there is a real, constant need fulfilled by someone who glues together data and systems with scripts. Personally not my cup of tea, but I recognize it works for some people and organizations; if those circumstances work for you, then that kind of job is nearly a slam dunk.
There is an enormous spectrum of software to be done. And not enough people to do it, currently. So getting a job could be very easy.
But, the point is a "professional software development job", not "something to do with computers"
I've never seen that work for actual software development, but I guess it depends on where you work/what sort of job you do.
I've seen it work for sdets though so who knows.
Working in a non-development group doesn't somehow make you not a software developer.
My point was the skills required in architecting a solution vs testing a given specific solution differ. So, while you can more easily fall/move into a automated testing role, it's harder to do so into a core programming job. The bar for moving into the latter, rightly or not, very much higher.
Personally, I think you probably aren't ready to actually interview and land a dev job. But, if people are saying they would hire you[0], this is a great chance to take them up on their word and in doing so, get your foot in the door.
[0] I don't believe them. You should take them up on it just to see what happens either way :)
I'll hire you.
I've worked in a marketing role in a software company and realize that I don't have the understanding of how to contribute in a meaningful way to a team-based professional programming project.
My workflow isn't ideal: bang my head against a wall, Google my way out, copy/paste/edit until things work, and move on.
Because I'm generally on a mission to get something done, I don't have the patience to name variables in a meaningful way or write clean code. I'm basically programming to accomplish something in the moment and it works for me.
To paraphrase the Woody Allen quote, "I'm not sure I'd want to work anywhere that would hire me as a programmer." :)
You might start as a junior dev but within a year you'll be talking the lingo, your toolbox will have exploded, and you'll be well on your way.
You have already demonstrated that you have the one quality necessary to be a good programmer. The ability to think abstractly and manipulate and express those thoughts in a concrete manner. Everything else is just practice and hard work.
To be fair, I am a programmer and I've had exactly the same thought over the years! ;)
I guess I finally have to get started with my work day... ;)
I've friends who are in the same boat and invariably the excuse is "I don't have the time to learn the theory, I have other things to do." Because of that, their workflow never really gets any easier. That's fine if coding is that side thing you do to make your job easier. That fails when it's what you want or need to do as an end to itself.
Also, I don't mean theory in the sense of the MIT "Introductions to Algorithms" book, I mean in the sense of the standard library, idioms, syntax and common usage of the languages and libraries you use.
I understand and almost echo that sentiment myself, but bear in mind that it may be an instance of impostor syndrome :).
Lots and lots of office jobs involve stuff like updating content on a Django app or shoestringing together Excel VBA and Access stuff. There's all kinds of tasks where scripts and low-level automation would be useful.
Now the tools for this tend to be awful and workers tend to be locked out of trying it, but that's another story.
I think this idea that coding is some sort of silver bullet is ridiculous.
Its not a silver bullet, but it is as a core component of developing of computer literacy, a broadly applicable foundational skill for non-menial jobs in the modern world, even if programming itself isn't a central duty of the job.
(In the right context -- though its possible to learn programming without developing much of this -- its also a valuable way, and perhaps the most accessible in terms of providing concrete feedback, to develop technology-neutral systems literacy, which is an even more broadly applicable, foundational skill.)
I'm a writer for a marketing agency, but I write Google App Scripts, JavaScript, and PHP on a regular basis to automate tasks, try out ideas I have, etc.
There's no way I could work as a professional software developer, but I know how to code enough to help make my professional/personal life easier and more fun.
Isn't there something to be said for that? Not every skill needs to lead directly to a job. Can't it just be another skill to have when you need it?
I learned to code through Codecademy and trial and error with frequent Stack Overflow searches. If I can figure it out, anyone can.
Edit: For anyone saying they would hire me, I'm flattered but am very happy working as a writer who gets to program occasionally. If you're interested, here are two little projects I've put together: http://playRollo.com and http://WriteByNumbers.com. Feedback? Email me, [email protected].