Ask Slashdot: Job Search Or More Education?
Matt Steelblade writes "I've been in love with computers since my early teens. I took out books from the library and just started messing around until I had learned QBasic, then Visual Basic 5, and how to take apart a computer. Fast forward 10 years. I'm a very recent college graduate with a BA in philosophy (because of seminary, which I recently left). I want to get into IT work, but am not sure where to start. I have about four years experience working at a grade/high school (about 350 computers) in which I did a lot of desktop maintenance and some work on their AD and website. At college (Loyola University Chicago) I tried to get my hands on whatever computer courses I could. I ended up taking a python course, a C# course, and data structures (with python). I received either perfect scores or higher in these courses. I feel comfortable in what I know about computers, and know all too well what I don't. I think my greatest strength is in troubleshooting. With that being said, do I need more schooling? If so, should I try for an associate degree (I have easy access to a Gateway technical college) or should I go for an undergraduate degree (I think my best bet there would be UW-Madison)? If not, should I try to get certified with CompTIA, or someone else? Or, would the best bet be to try to find a job or an internship?"
You should work on finding a job first. Academia tends to be very different then the work environment. A lot of companies also offer money for further training and certifications so you can always build up on that.
With your name, have you considered becoming a crime-fighter, or super-hero?
Get a job, and make them pay for more education / training / certifications. It's tax-deductible if it's relevant to your job.
It'll also help you maintain your sanity a bit, since the work and projects you do and how you approach things are very different between work and school. You'll also end up less frustrated with the work projects that you don't have complete control over, and more motivated with the school projects that would probably be pointless if you were just doing them for a grade.
And don't worry too much about the BA in Philosophy bit... a lot of the good IT folks I know have bachelor's degrees in English or other stuff. And they're great, because they can communicate with people a bit better sometimes. Certs and perhaps an MS degree in your field will help you later secure more pay and promotion opportunities with the HR of larger companies, though. But to get in the door, you just need demonstrable skills and experience, which sounds like you're on track for.
It depends on what track you want to get into IT on. If you want to start in programming then yes, you most likely need more schooling. With the glut of applications most companies are seeing these days you will have trouble even getting an interview without a BS in EE/CS or something similar. That said it sounds like you are comfortable with the hardware end of things, and if you would like to pursue that track the degree requirements tend not to be as stringent. Most of the network engineers/ops positions at my company are people with certifications, be they CompTIA, Cisco, M$, etc. They aren't any less skilled at their positions, but the networking world tends to place more value on results than degrees, in my experience. So assuming you want to stay on this track I would suggest starting with certs. You can always work your way sideways into a dev position if that's what you want to do, but that's the easiest way to get your foot in the door AFAIK.
C or C++
How many years of C or C++ do you have?
What projects have you completed?
If you want to do website development thats different.
But real computer programming tends to use C or C++ or obj C
I haven't hired a C/C++ programmer for nearly 10 years, and have managed some large business application development projects (one project is deployed to around 800 locations with about 20,000 users). What is your definition of "real" programming?
I'd go the certification path. Going to university or college for IT isn't a terrible idea, but in my experience it's not necessary and probably a waste of money. I've had many co-workers that come out of university and college programs that don't know anything, or worse, memorized how to do something in one particular controlled environment and think they know everything.
IT is about experience, confidence, and skill. If you already think you have good troubleshooting skills then you're well on your way. I'd get some core certifications like CompTIA A+, and CCENT and then look for an entry level job. Consulting companies that provide helpdesk support or managed services for small/medium businesses are a great start. From there you'll build contacts, start to specialize, they'll pay to get your more certs, and before you know it you'll be a lazy sysadmin on someones payroll.
If it ain't broke, don't fix it.
If you feel comfortable with Python, come out to the Chicago Python Users Group meetings, hone your skills and network. There is a lot of Python work in Chicago these days.
"To those who are overly cautious, everything is impossible. "
Then start peddling it. Then start working for the organizations that become dependent on it. Finding the application to write is the hard part.
Please do not read this sig. Thank you.
dying business. The core of IT is viruses, failing hardware and codemonkying (e.g. simple, lego style programming as opposed to the stuff that's basically just really hard math). Assuming you're not a math guy that just happens to have a Philosophy degree, you're looking at one of those 3 core things. Now let me explain why they're dead ends.
The bot nets got too big for their britches. Microsoft started tracking them (cheap) and sending the American DOJ (expensive, but free for Microsoft) out to get them. Virus removal work has been plummeting ever since. Hardware is about 50 to 70% longer lived than 10 years ago, due mostly to cooler running chips. As for codemonkying, good luck competing with cheap offshore labor.
There are still jobs, but they're few and far between, and many go to Visa applicants. Your wages will be low, your hours long and you'll be on call for the rest of your life.
IT as a profession is dead unless the gov't steps in for some protection. I thought of running a lobbying group (god knows Unions are dead), but there's too many "independent thinkers" and they're basically divided and conquered. For your own well being get the hell out of IT.
Hi! I make Firefox Plug-ins. Check 'em out @ https://addons.mozilla.org/en-US/firefox/addon/youtube-mp3-podcaster/
I haven't hired a C/C++ programmer for nearly 10 years, and have managed some large business application development projects (one project is deployed to around 800 locations with about 20,000 users). What is your definition of "real" programming?
In OP's case, I bet "real programming" is anything that involves C or C++ programming. Holy circular definition, Batman.
PS: I don't reply to ACs.
get a degree. Programming jobs are heavily resume/GPA filtered. Unless you have someone on the inside ("who you know"), what you know will only get you so far. The great jobs, IMO, for a newbie, are best approached with a great GPA and transcript.
There is so much more to programming than just banging on a keyboard. Get a good discrete mathematical background, algorithms, data structures. Study the hardware level as well (don't sleep through Comp Arch like I did). For the best bang for your buck, dual degree CS with something else engineering related (mechanical, chemical, physics, etc). STEM is the big thing these days.
Do NOT bankrupt yourself or your future with crazy loans. Yes, "get a degree" and "don't bankrupt your future" are almost mutually exclusive these days. But even from a smaller college, a great GPA and transcript will get you in more doors.
I finished my first degree, and after some futzing around decided to do a masters. While I think I could have continued to get good jobs with my BA and hobbies (I too learnt QBasic, and then downloaded QuickBasic from the net, when I was young), the second degree will get me to where I want to go faster. That's the thing, I have a direction I want to go to (which I didn't have when I finished my first degree).
With a BA and computer skills you should be able to find a varied number of jobs, including in communications type situations (you can read and write, and you can do (or learn to do) web stuff? that's all you really need). My advice, get into the work force for a couple of years and see if you can cope with the sort of jobs you are getting. If you want something extra, go and do more study.
HELP MY ACCOUNT HAS BEEN HACKED BY AN ILLIBERAL ART STUDENT SET TO DESTROY THE INTERWEBZ!
Step 1: Teach yourself how to code. This can only help and there is plenty of resources. Kahnacademy, MIT's Opencourse ware, Python the hard way. The key to getting any IT job is the ability to develop the skills required.
Step 2: Work on the cheap and be humble. There's plenty of non IT shops in dire need of a little bit of HTML, a little bit of maintenance, a little bit of what have you. Offer to be paid in beer and you will not only develop real world skills, you will make connections.
Step 3: Specialize. A college degree in X and the ability to do the requisite skills should be able land you a junior role / internship. The work may not be glorious, but you will be able to get a job, get the experience, get the certs and grow professionally.
Step 4: Don't settle. Don't try to promote your way up through an organization until you have chosen your path. Do good work and pursue new opportunities. If you don't see an opening, move on. IT, more than most careers, values diverse experience and self-development
As an English major from Podunkvilles who works in SF, I can attest to this path. Your desire will get your skills, your skills at any level will be invaluable and you will be able to make a career out it.
Knowing C, IMO, is a litmus test for someone who knows how computers work. Pointers, memory, file I/O, etc, aren't directly useful in higher level languages these days. But knowing they exist would help someone write smarter code.
Didn't you read? He was in a seminary, he obviously had God's help.
http://marriedmansexlife.com/
I just recently received my masters (not in computer science) and I regret my decision to go to school, a bit. Sure I learned things but it is also 2 years away from the fast moving technology world. My experience and skills are ancient, relatively speaking, to those who have worked the last two years. Only go to school if you want to switch fields or if you cannot advance your career without a more advanced degree. Plus, the education may not be that great, considering professors (at large research universities) are there to do research and not teach; you could be getting shitty professors who do not care about providing good instructions and its not like you can get a refund. Try networking, go to career fairs, and whatever you can to get interviews before you give up and go to school. I suspect you will be able to find something before you need to go to school.
70% of IT professionals these days have some sort of degree.
Tech skills on their own won't get you far - back in the late 80's and early 90's when I got started in the field, it was sufficient. I dropped out of college to pursue an IT career and did very well for 15 years in the field before moving on to other stuff.
Then I got laid off, and the lack of degree has really hurt my ability to get a job in this economy. I currently do contract writing for software companies, and that pays well enough - when there's work to do.
My advice would be to pursue the degree while working full-time, either as an intern or other full-time position. The degree, sadly, will be more valuable than the experience.
In the IT field, things that help are the ability to solve business problems (IOW, don't focus strictly on technology) and to manage projects. PMP certification will get you farther than any technical certification (the tech certification market has been in decline for years). Companies don't want to hire someone with specific technical skills - they want people who can function independently and can manage IT projects. Being able to do that will really help you.
A CS degree in combination with project management skills, familiarity with Agile/SCRUMM development methodologies, and business skills will take you farther these days than tech skills alone.
Jim
Insanity is a gradual process; don't rush it.
With an integer overflow. Interviewers take note. ;)
Your post sends me mixed messages. First you are telling us that you started out with Qbasic (that's pretty old-school, that's from when I was a kid, and I'm no youngin anymore I can tell ya)...and then you're asking about internship. From where I come from, internship is for the kids right out of school, not for 40-50 year old computer dinosaurs like you and me (if ...you're around my age). I've been around since Pong and Zx-80(81) days, democoder on C-64, Amiga, Atari etc...In fact, I know that if I where to start all over again, I'd go the education way today....back in the days, things where different, you could just take any computer and code stuff from scratch, no libraries, no pre defined variables, no gazillion calls to various OS related libraries and locales.
If you're indeed in my age group, then I can offer a little advice, it may not be right for you, but chances are - if you're like me, then you're better off following your passion instead of trying to start off where the kids today are starting, they'll rip you apart and probably reverse engineer your soul (not kidding about that) before you can say DirectX.
Find a special niche instead, use your "old school" abilities where it'll do you real good, that's what I do. Even though I have all the latest gear, latest ARM microcontroller kits from TI and whatnot and love to play with my toys, I'll be no match for any kid around 20 today that knows his worth in salt.
You have to weigh in the choices of what you REALLY want do do. After 30+ years in IT, I've toned things down, trying to find real meaning in life instead, discover new places, see where my ready-knowledge can be put to good use, repair arcade machines perhaps? Old retro collectors items can be worth a fortune, not to mention the old mainframe systems no young person seem to know, who's going to repair and maintain those? Etc...find a niche, and you'll find happiness.
What this world is coming to - is for you and me to decide.
Why can't you use a scripting language to implement optimized algorithms?
I think perhaps you missed the point of the course. The value is in the algorithm itself, not the implementation details.
A lot of the companies that develop in Java like to hire graduates without formal CS degree so they can mold the programmer, you will be working on older bloated Java EE servers such as websphere, but its not going anywhere in a couple senses of the phrase. Java, the COBOL of the 1990s, still around.
Numero Uno: get a job. Get more experience in the real world.
How best to do that?
Well, you are lucky in that the job market is pretty good for tech skills. Companies would like to hire more experienced people, but can't always find them. Put your resume together as well as you can and prep for interviews by Googling potential questions and working on them.
Better yet, if you know anyone in IT, have them grill you.
If you are going for a programming job, make sure that you know and can apply basic procedural program concepts such as working with arrays, lists, queues, stacks, iteration, and recursion. Understand the basics of object oriented design. Write programs to practice these things. Find a good CS course online and do the homework.
Wrox's Programming Interviews Exposed is great practice for programming interviews.
If you want to move up, learn more advanced algorithms concepts.
If you are going for a sys admin job, install Linux on your home machine and manually manage it. Ubuntu is great, but learn about partition, booting, permissions, sudo privileges. A Linux admin handbook can teach you a lot.
Don't sweat the philosophy degree.
I do a lot of interviewing/hiring technical types, and have no problem with an non tech degree. Just know your shit.
http://yetanotherpoliticalrant.blogspot.com
I don't think, then, that you understand what sets scripting/interpreted languages apart from compiled 'real' languages.
As far as I know, there is no scripting or interpreted language that will run any algorithm faster or more efficiently than a native compiled program. The interpreted language will have to run through an interpreter first, probably written as a compiled native binary in one of those 'real languages', before it actually performs its actions in the computer using assembly/machine code/whatever the lowest level is.
If you are looking for efficiency, you should be looking at the standard, older, classic languages that are closest to the machine(even if they are harder to program).
If the only way you can accept an assertion is by faith, then you are conceding that it can't be taken on its own merits
Just go get a job. I was a self-taught programmer as well, and got my BA in Philosophy, too.
When I decided to try making my hobby a career, it was RIDICULOUSLY easy to get a job. All I did was use some personal projects as my resume. Showed them my code, showed them what I could do, and was hired.
No one has ever cared that I didn't have a degree in a computer-related field. In fact, my boss never even went to college. You just need some way to show you can do the work. If you don't think you are good enough yet, practice! Create some side projects. Work on open-source projects. Add these projects to git, and suddenly you will be getting a TON of emails about work. Trust me.
When people talk about "education" they always think of getting a degree or something
But to us, who have been in the tech industry for ages, we know that education doesn't always necessarily equate to sheepskins
I rather pay high salary to a guy who knows what he is doing than another one who comes with a stack of meaningless sheepskins.
Muchas Gracias, Señor Edward Snowden !
It's not a buzzword, and hasn't been for about 12 years now. Search on the major job sites for jobs requiring UML knowledge.
Monster.com has none; Google has no openings with that keyword, Apple has no openings with that keyword.
Don't get me wrong, you can find job listings for them, but a straight up Google search will assume you are talking about University of Massachusetts Lowell. To find people who care about UML, you will likely have to look at specific company sites for companies which are known to use it: IBM Global Services, HP (the division formerly known as EDS, before HP ate them), or a Larry Ellison "blue sky" startup which is never intended to produce product, they are expected to lose money so Larry can write down his taxable income.
It can teach you some valuable lessons about thinking, at a high level, about how software systems can communicate internally, and stepwise programming, but if you expect to be hired, then sat down at a desk with a copy of Rational Rose and told to design software systems with it, it better be at one of those big 3 companies.
"I like computers"... it only gets worse when the hopeful claims to know "how to take them apart". Gee whiz! We got a rocket scientist here! He grasped the concept of the SCREW! Pity that by the way he phrased it, it is clear he has never managed to actually put one together again. But he has a golden future at a recycling center.
Neither is taking courses and getting perfect scores any clue. I took some exams and passed them with perfect scores even on languages I never used. It is easy. Most computer courses already give you a passing grade if you refrain from trying to eat the keyboard.
In The Netherlands, the current shortage is NOT in guys who can hook up a PC, or even those who can code. It is in people who can finish an application to specification within a budget. Coding is EASY. Coding well is harder but very few computer courses require you to write more then a few thousand lines of code. Hell, in university most students will build their own OS or something SEEMINGLY difficult. But building a base OS that just runs on one machine and doesn't really do anything is easy. Supporting an entire eco-system of hardware and making it fully functional for daily use by real people, THAT IS FUCKING HARD. Why do you think there are only so many OS'es out there? Why do think many of the "new" ones are really just Linux with a skin? (Android, Meego and its offspring, various realtime OS'es, Bada can use a Linux kernel as an option).
Same with a web application, Webshops are a booming industry yet the number of packages available is truly limited, especially ones that are any good. 4chan software is re-used on countless sites. Most forums run on the same code base.
With mobile Apps we have seen that there are PLENTY of would-be developers out there but the vast majority can just code, have a bright idea but cannot develop it. they cobble pieces together and shove it out the door with "it works for me" and wait for the money to roll in.
IF the poster wants a job in the very wide field of IT OR development (in many ways IT is so wide that development can't be considered a part of it) he FIRST needs to get an idea of what he wants to do, and then get some experience doing it.
If you came to me for a development position, no matter how junior and said "I want to do something with computers" I would tell you politely I have no room for you. Anymore then a carpenter has room for someone who wants to do something with hammers. I can teach you how to code, I might be able to teach you how to become a developer.
I can't teach someone who thinks everything that involves proximity to a computer is the same job.
I have had occasion recently to once again see the difference between a senior DEVELOPER and a senior CODER. One guy on a project I was reviewing happily showed me amazingly well written clean code with full documentation, fully complete and accurate unit tests, continues deployment. Full A+ material.
Just a tiny pity that it had taken him apparently 1.5 years to do as subproject budgetted for a few weeks in a project that was supposed to be finished in less then half a year... he had completely overshot the mark, gone completely beyond the spec and written something vastly more complex then what was needed.
And yet, he was in the company highly regarded despite essentially being worthless to the company... without the main project being ready, there was no use for his code. But the owner of the company told me, "he writes really nice code, nicer then yours, so why should I contract you to fix it". Needless to say I didn't take the interview further, if the owner of a company can't see the difference between being productive and being on a hobby project in this bosses time, there is nothing to manage except a fast exit.
Once again, coding is easy. Finding good coders is trivial. Getting a project out the door on time and with in specifications is the hard part. Don't impress me with your fancy one page script, show me shoddy
MMO Quests are like orgasms:
You may solo them, I prefer them in a group.
I guess in "DevOps", they've started calling sysadmins "Systems Engineers". Which is sort of an insult to my "real" MSSE degree, but it does kinda use the same techniques, sorta. But you ultimately have root on the production servers, so yeah, you're a sysadmin. So search jobs listings for both.
Some main categories of experience we look for (these are some suggestions of the leading FOSS versions of these tools, but bonus for having experience with other tools that do these things... your employer will probably make you use some commercial equivalent anyway)
Monitoring: Nagios / Zenoss , SNORT, NTOP. Know how to write your own monitors. Also get good with writing filters in Wireshark for deeper diagnosis.
Load Balancers: F5 BigIP irules, or NGINX
Build Automation: set up Jenkins to run and report on all of your boring, repetitive tasks. Hands off server deployment with Puppet / Chef; know how to build your own RPM / DEB packages.
Virtualization: VirtualBox and VMware, might as while play with AWS and then set up your own OpenStack cloud too.
Version Control: know your way around Mercurial / GIT / etc. The GUIs are fun.
Ticketing systems: Set up and use Redmine or similar for tracking tasks.
Databases: Know how to backup / restore, poke around using myPHPAdmin or similar.
Agile / Scrumban: yeah, it's just a management fad, and no one practices it right. But at least buff up on the basic concepts so you're familiar with the terminology and what problems they're attempting to solve.
There's more, but these seem to be what I spend a lot of my time doing, and playing with these FOSS tools should get you some familiarity with the concepts and terminology.