I studied CS and Philosophy. I could phone in a philosophy paper if I wanted. I could not phone in a linked list implementation. I know companies loathe the idea like no other, but software engineering is a skill that is difficult for most people to acquire and is likely to remain that way. Mostly it boils down to peoples understanding and value they place on logic. Anyone with a good grasp on, or even just a high value for logic, can learn to code. No one who sees logic as 'nitpicking' can learn to build systems that function predictably, reliably, and accomplish a defined goal.
The idea that code that doesn't compile is not worth partial credit is wrong in academics. In the real world the code needs to compile first, of course, then run. However if your professors cannot look at your code that doesn't compiler and decide how much partial it is worth there is a problem.
That said, getting code to compile is a trivial part of the problem.
This is not true in my experience as a professional. I write pseudocode all the time. Often the fastest way to evaluate architecture choices is to sketch out your architecture, sketch the consumers of your proposed API, and see what issues come up.
Making this kind of code compile is a waste of time. Reading code without the computer is a crucial skill.
Graders require compiling code because it's easier to grade.
75% of the grade was compiles and works, and the rest was style, readability, and performance.
If it didn't compile, you basically failed the assignment, if it didn't work you could get up to, but not more than a C, 75 out of 100.
Generally the task is not writing code, it is solving a specific problem and non-compiling code is a non-solution, not a partial one.
What about pseudo code that has the "right logic" but will never compile?
What if I submit python code that works as a c file, should that count?
Who cares? Can they do the job or not? Do they have the work ethic and professionalism to continue to do so?
The vast majority of people, including those who excel at their respective fields, don't love their jobs. This industry needs to stop using "passion" as a lazy signal for work ethic.
> The most boring developers I work with, the the ones who only learn to code while in college and never developed any interested to learn before that.
Again, who gives a shit if they are "boring"?
1. In for the money, no love for the job
2. In for the money, but also love the job, codes on spare time
3. Category 2, but no more free time (family, older parents)
I was in Category 2 but now on category 3. I show up to work early, work intensely, do not waste any time, and try to leave at a normal hour. On weekends, instead of open source projects, I'm spending the time with my mom who is getting much older and requires help and emotional support from the family. That does not mean I have poor ethic or lack of interest, it just means I have a lot of family commitments. I am very productive at work, I love it, but there are clear boundaries unless there is some major deadline or production issue. Speaking of Production issues, I write very very good code to ensure I dont have Prod issues and/or I can quickly do a root-cause-analysis of issues that pop up. My personal needs focus me like a laser on productive time at the office.
Embrace the time you have left with your mother. Work will always be there, and there is no job more important than your family. Do not give on your boundaries.
I spent the last 2.5 years of my mother's life (she passed away suddenly last month at the age of 59 from a brain hemorrhage) working for a startup, not making more time to spend with her because I thought I'd have at least another 5-10 years with her, and my heart hurts every day thinking about how I didn't spend more time with her. Do not make my mistake. It's just code, you're not saving the world.
This isn't always true, of course. Some developers can have excellent skill and have no interest in programming outside of work. I have a coworker that does virtually nothing outside of work, doesn't keep up with current events outside of what our group discusses, but she is a great programmer and picks up on things very quickly. She shows genuine interest in the work she does at work. She's been with us for nearly nine years. Culturally, she's different than me and another one of our co-workers in a more fundamental sense, but as part of our _team_, she is a perfect fit.
I don't agree. Interest in doing a good job (i.e. work ethic) usually correlates with this, but I do not think work ethic corresponds very well with interest in the field.
> If you have a team of interested developers/hackers, then the lack of enthusiasm can drag the team down, both in knowledge and culturally.
I think part of my problem with the statements in this thread is that I would never put together a team of hackers to run a business. Your statement implies a team that is interested in tehcnology for technology's sake rather than as a tool to solve a business problem.
The discussion is whether someone who is just in it "for the paycheck" will be able to solve those business problems as effectively as someone who has a deeper interest in technology for technology's sake. By itself, that's obviously not enough signal to say one way or the other. There certainly are extremely valuable people who don't code outside of work, follow new language and tool discussions online, etc. I think it's equally obvious though that such an interest is a positive signal. If you told me nothing else about two potential hires except person A writes Java at work and has no interest in the field beyond that, and person B writes Java at work, but has a Github page full of utilities she wrote in Go, Lisp, Haskell, whatever, I'd bet a small amount that person B is probably better at solving technical problems. You can't say that for sure, and any of the myriad other factors that actually do matter could break the other way and make person A the better hire for an actual business, but outside interest is a positively correlated trait.
I wasn't expressing a 1:1 relationship. I also expressed an example where this wasn't the case: interest in the position and the work we do, but not a personal interest outside of work.
> Your statement implies a team that is interested in tehcnology for technology's sake rather than as a tool to solve a business problem.
I just happen to be a hacker that was hired by a business. That wasn't why I was hired---I was hired because of certain qualities that so happen to be a consequence of my being a hacker, and because of fundamental interest in certain topics (which also included side projects).
I'm certainly not interested in technology for technology's sake: I'm the author of a large system on which one of the core parts of my company (the company I work for, not a company I own) is based (raters for an insurance agency), and it was made using practical, business-conscious decisions. My coworker (he doesn't identify as a hacker) is Technical Director.
Many programmers who enjoy programming will have a preference for hiring other programmers who also enjoy it. That doesn't mean they can't hire dispassionate programmers but that still doesn't erase the preference for passionate programmers.
>This industry needs to stop using "passion" as a lazy signal for work ethic.
There's definitely a place for dispassionate programmers (as that's probably the majority of programmers who just think of it as a "job"). However, it's wrong to vilify programmers-that-love-their-craft having a preference for other programmers-that-love-their-craft.
Exactly, and it isn't just 'Work Ethic', I wanna work with these guys [1] in 'Silicon Valley' tv show who would go around doing a Jerk off calculation just because it is a fun calculation to do. Not just people with strong 'Work ethic'.
If they're content with where they are, there are numerous problems:
• as the business case becomes more complex, they won't adapt
• as you grow and progress, you'll be promoted and they won't. No one wants to work in an atmosphere of resentment.
• you want to learn from your coworkers while they learn from you. If it's one way, you're just slowing yourself down.
I don't want to work at a place filled with guys who want to do the same job for the next ten years. That workplace is going to be commoditised. They'll eventually find themselves on the Internet complaining about H1-Bs and outsourcing and how git is hard to use and technical interviews are evil because they have ten years of experience.
No thanks. This field is privileged in that there are lots of us who like our job a lot. Life's too short to settle for boring coworkers.
People usually call those types of qualities "passion," "love of job," or "interest."
You keep trying to work around definitions to suit your narrative when people are just trying to have an honest conversation. You are shoving intent into the OPs post that isn't there. Simply put, what they are saying is that those from bootcamps are there doing the what they think is the bare minimum in order to keep getting a paycheck at that moment.
You might think, "Hey, just raise the minimum and they'll raise with it, it's your fault for having low expectations!" However, when those expectations are raised, you rail against them. You can't have it both ways.
You can't argue for someone lacking drive, ambition, and work ethic, and at the same time bemoan people for demanding that.
Instead we should precise terms like drive, interest in technology, motivation to learn, etc. These make sense and don't bring any emotional baggage with them.
I want to learn from my coworkers. Making decisions that require evaluating new software or new techniques is difficult and risky, having more than one damn person who can contribute to that process makes a huge difference. Plus, I just like learning things from people.
Sure, it's very good for the business if they keep up with new developments in a rapidly changing field, but personally it's most important to me that my coworkers and I are helping each other sharpen our skills and make tech decisions responsibly (being fad driven is worse than being out of touch, I don't mean just knowing about what's "hot right now").
Computer programming as a self-motivated hobby is not unique in this. Many electrical engineers started playing with electronics as kids (e.g. disassembling radios, wiring up homemade amps, etc). Many mathematicians "play" with math as kids before they go to college and get a teaching/research position. (E.g. Andrew Wiles was 10 when he was captivated by Fermat's Last Theorem.) Many biologists and zoologists when they were kids had a keen interest in nature and animals (beyond the typical children's "dinosaurs are cool" stage). Same for astronomy.
No one expects a chemical engineering 1st year student to have mastered organic chemistry already. Just as no one expects a 1st year mechanical engineering student to thoroughly understand rigid body dynamics at age 10.
Yea maybe they built an RC plane or did some home experiments, but if anyone is doing these things at a young age they are clearly far above their peers.
> Andrew Wiles
Example here-this man is extremely intelligent, it's like using Einstein as an example that anyone can be a genius physicist that changes the world. No, they can't.
We need to just call it what it is: arrogance and gating. "If you didn't do what I did, you must certainly not be any good." Which is an absolute shame
Then you are not aware of the toxic comments from your peers who agree with you.
To recap...
Group 1: programming-is-just-a-job -- the majority -- The programmers who want to compartmentalize their programming strictly to 40-hours work week so they can have a life outside of computers. Programming is just a means to an end. Programming is just the paycheck that feeds my family. Great! There's nothing wrong with you! You outnumber the programmers who view it as an artistic endeavor and self-actualization.
Group 2: programming-is-my-vocation -- the minority -- The programmers who got into as kids and find joy in side projects after hours & the weekends.
It's not enough for these 2 groups to peacefully coexist. It's also not enough that Group 1 outnumbers Group 2. It's also not enough that most cog-in-wheel corporate programming jobs don't even value Group 2's enthusiasm for programming.
No, Group 1 is not satisfied with the above advantages. Group 1 is very annoyed if Group 2 programmers prefer working with other Group 2 programmers. G1 derides G2 as psychologically defective or unbalanced. E.g see HN poster (gyardley)[1] describing them as an "obsessive wretch" and "not an asset". Toxic indeed.
Also This mindset eventually can backfire on even your group 2 people because life happens and just because you have the free time, energy and motivation today to work on projects outside of work doesn't mean you will later when you have a family or health issues or any of the myriad other things that can come up.
Well, G2 people have an affinity for other G2 people. That's human nature! That's not toxic. Look at the various reasons given by G2 posters in this thread: they enjoy a work environment with other G2 people. Just as one can prefer having a comfortable chair or closed office, a G2 can state honestly that they would be happier with other G2 colleagues. Just because that has an effect of G1 not getting hired does not mean it's toxic.
The analogy I like to use is a music band. If they're looking for a guitarist who's passionate about his instrument and music, the guitarist-just-a-job who has apathy about the music will not get invited to join the band. Maybe the apathetic guitarist can technically strum a C chord as well as the passionate guitarist. That's not enough. The band having a preference for the passionate guitarist is not being toxic.
Yes, for many G2 programmers who started as kids... programming/playing with the computer is a very similar intellectual high to a teenager exploring a guitar. Programming feels like fun artistic expression and not "work" or a "job". I think many G1 programmers really don't understand that. If they could view G2 programmers as band musicians, maybe they would have more empathy for the passionate programmers having a preference for like-minded people.
I'm not going to think of programmers as musicians because they're not. They are employees of whatever company. They are there to do a job. It's great that you want to work with like minded people but if that desire means that qualified G1 people can't get hired at your company that's a problem. If your desire means that g1 people can't get promoted that's a problem.
As a thought experiment replace like-minded people, with people of the same race. Or people of the same gender. Or people of the same religion. Do you see the problem now? A mindset that excludes some large percentage of people based on arbitrary standards that has nothing to do with their ability to do a job is always going to be problematic.
Side note if you lead with "looking for passionate" you're already misconstruing the issue, because what a company should be looking for is "able to do the job to whatever standard we've set"
Nobody in this thread has said this. Maybe your misunderstanding of the other side is part of your frustration on this topic?
Some have said that the self-taught programmers were better. Some have said passionate programmers were more driven to stay relevant in a changing field. Some have said they learn more from coworkers that developed interest in programming outside of college and work.
You may disagree with all 3 of those statements but none them are about dispassionate programmers not being able to succeed.
>It's an issue when you're desire pushes all the G1 people out of the work place.
This has never happened. In fact, the opposite has happened. G1 is the overwhelming norm at most businesses. To repeat -- most programmers do not view coding as a vocation. G1 programmers already fill most jobs slots.
The idea that the minority of G2 programmers want a work environment with other G2s and this is hurting G1?!? That is a complaint that's way out of proportion to reality. Literally.
Also, I'm not sure why hiring heuristics that negatively affect G1 somehow has a higher moral standing than heuristics that negatively affect G2 programmers. What about the opposite situation? E.g. G1 people say being well-balanced with non-programming activities helps them be a "better programmer". Great! Let that belief be a guide and don't hire G2 programmers since their excessive interests in computers actually makes you believe they perform worse. They are not assets. (See my previous cite to HN thread for example of this.) In those cases, G1 wins over G2 in getting the job.
>They are employees of whatever company. They are there to do a job.
The founders and many programmers would like the daily effort to be "more than a job" if possible. Sometimes, that's not possible (e.g. Walmart cashier). However, with programming, some do try to optimize for a better work environment.
>with people of the same race. Or people of the same gender. Or people of the same religion. Do you see the problem now?
Those race/gender examples weaken your argument. Having a preference for people with similar intellectual dispositions in programming is very aligned with Martin Luther King's "not being judged by the color of their skin, but by the content of their character."
>arbitrary standards that has nothing to do with their ability to do a job
Then this discussion has no resolution because in this thread, many have written about experiencing the opposite. Instead of it being an "arbitrary standard", it's been a positive correlation with performance on the job.
>what a company should be looking for is "able to do the job to whatever standard we've set"
Ok, many programmers in this thread said they prefer colleagues who enjoy computers+programming as outside interests. That's the standard that's been set. Many companies want to attract those programmers by hiring G2.
Neither ghaff nor I wrote anything about kids "mastering" the STEM topics before college or the first job. Therefore, that higher standard stated by you is a strawman.
I thought ghaff was talking about STEM side projects which is certainly something within the abilities of teenagers without mastery of programming. That's what my reply to him/her was about and how "playing with science" is not unique to programming.
No one would be expected to do meet those high standards, as you say. No one would be expected to be experts in basic chemistry by their first year of college.
Yet in this very post, there are countless examples of people saying the best programmers were the ones that knew it all before college, who didn't need college, who put in the time to learn before college, etc.
No other field is this expected. That's the point.
Playing with science and doing small little cute fun experiments is a lot different than me teaching myself productive front end development at age 16. I don't expect other 16 year olds overall to do as I did. Nor do I judge people if they didn't.
Nobody in this thread has said that programmers should "know it all" before college. You're injecting conditions and standards (like "mastery") that no poster actually wrote.
>No other field is this expected. That's the point.
This isn't true. You can see coaching advice for electrical engineers to update their resume with any DIY (do-it-yourself) electronics projects that would demonstrate self-motivation, passion, etc to potential employers. In that respect, it's not much different than computer programming. Do electrical engineers get jobs without any personal side projects?!? Yes, of course. Same as computer science -- many programmers get jobs without side projects.
In both scenarios, it isn't absolutely necessary but it's a way to stand out from the crowd.
> As a mechanical engineering major undergrad, I can assure you that I had no particular experience in the area prior to college.
I'd say this is true of most people entering college. Hence we have introductory courses to learn there.
It's a shame that so many people on here and elsewhere simply want to discourage people from following an interest simply because they discovered it later.
I'm not sure about "passionate" programmers, but programmers who enjoy programming are generally always on the lookout for new trends, new tech, new libraries, and even if you aren't using those things, being aware of them is massively useful. If you're relying on the business and your coworkers to drive your skill improvements, then you're going to stagnate, guaranteed, because the business doesn't care at all about new technology and has no desire to improve or change anything, and your coworkers will only care if (shock) they enjoy programming.
When you put together a team of 9 to 5 only in it for the paycheck programmers, what you get is a snapshot, their combined skills and technical knowledge will be the sum total of exactly what all of them know when you hire them and it will never improve. Putting together a team of programmers that enjoy programming and are doing it not just for the paycheck but because they enjoy the craft gets you a constantly improving team. Their skills stay fresh and they're motivated to improve and keep your tech relevant and modern, which ultimately saves you in the long run from having to face massive rewrites of old creaky systems, or ending up stuck trying to hire massively expensive developers to work on ancient deprecated technologies.
It is a rare person who has enough work ethic to force themselves to use their own free time to improve in a field they don't have any passion for. If that weren't so, we'd see a lot more self-taught physicists, mathematicians, and other STEM people.
> The vast majority of people, including those who excel at their respective fields, don't love their jobs.
People who excel in their fields don't love their jobs? As kids nowadays say, "[citation needed]".
I've hired good developers who had this type of passion, and good developers who lacked it. But I've yet to hire a truly great developer from the latter camp.
It seems to me this is true in just about every industry, those who have devoted the most time and energy to a skillset tend to be the best at it.
I fell into IT and struggled with feeling overwhelmed the first year or two but once I found the things within that field that fit my personality, that's when I felt more comfortable and could push myself more and ignore the BS that I didn't really like.
I completely agree about the "passion" thing. You can develop curiosity and interest about anything.
Me.
I think this is the crux of the issues I had with bootcamp candidates. They were reasonably strong in the areas that they'd been taught, but there were gaping holes in their knowledge wherever they hadn't been taught. They could explain how to build a site with a Node backend and an Angular front end, but they couldn't explain why any of the decisions they'd been taught were good ones. And there were fairly basic concepts that were completely alien to them...of the 20 or so I interviewed, not one had even heard the term 'load balancer', let alone could tell me why I might need to use one. They had no notion of 'threading' or what it meant for a piece of code to be 'thread-safe' because they were only taught Node and its concurrency model. Even then, not one of them had heard of 'nextTick' or understood the event loop beyond the fact that it would call their callback function with the results. Their experience felt like a facade that was designed to seem impressive than it actually was. And all the areas where a developer with a traditional background would have thought, 'huh...I wonder how that works?' and then spent 2 hours figuring it out were completely unexplored.
This is why I think developers coming out of college are significantly more likely to be better at software development...not necessarily because the education they got in school was better, though I do believe an education starting with first principles and teaching you to figure out the solution from there is a better approach, but because the people that choose to study that in school are self-selecting for curiosity in the subject. They're the ones that hit something they don't know and go learn it rather being told what to learn. And they're the ones that spent at least 2 years following those tangents to get a more well-rounded education. Because any developer who only knows what they've been taught in courses, be they bootcamp or a traditional CS degree, is not going to have what it takes to learn on the job.
You underestimate the time a self-taught developer would spent figuring these things out. I'm self taught, and though I think nothing of it I easily spend 4 hours on trivial things -- it had never mattered until family obligations made it obvious that I needed to cut down since I was also teaching on top of my full time job.
I started teaching the bootcamp precisely because I disagree with the mentality that junior web developers need to understand load balancers or the event loop or any number of other things. These things WILL come to experience, and all you need to get started is grasp the basic syntax and be able to follow the execution path of anything you write.
It's a job, as much as people like to believe that it's a craft, and many other people are fully capable of doing this job even if their decisions look different from our own. Most of my students are at the same place I was when I landed my first Jr role, a handful (about 20% of the class) are far ahead of that point.
I'm not impugning bootcamps or claiming you should be teaching those concepts. I'm claiming that it takes years of independently exploring and learning concepts to be qualified for this kind of work. Most of the developers I hire and work with have been doing this kind of exploration since they were teenagers, if not before that. By the time Node, Angular or most of the technologies taught in these bootcamps came out, they would be comfortable reading docs and just figuring it out and wouldn't need a bootcamp to teach it to them.
It's an unrealistic expectation to think that people can go from zero to professional in such a short time. I honestly don't care if a junior developer knows those concepts. What I care about is that they know something other than what they were taught in the bootcamp. Show me some independent exploration that you did that wasn't required for the bootcamp which leads me to believe you can do more of it. I can pair a junior up with a more senior developer some of the time, but most of the time they're going to have to flail around and try to figure it out by themselves and I want to know that they can do it based on nothing other than documentation, trial and error rather than needing their hand held.
I guess my point is that the people going into these bootcamps, from the ones I interviewed, didn't seem to be people with that curiosity who had taken the time to learn a bunch of stuff on their own. They seemed to be people that wanted to quickly learn to be a developer. And it's perhaps possible to cover the part of a CS degree that's actually applicable in the workplace and a few technologies in the months that students participate in these bootcamps. But it isn't possible to cover the years of independent exploration that most CS graduates did both before, during and after their degrees. That's the bulk of what makes someone qualified to work in the industry. And there aren't really shortcuts around that learning process.
This was said over on /r/sysadmin when people were discussing where to start with Powershell scripting and the top answer was to get a basic grasp of OOP first as a foundation.
This "started coding in middle/high school or college" is a misleading metric since it assumes everyone has equal access and support to learn that way.
As some one from India who never had own computer until finishing college (the early 00's), along with no internet or cell phone, I find it hard to accept/respect those people who gloat about how early they started coding.
I always assume there are thousands of kids in the US who were/are not as lucky as the kids who started coding while they were in their diapers.
People/companies in US love to talk about their efforts to fix diversity, but without fixing this attitude of "earlier you learn, better you are" attitude, no amount of throwing money will fix it for the true diversity candidates.
This mindset seems to work rather well for more objective areas like athletics. I don't see any reason why an intellectual pursuit like programming would be any different.
But at least, in athletics, there's no charade of trying to fix the gender/race bias by throwing money at programs that make other's catch up so that they can claim "equality".
Most Marathoners and NBA players often are African or have African ancestry. And no one says the same team should have an equal number of <insert race/gender here>.
IMO, humans are adept at learning intellectually for a much longer time, compared to improving physically in 'objective areas' like athletics, which needs to begin very early in a human's life.
1. Athletic performance is easy to measure. Especially for individual sports (track and field, gymnastics, weightlifting) the numbers are the only way to compare athletes. Not so for programming. If someone invented a way to definitively judge programming ability today they'd become very rich, very soon.
2. If we assume that mastery of programming follows a sigmoid-curve (not an unreasonable assumption, IMO) it means that the ability difference in "coding for X years" and "coding for X + 5 years" becomes nearly indistinguishable for some value of X, for people of roughly similar innate ability and drive to improve. And if you believe in innate ability, then there will certainly be people who came to the field late and caught up with, or surpassed, less-innately-talented colleagues who have been programming longer.
3. One of the reasons that starting at an early age is important in athletics is because peak performance is harder and harder after you turn 30. The "growth" phase has to be therefore significantly accelerated. There's also evidence that for technical sports requiring motor coordination (eg. soccer), learning young is better. Whereas people can code at peak level until the day they die, assuming no other illnesses.
Architects do their best work very late in life.
I personally wouldn't want a surgeon that started cutting into people at age 9.
See anyone you can think of from the 60s and 70s like Ken Thompson and Dennis Ritchie.
Ken Thompson had a MS in EE/CS and Dennis Ritchie had degrees in both physics and mathematics, all of which are far more difficult than programming. Most of the other great names of the '60s/'70s have similar backgrounds, invalidating your point.
"N years experience" loses value as a measuring stick when there are probably 2 orders of magnitude separating how much code the most passionate and least passionate developers wrote in that time frame.
The issues with diversity, prejudice and bias would be much easier if there weren't cases where something was both unjust and true. Software development is one of those activities where experience is helpful, so those who start earlier are generally better.
And it's not hard to guess why. Just because you've been programming for a long time, doesn't mean you were doing it correctly, or even understood what you were doing.
No algorithms, or data structures or complex problems to solve. Something that I would include if these were fresh college grads or senior developers with extensive background.
Again, I didn't mean to call anyone dumb, I don't think these people are dumb at all, they were just bad/fast trained.
Uhhh that's really difficult in js even for experienced devs. Way too much non deterministic behavior. I hope this exercise came with tests and a working debugger.
Only difference is that then, the token technologies used for study were out of MS's desktop stack.
Source: worked with lots of outsourcing/offshore partners out of India during that time...
edit: I should also add that in the US the same could be observed: uptick in CS grads who only started out in it for the money, had no real interest in the actual building blocks they were given -- and were predictably uninspired in the workplace.
The percentage of 'good' programmers was higher, but that was only because there was a 4-year barrier to entry vs ~16weeks-1yr for the tech schools in India.
For almost everyone else I've worked with it's just a job. No Github account, no personal projects, no dev environment setup on any home computer.
If you're happy with your current situation, forcing a change isn't going to suddenly make you interested in those changes. If you have legitimate interests, explore them. If you don't, see what catches your eye here on HN and other places and read up on them, seeing if anything naturally does.
Are they game developers? Are they working on enterprise apps? Are they working on lead-gen landing pages for marketing companies? Data visualization? Accessibility-focused? etc...
Front-end is becoming increasingly specialized to a degree.
1) Most of the bootcamps teach the basic of front-end, and a lot of them, teach by doing without explaining a lot of basic concepts. They are basically money grabbers and throw these people out of the door as fast as possible to get their money back.
2) A lot of the students are in for the money, not for the love of the job. Sorry, but it's true. I don't mean to include everyone, but out of 30 students, only 2 kept working in my previous company, they weren't good developers, but they loved the job and kept learning and improving themselves. Nothing wrong with pursuing a good paycheck, but in developers world in order to keep being relevant in the next 2/3 years you need to keep sharping your skills.
3) The best developers I worked with are the self-taught guys/girls who learn on their own before they even hit the college. The most boring developers I work with, the the ones who only learn to code while in college and never developed any interested to learn before that. But the most horrible devs I work with came from boot camps. Not their fault, it's just how bad these bootcamps are.