104 karma · joined February 22, 2007
Culture. The fact that it doesn't matter what the company says their culture is and that their culture is defined by the behaviors that they do and don't allow in the workplace. Culture can vary from team to team and department to department.
Deadweight. The organization is going to be full of dead weight.
Get ready to feel under-appreciated and under-valued.
When a company becomes a certain size, it's inevitable that you will hire people looking for a job.
Firing people sucks. Yes, it affects their livelihood, but having warm bodies on your roster affects your business.
The problem with people who have a job is that they affect company culture as they set the tone for acceptable and unacceptable behaviors in the workplace. It spreads like a disease and the effect can cripple those who show up to work.
Sometimes, this can lead to confusion as people who have a job might think, "I was doing what I was told. I don't understand why." Creating value is much more than simply following orders.
I use vim with a couple dozen plugins as my main text editor every day.
No matter which route you decide to go, work on some hard skills. Something. Anything. Whether or not you think you're going to use what you learn, what's important is that you're learning. If you start interviewing, you're going to eventually be asked, "What is something new you have learned?" It would be a great chance to pull out your computer and show them. Even if you land another role as a PM, it's going to be important to be relevant.
On a related note, someone I know was an IT Director. On the side, he started tinkering with Android development. I helped him learn how to use git. Eventually, he was laid off. The skills he learned helped him land a job at a decent sized company that I'm pretty sure you've heard of.
What makes python a good choice is that you don't have to spend too much overhead learning language syntax in order to implement concepts, and you'll easily be able to keep the learning of those two items separate.
Once you have a strong foundation in concepts, you can much more easily pick up a different language. The biggest downfall there is that if you decide to later learn Ruby or JavaScript, you might approach a solution as, "This is how I would do it in Python." Don't fall into that trap. Learn the features each language provides and how to use them.
Since you mentioned games, there's a couple of books on the topic that are free: http://inventwithpython.com/
Start networking. You never know who you might meet. You have a better chance at landing your first job through an acquaintance as opposed to answering a help wanted ad.
Start attending meetups, now. My top recommendation would be OpenHack http://openhack.github.io/new_york/ While you don't have a portfolio of projects on a website, you most likely still have them on your computer. OpenHack may be good place to showcase what you're working on if someone shows interest. Those projects also come in handy for when you start landing interviews. I always took a computer to job interviews to showcase what I was working on and even did some live coding. There's also another advantage to doing it this way: You are in control of the interview and I feel it's a much better approach than sitting through a Q & A with a hiring team. It says, "I came prepared."
For your first job, don't undercut yourself on salary. At least make enough to live. Even if you find a company is horrible, you can still leave yourself open to other options. You might even land your next job, doubling your salary, through someone you worked with and recently left said horrible company. It may take your 2-3 employers to get to your desired salary.
I landed my first job through a random conversation with a neighbor (before that I was college dropout and an office temp for two months trying to land said job). It paid $28k and half of my month's pay went to cover rent for a studio apartment. I ate PB&J and an apple every day for lunch. The job was copying text from Word documents and PDFs, marking them up with HTML. At the time, the company was building a hosting subsidiary. 2-3 nights a week, I spent 3-4 hours volunteering my time with that effort, through which I picked up Linux. I landed my second job through a previous co-worker. Every job offer I've ever taken started with an acquaintance.
My recommendation is to pick an area/skill set and focus on building that out. Looking at what you listed, I'd most likely recommend JavaScript for you. Take a look at a front end JS framework like Angular, Backbone, Knockout, or React. Maybe even try all of them out. Eventually, you might have questions. As you do, Open Hack might be a great place to get help and pick up a few pointers. As you become familiar with JavaScript, look to expand your horizons with a JS backend technology like NodeJS and look at exploring frameworks/platforms like Meteor, DerbyJS, or Express.
If you do decide to go the JavaScript route, here are some resources to get you started.
http://eloquentjavascript.net/1st_edition/contents.html
http://bonsaiden.github.io/JavaScript-Garden/
http://www.addyosmani.com/resources/essentialjsdesignpattern...
JavaScript: The Good Parts by Douglas Crockford
Secrets of the JavaScript Ninga by John Resig
JavaScript Patterns by Stoyan Stefanov
As a side note, some of the most brilliant people I've worked with didn't have CS degrees (Music, History, English, etc). Their key strength was that they were passionate about what they were doing and were constantly learning.
“Education is the kindling of a flame, not the filling of a vessel.” ― Socrates
If you don't see the situation getting better, you need to find a new employer. Find one where you aren't the smartest person on the team, one that will challenge you, one where you can adopt a mentor, and one where you can hone your skills. I realize this in itself can be challenging. If you're in a metro area of > 1 million people, it's much easier than if you're living in a smaller city ~250,000. Network, go to meetups, attend open hacks, meet people. More often than not, there are a great deal of job opportunities that never get advertised to the usual channels. Making new connections will help you discover new opportunities.
If you're not learning enough, that's not your employer's fault, it's yours; unless you're working late every night and on the weekends for your employer (if you are, find new job). If it's important, you will find the time. Game of Thrones and Call of Duty can always wait.
Practice your craft, constantly. I realize it may not be possible to do this daily, but try every other day. Set aside time, i.e. 8 PM to 10 PM, or 5 AM to 7 AM (whatever works best). On the weekend, try to carve out a 5 hour block on either Saturday or Sunday. Communicate with your partner why this is important to you. It may not have immediate benefits, but in the long run it will. Commitment and discipline are the most important character traits to have as you endeavor upon this journey.
Here's some other advice I gave nearly 3 years ago: https://news.ycombinator.com/item?id=3693261
Refurbished: Lenovo T420 Intel Core i5 2520M 2.5GHz 8GB / 128GB SSD
http://www.neweggflash.com/Product/9SIA3TX2064547?icid=WP_0_...
Edited: price.
I'd bet that neither site uses Adobe ColdFusion, but rather the Railo open source engine - http://www.getrailo.org/
The perception is that most developers that have built applications in CF have moved on to other languages and frameworks like Go, Clojure, Ruby on Rails, Django, Python, and Node.js.
While app development in CF has been on the decline for several years, there is still a very solid CMS on the platform (Mura) and is used by Intel, Nationwide Insurance and few other high profile companies and colleges.
What I found the most interesting was the use of "fuseaction" in the url - https://www.twitterflight.com/?fuseaction=reg.Apply
This is a convention that was used by the Fusebox framework, which has been defunct for quite a long time.
The trend I've seen with web development is that it's mostly a primary skill. While data science will be a primary skill for many, it has the capability to be a much sought after secondary skill in other industries like finance, health, and actuarial science.
I had similar touch pad issues with a HP where the sensitivity was either too much or not enough. When I ran Xubuntu, I saw the same issues and could never get it dialed in where I wanted it. I eventually jumped over to using CrunchBang (uses OpenBox for the DE, built on Debian) and my touchpad was pretty much dialed in from the get go. Makes me wonder if the sensitivity issues may be with the touchpad drivers that Ubuntu provides, granted it they are different than what's packaged with Debian.
If you don't see eye to eye, now in the beginning, you're going to continue to have disagreements in the future.