Learn to code or...what?
February 12, 2016 11:20 AM Subscribe
I'm a liberal-arts-ish woman who has some experience with computer programming (HTML, CSS and PHP) and a ton of graphics/design experience. I hear about code bootcamps and lots of people changing careers to CS, and I'm wondering if it would be a good idea to try and develop my programming skills. But I'm worried I'm not geeky enough to hack it.
I like solving problems and making things but I don't get "excited" about code. I get excited about other things like art and music. I do want a challenging, decent-paying job with good future prospects, but I'm worried that there are already so many dyed-in-the-wool CS nerds that I'll never be able to compete. Are there humanities-based people here who have pivoted to CS? If so, how did it work out?
I like solving problems and making things but I don't get "excited" about code. I get excited about other things like art and music. I do want a challenging, decent-paying job with good future prospects, but I'm worried that there are already so many dyed-in-the-wool CS nerds that I'll never be able to compete. Are there humanities-based people here who have pivoted to CS? If so, how did it work out?
You could aim for more front-end or human-computer-interaction-centric areas, where code skills come in useful as background knowledge but aren't the main focus of your work. A humanities background would be very relevant to things like user research, analytics, branding/marketing, etc. Look for job titles like visual designer, user interface designer, user experience designer/specialist, etc.
Source: I got a BFA in illustration, and now I'm a web designer.
posted by fifthpocket at 11:43 AM on February 12, 2016 [7 favorites]
Source: I got a BFA in illustration, and now I'm a web designer.
posted by fifthpocket at 11:43 AM on February 12, 2016 [7 favorites]
I suggest you Google up some articles about Big Data jobs. It is expected to create millions of new jobs, either directly or indirectly, it is well paid, there is currently a shortage of qualified candidates and the shortage is expected to get worse. You can be a data scientist or business analyst and knowing some code is useful, but coding isn't necessarily a central part of the job. It is much more about problem solving.
This is not a job if the past. This is a job of the future. It is an emerging field.
posted by Michele in California at 12:10 PM on February 12, 2016 [1 favorite]
This is not a job if the past. This is a job of the future. It is an emerging field.
posted by Michele in California at 12:10 PM on February 12, 2016 [1 favorite]
Warning: extremely biased wall of text ahead! May contain exaggerations, emotions, and even things that you disagree with! ;)
Also, this is a slightly more generic wall of text. I don't know what your exact skills are, so I'm not gonna say what you should or shouldn't do for a career... I just wanted to provide a perspective to consider re: code bootcamps and whether one should "learn to code".
---
There are basically two types of programmers.
The first is the sort of person whose brain is built for it. They're able to look at a complex problem and start figuring out how to break it down into components, what their API will look like, what data structures they'll use, what their domain model looks like, that sort of thing. The thought process scales well too, so whether it's some throwaway tool for scraping a web page or a large app that's going to be used by a thousand people, the way that they go about solving problems will let them develop good software. The more experience they gain, the closer their first iteration will be to production-ready.
The second type of person uses programming as a tool. They don't "get it", but they don't have to! For them, programming is a way to automate something that would be too time or resource consuming. No matter how much they write, their code just isn't good. Their APIs suck, and their data structures don't seem like something you'd learn about in CS... but none of that matters, because for them the software is just a means to an end. Their expertise lies elsewhere; the software is just the medium.
Now for the bad news: you're one or the other. Some people will never, no matter how much training they get, be good singers or violinists. Some people will never be able to draw with depth and shading even after years of practice. (I know, I'm one of them!) And some people will never be good software engineers.
The fundamental problem with a lot of the "code bootcamps" is that they don't distinguish. There's a notion that the second type of programmer is in some way inferior, so they pretend that there aren't those two types. They get more money the more they teach, so why would they want to shoo away people? They pretend that software is software and they deliberately blur the line because, well... programmers of the first sort generally don't go to those code bootcamps. Or teach them. And the corporations making the push for more of those bootcamps? They don't want those expensive type 1 programmers. We don't have a shortage of those. They're just expensive. They want there to be a surplus of type 2 programmers. They want cheap code monkeys. But they can't say that, so it's in their interest to pretend there's no difference.
But that's crap, and it's a big part of why code bootcamps are often trash.
There is no problem being the second sort of programmer. Yeah, some antisocial geeks will judge you for it or think of you as being inferior, but screw them. They're missing the point: that for most people who don't sell software, the software isn't the point. Software development is the process of building a tool that you can use to do something else better!
So if your expertise isn't software, that doesn't mean you can't "learn to code". It doesn't mean that you shouldn't learn. It just means that your statement: "I'm worried that there are already so many dyed-in-the-wool CS nerds that I'll never be able to compete" is probably right.
You won't be able to compete against type #1.
What you will be able to do is kick their ass in the areas that need your domain expertise.
Lets say your expertise is in doing design/UX work like figuring out people's interaction with various UIs in a certain fields. You mix that expertise in with a bit of knowledge on how to program and now you're not just someone writing hypothetical papers filled with thought experiments and meandering hypotheticals: you're able to prototype interface ideas, automate the testing of them, and collect meaningful data. That data is incredibly useful to type #1 programmers because frankly, a lot of them suck at things that aren't strictly software engineering, UI work doubly so. Yeah, the code for your UI prototypes may suck and be messy. But who cares? You can figure out something that nobody else can, and your messy code lets you do that!
Or documentation. Most software developers that I know are absolutely terrible at writing end-user documentation. And the ones that don't? They find it tedious and would rather be programming. But good documentation isn't just as easy as hiring an English PhD student and throwing them some screenshots. It requires the documentation writer to understand the problems that the software is solving, why it's solving them the way that it is, and (in many cases) how it's solving them. A documentation writer who has a knowledge of how the software sausage is made is a hundred times better than one who thinks of computers as a great big mystery for those "weird folks in IT".
So yes: learn to code. A bit. Just don't make the coding your sole focus. Figure out how you're gonna use it. Learn enough that you can develop software to scratch an itch. Learn enough that you can understand what the furry-toothed CS nerds are talking about. Learn enough that you can figure out how to automate, optimize, and improve whatever it is that you do best.
posted by -1 at 12:17 PM on February 12, 2016 [34 favorites]
Also, this is a slightly more generic wall of text. I don't know what your exact skills are, so I'm not gonna say what you should or shouldn't do for a career... I just wanted to provide a perspective to consider re: code bootcamps and whether one should "learn to code".
---
There are basically two types of programmers.
The first is the sort of person whose brain is built for it. They're able to look at a complex problem and start figuring out how to break it down into components, what their API will look like, what data structures they'll use, what their domain model looks like, that sort of thing. The thought process scales well too, so whether it's some throwaway tool for scraping a web page or a large app that's going to be used by a thousand people, the way that they go about solving problems will let them develop good software. The more experience they gain, the closer their first iteration will be to production-ready.
The second type of person uses programming as a tool. They don't "get it", but they don't have to! For them, programming is a way to automate something that would be too time or resource consuming. No matter how much they write, their code just isn't good. Their APIs suck, and their data structures don't seem like something you'd learn about in CS... but none of that matters, because for them the software is just a means to an end. Their expertise lies elsewhere; the software is just the medium.
Now for the bad news: you're one or the other. Some people will never, no matter how much training they get, be good singers or violinists. Some people will never be able to draw with depth and shading even after years of practice. (I know, I'm one of them!) And some people will never be good software engineers.
The fundamental problem with a lot of the "code bootcamps" is that they don't distinguish. There's a notion that the second type of programmer is in some way inferior, so they pretend that there aren't those two types. They get more money the more they teach, so why would they want to shoo away people? They pretend that software is software and they deliberately blur the line because, well... programmers of the first sort generally don't go to those code bootcamps. Or teach them. And the corporations making the push for more of those bootcamps? They don't want those expensive type 1 programmers. We don't have a shortage of those. They're just expensive. They want there to be a surplus of type 2 programmers. They want cheap code monkeys. But they can't say that, so it's in their interest to pretend there's no difference.
But that's crap, and it's a big part of why code bootcamps are often trash.
There is no problem being the second sort of programmer. Yeah, some antisocial geeks will judge you for it or think of you as being inferior, but screw them. They're missing the point: that for most people who don't sell software, the software isn't the point. Software development is the process of building a tool that you can use to do something else better!
So if your expertise isn't software, that doesn't mean you can't "learn to code". It doesn't mean that you shouldn't learn. It just means that your statement: "I'm worried that there are already so many dyed-in-the-wool CS nerds that I'll never be able to compete" is probably right.
You won't be able to compete against type #1.
What you will be able to do is kick their ass in the areas that need your domain expertise.
Lets say your expertise is in doing design/UX work like figuring out people's interaction with various UIs in a certain fields. You mix that expertise in with a bit of knowledge on how to program and now you're not just someone writing hypothetical papers filled with thought experiments and meandering hypotheticals: you're able to prototype interface ideas, automate the testing of them, and collect meaningful data. That data is incredibly useful to type #1 programmers because frankly, a lot of them suck at things that aren't strictly software engineering, UI work doubly so. Yeah, the code for your UI prototypes may suck and be messy. But who cares? You can figure out something that nobody else can, and your messy code lets you do that!
Or documentation. Most software developers that I know are absolutely terrible at writing end-user documentation. And the ones that don't? They find it tedious and would rather be programming. But good documentation isn't just as easy as hiring an English PhD student and throwing them some screenshots. It requires the documentation writer to understand the problems that the software is solving, why it's solving them the way that it is, and (in many cases) how it's solving them. A documentation writer who has a knowledge of how the software sausage is made is a hundred times better than one who thinks of computers as a great big mystery for those "weird folks in IT".
So yes: learn to code. A bit. Just don't make the coding your sole focus. Figure out how you're gonna use it. Learn enough that you can develop software to scratch an itch. Learn enough that you can understand what the furry-toothed CS nerds are talking about. Learn enough that you can figure out how to automate, optimize, and improve whatever it is that you do best.
posted by -1 at 12:17 PM on February 12, 2016 [34 favorites]
They don't want those expensive type 1 programmers. We don't have a shortage of those. They're just expensive.That's not how supply and demand works, in my limited experience.
Anyway, that's not even close to the only disagreement I have with the preceding response -- I'll just say that that's not the way I see it.
I would agree only to this extent -- I think there are some people who love to code for the sheer thrill they get out of it and there are several orders of magnitude more people working in technology who see coding not as an end in itself but as a tool they can use to accomplish some specific goal.
You ought to give it a try, given your curiosity, and find out which type (if either) you are. But if you're not someone who finds coding for its own sake fulfilling then try to find something you're interested in where you can apply coding skills. Don't just learn coding hoping to get any possible job.
posted by Nerd of the North at 12:41 PM on February 12, 2016 [3 favorites]
I do want a challenging, decent-paying job with good future prospects, but I'm worried that there are already so many dyed-in-the-wool CS nerds that I'll never be able to compete.You probably won't compete if it's something that holds little interest for you, but how will you ever know that until you try it?
For what it's worth, during my career in technology I've worked with many people whose education was in other disciplines -- some of my best friends in tech had degrees in fields as varied as cinema, forestry, English literature, psychology, astronomy, and economics. The chief thing they had in common intellectually was curiosity and an ability to teach themselves. People do pivot to tech successfully from the humanities quite often. One of my best friends in school was a woman who had come to my university to be a graduate student in English literature. It took a little convincing the university but in the end she graduated with a Ph.D in computer science without having done any CS undergrad. That was an exceptional case and she's an exceptional person, but it can be done if you find it interesting enough.
posted by Nerd of the North at 12:51 PM on February 12, 2016 [2 favorites]
Oof, please don't pay too much attention to -1 up there... it's a description of a very common belief about programming aptitude, but that kind of essentialism about skills is 1) not backed up by actual evidence (though, clearly, it is backed up by a lot of people's beliefs/personal anecdotal experiences) and 2) actually makes it more difficult for people to learn. Obviously some people are naturally better at coding than others, and some of those people start earlier than others, and some people have better access to mentorship and learning tools than others, but the truth is good programmers are both born and made, and worrying whether you have a natural aptitude is a waste of time. Try it and see if you make progress. And if you want to contribute to open-source projects, maybe don't be obviously female.
I'm a professional web developer, formerly a librarian (my undergrad degree was in biology and I focused on health sciences librarianship, so not really properly humanities-y), who went to a boot camp. I am well-respected by my MIT-CS-degree-holding colleagues, though obviously they have skills and knowledge that I lack. I find it to be challenging and well-paying compared to my previous careers.
I also NEVER code in my free time. I know I probably should (I can't really show future employers the code I write for work because it all belongs to my current employers). Sometimes I even get ideas for things that would be kind of fun to code but in the end I sing and I sew and I hike and I watch the Great British Bake Off and I hang out with my friends and family.
So, I don't code because I super-duper love it or because I'm THE BEST at it. There are probably lots of other things I'm better at than coding, or that I would be better at if I spent as much time on them. But coding provides me with a stable job with nice benefits and pay in a city I like.
posted by mskyle at 1:17 PM on February 12, 2016 [20 favorites]
I'm a professional web developer, formerly a librarian (my undergrad degree was in biology and I focused on health sciences librarianship, so not really properly humanities-y), who went to a boot camp. I am well-respected by my MIT-CS-degree-holding colleagues, though obviously they have skills and knowledge that I lack. I find it to be challenging and well-paying compared to my previous careers.
I also NEVER code in my free time. I know I probably should (I can't really show future employers the code I write for work because it all belongs to my current employers). Sometimes I even get ideas for things that would be kind of fun to code but in the end I sing and I sew and I hike and I watch the Great British Bake Off and I hang out with my friends and family.
So, I don't code because I super-duper love it or because I'm THE BEST at it. There are probably lots of other things I'm better at than coding, or that I would be better at if I spent as much time on them. But coding provides me with a stable job with nice benefits and pay in a city I like.
posted by mskyle at 1:17 PM on February 12, 2016 [20 favorites]
I don't make value judgements about what's real programming and what isn't. What I do know is I have a constant stream of work doing web development, almost entirely WordPress at this point. I have to turn down jobs occasionally because I like to be busy but I also enjoy the wonderful free time that being a freelancer affords me. If you're even remotely "good with computers" you have about six legs-up on just about everyone else.
posted by humboldt32 at 1:25 PM on February 12, 2016 [1 favorite]
posted by humboldt32 at 1:25 PM on February 12, 2016 [1 favorite]
My husband is the lead website developer for a huge company & their many offshoots, the deals directly with the CEO of that company. He never codes for fun either, he does enjoy his work, which he actually got because he isn't an obsessive that can only think of coding sort of person.
What he can do is act as a communication filter for the more "serious" focused coders (the sort you worry you're not) and the more "normal" people like the designers & management that just want their ideas turned into a website. He has a lot of outside interests, none of them are coding.
What you are thinking of as a negative is a strength. If you worry coding isn't really for you, have you thought of Software Project Management. All the people learning to code need someone to co-ordinate what they are coding & deal with the non coders.
posted by wwax at 1:29 PM on February 12, 2016
What he can do is act as a communication filter for the more "serious" focused coders (the sort you worry you're not) and the more "normal" people like the designers & management that just want their ideas turned into a website. He has a lot of outside interests, none of them are coding.
What you are thinking of as a negative is a strength. If you worry coding isn't really for you, have you thought of Software Project Management. All the people learning to code need someone to co-ordinate what they are coding & deal with the non coders.
posted by wwax at 1:29 PM on February 12, 2016
My father in law was a programmer for decades. He was also a poet and philosophy major. Programming was a thing he did. It wasn't the only thing he did or who he was, not by a long stretch. Similarly, my husband is a programmer. He was a computer science major and English minor. We met when we were both writers. So if you're asking whether it can be done, I say yes. Can you or should you do it is a different question and I don't think I have enough information here to answer that.
posted by kat518 at 1:46 PM on February 12, 2016
posted by kat518 at 1:46 PM on February 12, 2016
Based on your design background, I'd strongly suggest a space typically called "Creative Technology" (it also happens to be where I spend a lot of my time these days). It encompasses, among other things, mobile/responsive design, HTML5 animation, API integrations, etc. Often UX is lumped in as well. I work with a lot of designers who don't understand the constraints/possibilities of the medium and coders who have no eye for design.
Learn Javascript, it makes the web world go 'round and so many people suck at it. Upgrade your CSS to include animations and transitions. Learn how SVG graphics work and how to manipulate them with CSS and JS. Get familiar with responsive frameworks like Bootstrap and Foundation. Learn AngularJS and how to consume data from a web API. It seems a lot of things, but there are a ton of resources out there to leverage, and none of them are nearly as hard as learning to "program" in something like Java, .NET or Go.
posted by mkultra at 1:48 PM on February 12, 2016 [9 favorites]
Learn Javascript, it makes the web world go 'round and so many people suck at it. Upgrade your CSS to include animations and transitions. Learn how SVG graphics work and how to manipulate them with CSS and JS. Get familiar with responsive frameworks like Bootstrap and Foundation. Learn AngularJS and how to consume data from a web API. It seems a lot of things, but there are a ton of resources out there to leverage, and none of them are nearly as hard as learning to "program" in something like Java, .NET or Go.
posted by mkultra at 1:48 PM on February 12, 2016 [9 favorites]
If you can afford it and have the time for it, learning to code is almost never a bad idea. Even if you elect not to take a position as a developer, you can translate those skills into a plethora of other opportunities: QA, software testing, product management, UX/UI design, project management, even graphic design/animation are all possible career options for someone who understands coding.
Also take some time to consider what type of coding you would be most suited for. If you are artistic and like visual creative processes, front-end coding could be a great fit. If you're more into data analysis and technical problem solving, back-end would be a better option. Back-end tends to pay more, but that lure may or may not be worth it if you really don't enjoy it.
Do your research into the bootcamp first -- talk to some alums, find out what their job placement resources are and what percentage of graduates get a job in the field afterwards. There are also a lot of free programs online like CodeAcademy where you can explore different coding languages and figure out if you like it before jumping into a bootcamp.
posted by ananci at 1:53 PM on February 12, 2016 [2 favorites]
Also take some time to consider what type of coding you would be most suited for. If you are artistic and like visual creative processes, front-end coding could be a great fit. If you're more into data analysis and technical problem solving, back-end would be a better option. Back-end tends to pay more, but that lure may or may not be worth it if you really don't enjoy it.
Do your research into the bootcamp first -- talk to some alums, find out what their job placement resources are and what percentage of graduates get a job in the field afterwards. There are also a lot of free programs online like CodeAcademy where you can explore different coding languages and figure out if you like it before jumping into a bootcamp.
posted by ananci at 1:53 PM on February 12, 2016 [2 favorites]
msykle: I can't say I agree with your flippant dismissal, but I do agree heartily with "but the truth is good programmers are both born and made, and worrying whether you have a natural aptitude is a waste of time. Try it and see if you make progress"
In fact, that was the sentiment behind: "Yeah, some antisocial geeks will judge you for it or think of you as being inferior, but screw them."
If someone is not sure if they want to learn to code, if they're unsure that they're going to be able to compete with the people for whom it's an obsession then 1) they're probably right that they won't be able to compete with those people in terms of sheer programming ability but 2) that rarely matters in terms of job placement, nor does it necessarily make them an inferior candidate. At least that's been my experience in all the years I've been in the industry. I don't want to work with people who look down on someone who's not a "natural CS nerd". Because those people usually miss what the non-CS-nerd people *do* bring to the table. You don't have to be a good software engineer to get a good job building software.
Nerd of the North sums it up best with: "The chief thing they had in common intellectually was curiosity and an ability to teach themselves."
If you're smart and capable of learning software development, whether or not you started out in software is IMHO pretty much irrelevant. And I think most reasonable organizations share that view.
posted by -1 at 3:36 PM on February 12, 2016 [2 favorites]
In fact, that was the sentiment behind: "Yeah, some antisocial geeks will judge you for it or think of you as being inferior, but screw them."
If someone is not sure if they want to learn to code, if they're unsure that they're going to be able to compete with the people for whom it's an obsession then 1) they're probably right that they won't be able to compete with those people in terms of sheer programming ability but 2) that rarely matters in terms of job placement, nor does it necessarily make them an inferior candidate. At least that's been my experience in all the years I've been in the industry. I don't want to work with people who look down on someone who's not a "natural CS nerd". Because those people usually miss what the non-CS-nerd people *do* bring to the table. You don't have to be a good software engineer to get a good job building software.
Nerd of the North sums it up best with: "The chief thing they had in common intellectually was curiosity and an ability to teach themselves."
If you're smart and capable of learning software development, whether or not you started out in software is IMHO pretty much irrelevant. And I think most reasonable organizations share that view.
posted by -1 at 3:36 PM on February 12, 2016 [2 favorites]
Sidenote in regards to "That's not how supply and demand works, in my limited experience.". Yeah, I didn't really explain that well. I do know how supply and demand works. ;) Let me try again... My observation has been that a lot of the big players are backing "code bootcamps" because they want to see the cost of software developers go down, and one way to do that is to make more of them. IBM's ideal consultant is one that knows enough for IBM to bill for their services, but not enough that they have better career opportunities than the grist-mill of IBM GS. And code bootcamps can be a way to create those people. (See also H1Bs, but that's another whine altogether...)
posted by -1 at 3:38 PM on February 12, 2016
posted by -1 at 3:38 PM on February 12, 2016
I would suggest that instead of pivoting all the way to CS, you expand your tech-abilities as a way to enhance your humanities offerings. Technical artists are in demand, for example. That's not a great example, but there are similar confluences in many fields, where some aspect of the humanities is the purpose of the position, but the shoes can't really be filled by someone who lacks familiarity/comfort with code or tech.
Many people go all the way into CS, or all the way into humanities, leaving quite a few opportunities for people who can synthesize both.
posted by anonymisc at 4:03 PM on February 12, 2016 [1 favorite]
Many people go all the way into CS, or all the way into humanities, leaving quite a few opportunities for people who can synthesize both.
posted by anonymisc at 4:03 PM on February 12, 2016 [1 favorite]
-1 said a lot of what I feel about bootcamps in fewer words than I probably could.
I will also say that computer science is a field that is deeply misunderstood by the public. First, the name. Computer science really has nothing to do with computers except that it developed out of the problems arising from building computer systems. It's really a syncretic field combining discrete mathematics and numerical analysis, psychology, and engineering.
Most programmers aren't practicing CS much day to day. Sure, you might occasionally need to choose one sort method over another, but a lot of it is pre-built for you, and these aren't wildly new problems. At most companies, it is mainly the senior level or architect level engineers that deal with advanced enough problems to require real understanding of CS.
So when you consider that many people in the industry have a CS background, that's what it really means. They aren't necessarily great programmers (actually, a lot of them suck at it), nor are they driven enough to build something from end to end, but they know the fundamentals. From what I've seen, the bootcamps completely skip the fundamentals. The bootcampers I have worked with don't have a sense for what compilers are doing or how the instructions they type in in the form of JavaScript or whatever actually turns into computers allocating memory and writing out bytes somewhere. Not only do they not have a sense for this, they don't seem like they care or that they even can grasp this. And it has nothing to do with intelligence or right-brain/left-brain whatever, it's just.. a lot to take in, because on top of the fundamental CS stuff, you have the whole history of operating systems and various hardware generations and how that fits into different VMs and so forth, which I just cannot imagine somebody learning in a few months under any circumstances, no matter how smart and driven they are.
Computers are way, way more complicated than they appear and I think it takes a certain weird type of mind/personality to even want to know the horrifying and beautiful reality of how everything is built from the hardware up and the theory behind it all. It's actually hard for me to put myself in the shoes of bootcampers, because I started learning this stuff when I was 11 years old and a lot of it seems obvious to me because I went through those big epiphanies back when my brain was malleable and epiphanies came more easily.
To understand the difference that -1 is talking about between the two types of developers, here's an analogy. Think of a highly skilled graphic designer using Adobe Photoshop to render some image. It is interesting that Photoshop, a piece of software, is in some sense automating what used to be done by hand by artisans, but it still requires a certain talent and practice to be really good with it. Now imagine the people who actually built Photoshop, developed the algorithms for the different layers and transparency effects, developed the equations, etc., then implemented them in an efficient way and solved all the little problems to optimize the system so it is most useful for a human user. Are some of those people good with Photoshop? Maybe, but it's not their core competency. But if you think of the graphic designers who are skilled at using Photoshop and the engineers who built Photoshop as part of one big team, they are really just doing different parts of the job. I think this is the difference between the two categories that -1 posted about. If you're joining a software company out of a bootcamp-style program, you're probably going to be a graphic designer in this analogy -- you will be using the core tools that the more core-focused engineers developed to solve various problems.
All of this is just to say that no, I don't think it's impossible for non-CS-focused people to get into the software industry. But I also think it's worth understanding exactly what you're getting at a bootcamp and more importantly what you're not getting. IMO I would use the bootcamp program as just a foot in the door in the industry, then find out if you want to move into product or the business side of things or something like UX which is another role that a lot of creative liberal artsy types seem to thrive in.
posted by deathpanels at 7:01 PM on February 12, 2016 [2 favorites]
I will also say that computer science is a field that is deeply misunderstood by the public. First, the name. Computer science really has nothing to do with computers except that it developed out of the problems arising from building computer systems. It's really a syncretic field combining discrete mathematics and numerical analysis, psychology, and engineering.
Most programmers aren't practicing CS much day to day. Sure, you might occasionally need to choose one sort method over another, but a lot of it is pre-built for you, and these aren't wildly new problems. At most companies, it is mainly the senior level or architect level engineers that deal with advanced enough problems to require real understanding of CS.
So when you consider that many people in the industry have a CS background, that's what it really means. They aren't necessarily great programmers (actually, a lot of them suck at it), nor are they driven enough to build something from end to end, but they know the fundamentals. From what I've seen, the bootcamps completely skip the fundamentals. The bootcampers I have worked with don't have a sense for what compilers are doing or how the instructions they type in in the form of JavaScript or whatever actually turns into computers allocating memory and writing out bytes somewhere. Not only do they not have a sense for this, they don't seem like they care or that they even can grasp this. And it has nothing to do with intelligence or right-brain/left-brain whatever, it's just.. a lot to take in, because on top of the fundamental CS stuff, you have the whole history of operating systems and various hardware generations and how that fits into different VMs and so forth, which I just cannot imagine somebody learning in a few months under any circumstances, no matter how smart and driven they are.
Computers are way, way more complicated than they appear and I think it takes a certain weird type of mind/personality to even want to know the horrifying and beautiful reality of how everything is built from the hardware up and the theory behind it all. It's actually hard for me to put myself in the shoes of bootcampers, because I started learning this stuff when I was 11 years old and a lot of it seems obvious to me because I went through those big epiphanies back when my brain was malleable and epiphanies came more easily.
To understand the difference that -1 is talking about between the two types of developers, here's an analogy. Think of a highly skilled graphic designer using Adobe Photoshop to render some image. It is interesting that Photoshop, a piece of software, is in some sense automating what used to be done by hand by artisans, but it still requires a certain talent and practice to be really good with it. Now imagine the people who actually built Photoshop, developed the algorithms for the different layers and transparency effects, developed the equations, etc., then implemented them in an efficient way and solved all the little problems to optimize the system so it is most useful for a human user. Are some of those people good with Photoshop? Maybe, but it's not their core competency. But if you think of the graphic designers who are skilled at using Photoshop and the engineers who built Photoshop as part of one big team, they are really just doing different parts of the job. I think this is the difference between the two categories that -1 posted about. If you're joining a software company out of a bootcamp-style program, you're probably going to be a graphic designer in this analogy -- you will be using the core tools that the more core-focused engineers developed to solve various problems.
All of this is just to say that no, I don't think it's impossible for non-CS-focused people to get into the software industry. But I also think it's worth understanding exactly what you're getting at a bootcamp and more importantly what you're not getting. IMO I would use the bootcamp program as just a foot in the door in the industry, then find out if you want to move into product or the business side of things or something like UX which is another role that a lot of creative liberal artsy types seem to thrive in.
posted by deathpanels at 7:01 PM on February 12, 2016 [2 favorites]
I'm going to steer around the arguments about coding and address your question. Yes, there are people with a humanities background who work as developers and in tech more generally. I have an arts background and went to a grad program at a tech university that focused on digital humanities. That's slightly different from HCI, by the way. I now work as an XD so I don't consider myself a technologist, but many of the folks on my current team attended the exact same program (or similar programs) and now work as "creative technologists" or just interactive devs who can also do a lot of non-code awesome stuff. In this program we all had to become somewhat proficient with different types of code, but it was more about how we used it to create meaningful projects, and less about how well-written the code was.
Personally, I find some aspects of coding fun and rewarding. There's a pleasant little thrill when you get something to work. But I struggle with the logic and math aspects, so I'm much happier in XD. I get to do a lot of the problem solving on the overall functionality of a project. You might look into programming with Arduino as a hobby. I'm a very concrete thinker and I like programming things to light up and move a lot more than working on websites or apps.
posted by pourtant at 10:29 AM on February 13, 2016
Personally, I find some aspects of coding fun and rewarding. There's a pleasant little thrill when you get something to work. But I struggle with the logic and math aspects, so I'm much happier in XD. I get to do a lot of the problem solving on the overall functionality of a project. You might look into programming with Arduino as a hobby. I'm a very concrete thinker and I like programming things to light up and move a lot more than working on websites or apps.
posted by pourtant at 10:29 AM on February 13, 2016
You might be interested in coding schools/bootcamp-style things specifically geared towards artists. There aren't a ton, but maybe investigate Gray Area or School for Poetic Computation.
posted by divabat at 7:31 PM on February 13, 2016 [1 favorite]
posted by divabat at 7:31 PM on February 13, 2016 [1 favorite]
This thread is closed to new comments.
I think your personality type might matter though. Some people don't thrive under the structured environment, but I love having it as a framework to build on (ISTJ all the way).
posted by possibilityleft at 11:41 AM on February 12, 2016 [1 favorite]