There's a big gulf between knowing how to code and working as a professional software developer.
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, paulcole@gmail.com.
As someone who is a software developer, I can assure you that this is enough coding skill to get a job as a software developer. Being able to learn how to code is the important bit. A lot of places will expect you to learn how to do most of what you're doing as you go.
I agree.. I was talking with a CFO about one of his employees, who he called his secret weapon - an accountant with coding skills. The ability to do a regular job plus the ability to code is extremely valuable.
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. :)
In theory this is true, but in practice a common pattern is that Joe is a superstar accountant/lawyer because he can code and uses that to do his job better. This becomes known to his co-workers and boss. Six months down the road he's spending a huge portion of his week helping Mike with this one little excel macro or Mary with automatically generating contracts. He also gets called in when a message pops up on the screen about the virus scanner finding something because "you're good with computers and those IT guys always take forever". He does less and less legal or accounting work, and when he tries to get a raise or find another job it turns out that he's no longer a great hire as an accountant but he also can't compete with programmers that have had programming jobs. He's stuck in this weird hybrid spot that doesn't have even have a name and no one hires for it.
Maybe that'll change in the future, but for now the wiser course may be to keep your superpowers to yourself.
Yep, I find myself in a somewhat similar situation. I'm a business analyst who taught myself enough front-end skills to build a JS app that replaces an old legacy application we have. The result saved us dev resources(because it completely avoided the standard waterfall timeline), but has now given way to "if we don't have dev resources, let's give this task to him."
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.
> There's no way I could work as a professional software developer
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.)
I think you are overstating how easy it is to get interviews for development positions. From what I have seen, someone without some demonstrated coding experience, professional or hobby, won't even get the time of day from companies looking to hire developers. They will never get to the take-home assignment phase.
It all depends... The question boils down to "how much of a shit job are you willing to go after"?
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.
I was lucky enough to start on the sys admin side and in smaller companies and just after the major switch away from Novell to NT4. I skipped a lot of the early/mid 90s stalwarths.
"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 think it holds true for dev shops that are not simply body shops as well.
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.
I disagree slightly in that vast majority of tech startups don't have any money. They need people they don't have to pay. What better way than to give everyone who walks by a flyer? Comparatively, dev shops need to be able to get another customer, so they need to produce something that does at least work regardless of whether or not it scales. They need people who can build something right out of the gate or the clients don't pay the invoice. They don't have the time to spend training someone.
"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?"
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.
The funny (not ha-ha, but funny-ridiculous) thing is that you'd no doubt be perfectly able to work as a professional software developer, but you'd never get past a software interview.
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.
well, it's a gradient, and the only way to move up is years of practice.
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.
Err, yeah, you could work as a professional programmer if you wanted to.
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.
It's not a secret when you know how to code but you are an end user. Knowing how to code and knowing how to learn to code makes this widespread incompetence masquerading as competence and even "professionalism" radiate from every bit of software you ever come in contact with, as an end user. Seeing the source code just drives home the message even more. You become a more discerning end user.
If HR is doing something other than providing expertise on managing relationships (particularly, the formal and compliance-related aspects of those relationships) for supervisory/management staff that are the domain experts providing knowledge related to the skill sets needed for the staff which are or will be reporting to them, then the organization has a fundamental (though, to be sure, distressingly common) design flaw.
Random dude who learns basic scripting says he's not good enough to be a software dev -> people chime in disagreement.
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.
The software development market is giant and highly differentiated now. I have personally gone into client sites with plenty of people whose full-time job is doing nothing but scripting, and they're paid as software developers (for their locale) and their work is appreciated (as long as they have good bedside manners with the stakeholders). Granted, these clients are not hot startups, they're nowhere near the leading edge, it often involves tying together CRUD applications instead of more interesting problems, and often they're found in "flyover country" instead of hot metros, but for some people it's the right fit.
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.
'A job' is not necessarily a job at a large software firm. How about supporting your local medical offices (dentist, optometrist) by remote-monitoring their servers, installing updates etc? That's a job. Or updating web order forms for the local shops for the holiday specials?
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.
The way it usually works is you get a job doing non-primarily coding stuff at a company that has also has programmers, and then get shifted to a development job when people figure out you can code.
They aren't the same job, regardless for how similiar the titles are.
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.
Definitely. Maybe not a senior level dev at Google, but if you can do enough to automate tasks, you can almost certainly do enough to get hired as a junior dev somewhere.
There are people saying they will hire you. See how much they want to pay you and if the position sounds like a good stepping stone. See if you can talk yourself into giving it a try.
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 :)
Here's what made me say that (and it wasn't humblebragging):
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." :)
Your workflow is pretty much the same as 90% of the other professional programmers out there. The walls change as you get more experienced and you copy paste less as you're toolbox grows but unless you are in university working on a CS PhD or the senior dev/fellow at a Google or Facebook working on something no one else has already solved then that workflow is 90% of every programmers workflow.
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.
The difference between that and the step up is if you don't spend some time understanding why the cut-and-paste code worked and learning the how and why of things.
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.
It's possibly more the case that he'd rather just dip in and out as and when it pleases him. No harm in that of course, I know plenty of people in the same situation who are perfectly capable but wouldn't dream of doing it full time.
Excatly. There's a huge difference between "everybody needs to learn to become a professional software developer" and "everyone needs a higher level of software literacy, including basic coding skills"
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.)
It's not a silver bullet, but it is a bullet. Coding can't solve every problem, but it can help solve some of them, including some that would be very tedious to solve otherwise.
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, paulcole@gmail.com.