Android Things uses Java, and I'm sure other devices will use different languages (python, or something else that comes along). C is a nice to understand kind of language if you want to move libraries for Arduino to other platforms, but understanding any similar language will make that trivial.
Colorado is still relatively cheap to live in with a lot of smaller cities with tech, and worth checking into. Parts of the state are growing fast, like Boulder and Denver, but Fort Collins is an amazing town, and you can definitely do alright with tech in Colorado Springs as well without being overly crowded and expensive. You will run into a fair amount of assholes who refuse to accept that the state is growing (they almost all have a "Native" sticker on their car), but they tend to not be in tech.
I'm sure those schools do have really good programs, and I know my school had a mediocre computer science department (graduated about a year ago), but what I've noticed really separates good and bad developers is their drive to continue learning and making things because they enjoy it. If people like programming, they'll be really damn good at it, no matter where they went to school. Hell, I would say some of the best developers I've met either didn't go to school or majored in unrelated fields and just learned at work (mind you this was back in the 90s/early 2000s when they did it) and their free time.
I just had my one year anniversary as a full time Android developer, and it's insane how much I've learned after leaving school. Luckily there's two older guys (well, one now, the other moved on recently) on my team who are _awesome_ mentors.
1. Pay attention to everything you can in the work place. You may be a client side developer, backend, whatever, but pay attention in every meeting or conversation that you can eavesdrop on. You may not understand everything going on with the teams you don't work in, but just being exposed to their terminology and _looking up what they're talking about_ will get you far. This doesn't go for just development, either - listen to the business and sales guys talk and try to understand your clients and what they need so you can build a great product by anticipating what will work for them before they have to ask.
2. Write a blog. Seriously. I'm the first to admit that I don't really know anything when it comes to development, but I've been actively writing new posts to my blog and it forces me to grok whatever I'm writing about. Whatever you're doing, post the code on GitHub so others can read it (mine's here). Developers who read peoples code online tend to be awesome about making suggestions and asking questions that make you realize you screwed up without being jackasses about it.
3. If there are tech meetups in your area, go to them. If you're in a decent sized city (I'm in the Denver/Boulder area, which isn't huge, but it's a lot bigger than where I'm originally from) you can find multiple meetup groups related to tech that you're interested in. It's a great way to learn new things and meet a lot of awesome people in your area.
4. If there's hackathons in your area, no matter how small, go to them. You meet awesome people and learn how to work in teams that are different than the one you're in every other day. Plus there's usually free food and beer, so what's not to like about that?
5. Pick up skills that compliment your work area by doing projects that aren't work related. It helps you understand what other teams are doing and how it affects you, plus it just makes you more awesome while keeping down the monotony. As a client side developer, I've been taking a Udacity course on using AppEngine to make backend APIs, and it's been fun.
6. For the love of God, check for null pointers and other kinds of exceptions. You may not catch all of them due to inexperience in spotting them, but that's what senior devs doing code reviews are for. You don't want code going into the wild that crashes, even when data is bad. Getting a call on a Saturday saying something bad is happening is not what you want - the weekends are yours to do whatever you want, not put out fires that could have been avoided.
7. Open source third party libraries are your friend. People way smarter than me have put together some amazing things that we use every day, like Otto and Picasso from Square. Try libraries out in a sample project, and if they will work for what you're doing, give it a shot. If you can make them better in the process, submit a pull request. Like I mentioned earlier, the open source community is awesome and if your pull request isn't up to par, they'll let you know what you can do to fix it.
8. You're going to fail at some things, and it's alright. Fail early, learn what did and didn't work, and try again. Learning from mistakes is how you get better. Along this same line of thought, if you run into a roadblock that you can't figure out yourself via documentation/stepping back and evaluating the problem, StackOverflow is awesome.
Part of this issue is because the teachers are under qualified for teaching AP comp sci courses. I took AP comp sci in high school back in 2006 and failed it with flying colors (as did every single person in the course), but that's because they made us take the A and B exams but only prepared us for the A exam. Looking back on it, we should have been better prepared, but the teacher was learning the material as we went along, and he simply didn't hit data structures like trees (huge on the exam) or really much OOP.
They pay you for 40 hours a week. If you're working over that amount, you're just fucking yourself over. I happen to be lucky enough to have a team that acknowledges this at my first programming job, and it leaves a lot of time for me to learn additional things outside of work - and honestly I feel like I'm a far better developer in the short amount of time that I've been out of school than I would have been had I worked somewhere for 80+ hours a week.
I'm a half hispanic Android developer in Boulder and I applied like two days ago for shits and giggles. Maybe this'll work out in my favor, albeit not necessarily for the best reasons, but I'll take whatever advantages I can get:P To be fair, I don't think they do Android development out here.
As a recent CSci graduate from a state university in California, I can tell you that there's far better content online than you'll pick up in a class, so good job checking out that area. MIT has a lot of great courses on YouTube, such as their algorithms lectures from Cormen, and edX has a fair amount of content as well. There's also a lot of books out there if you can pick an area that interests you the most, such as mobile or web, that you can just read through and type up the examples yourself. The thing about programming is that you tend to learn more from doing than from listening to lectures, so if you can just sit down with a book, online tutorials, etc., and just make programs and figure out why they don't work on the first go (and when you pass the forloop/if statement section of your education, they probably won't), then you'll be golden.
Anyone happen to have a source to the recent analysis (at least the numbers)? I want to see if they have information on majors, etc. The original article is here: http://www.tcrecord.org/conten... but it's behind a paywall. I've noticed that in my university, computer science/engineering majors average in the C range simply because the courses are intended to be difficult.
Heh, I keep seeing all this assumption about student debt in grads. I should add "I don't have any student debt because I invested 80% of my school loan, cashed out and paid it off in full on top of tuition" to my resume. Will look nice under my bachelor's in computer science.
I worked there all summer and have been keeping up with people as well. Our office is on Pearl and it's closed because the 36 and the 7 are too dangerous / closed as well. I have been getting a lot of pictures from friends in the area and it's pretty crazy. The nice thing is a lot of the work can be done from home, and most of the guys I worked with live outside of boulder since housing is so expensive.
That's fine and all, but I really don't care about the OS name. There's multiple articles out there and people going crazy _just for the name_. I want to know what's new in the OS for developers, not what their next marketing strategy is.
I actually have seen a lecture of his from when he released Free Culture back in 06 I believe? I was in high school and went to see him give a speech at a museum. He used a lot of music for his presentation, but every bit of it was a clip to demonstrate a point and served a solid purpose to his discussion.
Just the other day I was adding files to GITHub for my portfolio since I'll be graduating soon, and I was thinking about this exact issue. I ended up putting an Apache license header to my source files, but wasn't sure if this was _really_ the one I should have used. I just wanted to put my stuff up for when I start job hunting, and honestly don't care if others use my work so long as I have a name on my stuff (not that anything I've posted has been earth shattering or special, just random demos to show that I'm not _completely_ in the dark from school:) )
I like my coffee like I like my women, weak and light. I don't keep my coffee tied up in my basement though.
Or another favorite: I like my women like I like my beer. Strong and bitter.
Android Things uses Java, and I'm sure other devices will use different languages (python, or something else that comes along). C is a nice to understand kind of language if you want to move libraries for Arduino to other platforms, but understanding any similar language will make that trivial.
"Being dicks to robots... for science!"
Colorado is still relatively cheap to live in with a lot of smaller cities with tech, and worth checking into. Parts of the state are growing fast, like Boulder and Denver, but Fort Collins is an amazing town, and you can definitely do alright with tech in Colorado Springs as well without being overly crowded and expensive. You will run into a fair amount of assholes who refuse to accept that the state is growing (they almost all have a "Native" sticker on their car), but they tend to not be in tech.
Original poster said "inside a span of 10 years", not "in the last 10 years." Reading comprehension is hard.
Even with the skills to work there, your company sounds like a place I'd want to avoid based on your attitudes. What's the turn over rate?
I'm sure those schools do have really good programs, and I know my school had a mediocre computer science department (graduated about a year ago), but what I've noticed really separates good and bad developers is their drive to continue learning and making things because they enjoy it. If people like programming, they'll be really damn good at it, no matter where they went to school. Hell, I would say some of the best developers I've met either didn't go to school or majored in unrelated fields and just learned at work (mind you this was back in the 90s/early 2000s when they did it) and their free time.
Also people who worked nights at the time.
Probably like ten years ago, wasn't there a thing on Art Bell about John Titor and the nuclear fusion z machine for time travel?
I just had my one year anniversary as a full time Android developer, and it's insane how much I've learned after leaving school. Luckily there's two older guys (well, one now, the other moved on recently) on my team who are _awesome_ mentors.
1. Pay attention to everything you can in the work place. You may be a client side developer, backend, whatever, but pay attention in every meeting or conversation that you can eavesdrop on. You may not understand everything going on with the teams you don't work in, but just being exposed to their terminology and _looking up what they're talking about_ will get you far. This doesn't go for just development, either - listen to the business and sales guys talk and try to understand your clients and what they need so you can build a great product by anticipating what will work for them before they have to ask.
2. Write a blog. Seriously. I'm the first to admit that I don't really know anything when it comes to development, but I've been actively writing new posts to my blog and it forces me to grok whatever I'm writing about. Whatever you're doing, post the code on GitHub so others can read it (mine's here). Developers who read peoples code online tend to be awesome about making suggestions and asking questions that make you realize you screwed up without being jackasses about it.
3. If there are tech meetups in your area, go to them. If you're in a decent sized city (I'm in the Denver/Boulder area, which isn't huge, but it's a lot bigger than where I'm originally from) you can find multiple meetup groups related to tech that you're interested in. It's a great way to learn new things and meet a lot of awesome people in your area.
4. If there's hackathons in your area, no matter how small, go to them. You meet awesome people and learn how to work in teams that are different than the one you're in every other day. Plus there's usually free food and beer, so what's not to like about that?
5. Pick up skills that compliment your work area by doing projects that aren't work related. It helps you understand what other teams are doing and how it affects you, plus it just makes you more awesome while keeping down the monotony. As a client side developer, I've been taking a Udacity course on using AppEngine to make backend APIs, and it's been fun.
6. For the love of God, check for null pointers and other kinds of exceptions. You may not catch all of them due to inexperience in spotting them, but that's what senior devs doing code reviews are for. You don't want code going into the wild that crashes, even when data is bad. Getting a call on a Saturday saying something bad is happening is not what you want - the weekends are yours to do whatever you want, not put out fires that could have been avoided.
7. Open source third party libraries are your friend. People way smarter than me have put together some amazing things that we use every day, like Otto and Picasso from Square. Try libraries out in a sample project, and if they will work for what you're doing, give it a shot. If you can make them better in the process, submit a pull request. Like I mentioned earlier, the open source community is awesome and if your pull request isn't up to par, they'll let you know what you can do to fix it.
8. You're going to fail at some things, and it's alright. Fail early, learn what did and didn't work, and try again. Learning from mistakes is how you get better. Along this same line of thought, if you run into a roadblock that you can't figure out yourself via documentation/stepping back and evaluating the problem, StackOverflow is awesome.
Part of this issue is because the teachers are under qualified for teaching AP comp sci courses. I took AP comp sci in high school back in 2006 and failed it with flying colors (as did every single person in the course), but that's because they made us take the A and B exams but only prepared us for the A exam. Looking back on it, we should have been better prepared, but the teacher was learning the material as we went along, and he simply didn't hit data structures like trees (huge on the exam) or really much OOP.
Why not? They're called 'watches', as in you 'watch' them. They're not called time pieces.
They pay you for 40 hours a week. If you're working over that amount, you're just fucking yourself over. I happen to be lucky enough to have a team that acknowledges this at my first programming job, and it leaves a lot of time for me to learn additional things outside of work - and honestly I feel like I'm a far better developer in the short amount of time that I've been out of school than I would have been had I worked somewhere for 80+ hours a week.
I'm a half hispanic Android developer in Boulder and I applied like two days ago for shits and giggles. Maybe this'll work out in my favor, albeit not necessarily for the best reasons, but I'll take whatever advantages I can get :P To be fair, I don't think they do Android development out here.
As a recent CSci graduate from a state university in California, I can tell you that there's far better content online than you'll pick up in a class, so good job checking out that area. MIT has a lot of great courses on YouTube, such as their algorithms lectures from Cormen, and edX has a fair amount of content as well. There's also a lot of books out there if you can pick an area that interests you the most, such as mobile or web, that you can just read through and type up the examples yourself. The thing about programming is that you tend to learn more from doing than from listening to lectures, so if you can just sit down with a book, online tutorials, etc., and just make programs and figure out why they don't work on the first go (and when you pass the forloop/if statement section of your education, they probably won't), then you'll be golden.
Anyone happen to have a source to the recent analysis (at least the numbers)? I want to see if they have information on majors, etc. The original article is here: http://www.tcrecord.org/conten... but it's behind a paywall. I've noticed that in my university, computer science/engineering majors average in the C range simply because the courses are intended to be difficult.
Heh, I keep seeing all this assumption about student debt in grads. I should add "I don't have any student debt because I invested 80% of my school loan, cashed out and paid it off in full on top of tuition" to my resume. Will look nice under my bachelor's in computer science.
I worked there all summer and have been keeping up with people as well. Our office is on Pearl and it's closed because the 36 and the 7 are too dangerous / closed as well. I have been getting a lot of pictures from friends in the area and it's pretty crazy. The nice thing is a lot of the work can be done from home, and most of the guys I worked with live outside of boulder since housing is so expensive.
That's fine and all, but I really don't care about the OS name. There's multiple articles out there and people going crazy _just for the name_. I want to know what's new in the OS for developers, not what their next marketing strategy is.
I actually have seen a lecture of his from when he released Free Culture back in 06 I believe? I was in high school and went to see him give a speech at a museum. He used a lot of music for his presentation, but every bit of it was a clip to demonstrate a point and served a solid purpose to his discussion.
Thanks, I'll check into this when I get home tonight and update my repo.
Just the other day I was adding files to GITHub for my portfolio since I'll be graduating soon, and I was thinking about this exact issue. I ended up putting an Apache license header to my source files, but wasn't sure if this was _really_ the one I should have used. I just wanted to put my stuff up for when I start job hunting, and honestly don't care if others use my work so long as I have a name on my stuff (not that anything I've posted has been earth shattering or special, just random demos to show that I'm not _completely_ in the dark from school :) )
I like my coffee like I like my women, weak and light. I don't keep my coffee tied up in my basement though. Or another favorite: I like my women like I like my beer. Strong and bitter.
A lot of developers I know are pot smokers, so it's not that they're necessarily mutually exclusive.
Look into Picasso by square. I've been using that a lot lately at work and I love how simple it is
That's all fine and dandy, but what I'm the absolute most stoked about is that action bar is now supported back to API 7 http://developer.android.com/reference/android/support/v7/app/ActionBar.html