INTERNSHIP
Get one. That's how you get experience before you graduate. It's probably the very best thing you can do for yourself. Do a good job so you have good references once you graduate.
Was a nice read, thx havoc.
I hit that wall before graduating last time, about shit expecting me and shit went to shit :D! But im doing fine now ^^ and i hope i can apply this into choosing what to work with :)
I'm pretty sure your thoughts would echo job finding in other jobs/courses so good read either way
thanks for this thread, i remembered i got deadline on submitting my resume right now and managed to send it in the last minutes; only thanks to you. gg wp!
@Havoc: To be quite honest I think the web is the perfect environment for a coder right now. You need to learn the technologies used in the front end (CSS/JavaScript/HTML/SVG) really well and some server-side languages (C#/Ruby/Python/PHP) with some working knowledge of a mainstream framework for each and you're pretty much ready to go.
After working with several languages and frameworks throughout my career I've noticed that once you get some general concepts straight in your head you can easily move on to anything else since most of them are very related. A good example for that was when I had to learn this Perl web framework named Mojolicious on my third job which I managed to pick up quite fast since it was very similar to Ruby on Rails with which I was already familiar, also, some time ago I managed to understand the Flex framework really fast by making parallels with ASP.net and JavaScript + DOM.
A good coder can easily work with pretty much any language/framework because a good coder understands the principles behind them and sees the similarities.
Just adding to it that there are more fields in Computer Science than just Software Engineering, for example algorithms/mathematics where you do optimization, machine learning, AI or other stuff (my field). There how well you code and what language you prefer is less important and your mathematical skills are more important.
@Skolder The point I was bringing to that is that there is much heavier competition in those fields than any other as web languages are designed to be simplistic and easy to learn. I was suggesting focusing on some specific career path rather than just knowing languages....cause who doesn't know enough HTML, or CSS to get around. NET and Java are extremely good languages in the current business job market.
@Jussi I did most of my modules geared towards Agile, UML, and mathematics and machine learning. I probably shouldn't have as its an old mans game and really soul destroying after awhile. ITIL and Agile stuff is a lot more inspiring as you get to have a lot of hands on in various projects and get to see things get created by you as opposed to going through iterative cycles as a coder.
@6_din I find that changing jobs while you're younger is good but once you hit late 20's it really pays to stick it out so you can climb the ladder in a company you're happy with. No one wants to hire a 30+ year old who has changed jobs like 10 times in his job cycle. People like to see loyalty, and a career driven person. If you're you people will brush over it, but if you're older people will question why you changed jobs so much and should they really hire someone who will leave in like a year or two? Is it worth their investment?
Havoc I didn't read all the thread so sorry if you have already mentioned this but what would you list as important for everybody to know in regards of programming even if you're not a CS student (well not everybody but mostly engineering students)
Hmm it's the opposite for me. I couldn't see myself doing web/UI programming for more than a couple of years - any more than that and I would probably tear my eyes out. While what I'm doing now (automated experiment design for drug development) is something I could do for a long time. It's fun to develop algorithms/methods for stuff that hasn't really been done before.
I haven't worked in an Agile development group so I can't say much about that.
One soft language, and one hard language and know them well. With knowledge of hardware, and networking how it works etc. even if you haven't learned about it. Just demonstrate understanding.
Soft languages are like Javascript, VB, PHP, Python etc.
Hard languages like C#, C++, Java, F#
The below image accurately shows paths. Learn a "Hard" top one, then learn the accompanying soft ones.
I know matlab and intend to learn R soon. Will learn xpress as well but it's not really a programming language, it's a solver
Nice post, very helpful for people considering the field (or those already in it and looking to advance). I'm sure there are quite a few people like that in this crowd. One thing I'd suggest is that your experience reflects a mindset fixed squarely in the realm of "old world enterprise". It's a place where degrees, vendors and certifications matter, built to support already established business. There are certainly nice jobs in this market, but it's not the only thing out there.
For contrast, companies like us (Dotabuff) look at things very differently. In this setting, it's not so much what you know (degree, certification, resume, etc.) as your capacity for learning and passion. For example, our most recent software engineer hire joined the company having zero real-world experience in either of our primary programming languages (Go and Ruby, FWIW), but has managed to be incredibly effective nonetheless due to ability, effort and attitude. We pay competitive salaries, work remotely, have very flexible schedules and want people to be happy above all else. I believe that happy and passionate people produce great things. If I weren't doing this, I'd be working for a company that has similar priorities - those are the things that are important to me.
My advice to those wanting to build software: work hard becoming great at what you're passionate about. It doesn't matter if you like building web visualizations, demofile analyzers, counter-strike cheats, HTML+CSS demos, Android games or even boring enterprise Java CMS apps. There's always a job available for someone who is passionate and hardworking.
Im gonna research on how to go to anime world.
Overall, good advice to uni students like me who thinks they gonna get the job they want.
Hey havoc for someone who doesn't study computer science but would like to learn computer science, what further reading would u recommend?
@Wraithseeker Starting with the basics is good, something like...
*Computation and reasoning
*Mathematics for computing
*Systems architecture
*Programming in Java
*Business systems.
Follow the course work for these.
1. Python - 2 part free course that will teach you reasoning, syntax, and a very useful computing language.
https://www.coursera.org/course/interactivepython1
https://www.coursera.org/course/interactivepython2
2. General Computing - 2 part free course
https://www.coursera.org/course/principlescomputing1
https://www.coursera.org/course/principlescomputing2
3. Algorithms & Problem Solving - 2 part free course
https://www.coursera.org/course/algorithmicthink1
https://www.coursera.org/course/algorithmicthink2
4. Data Science
https://www.coursera.org/course/datascitoolbox
https://www.coursera.org/course/rprog
@Jason You're quite right. Passion about your industry is really important to people especially in a digital environment. Making it a part of yourself and your life, rather than simply a career choice is important to many employers as it shows initiative and intuitiveness.
-------------------------------
Also to everyone else reading this. No matter what job you get or where you work always give it your 100%. It helps to build strong work ethic and the hardworking and enthusiastic always can get ahead. People are much more likely to give responsibility to the hard worker rather than the person who is just more qualified on paper. Take initiative and be curious, and learn about things you don't know.
The difference I think between w3schools and stuff like coursera and MS Virtual academy, is that they are a lot more interactive which I find easier to learn stuff from that I know nothing about rather then pouring over text for long periods of time.
Instructor lead courses always have longer lasting results and help you understand content better. Imagine if in University lectures they handed you a book and you sat for 4 hours reading....pretty boring, and you probably wouldn't grasp, or understand the content.
Try this as well http://www.microsoftvirtualacademy.com/
For early jobs in IT I would also recommend looking for actual IT companies instead of an IT department in a non-IT company.
You are more likely to have a good number of very experienced / good people to look up to. Also IT staff are generally treated better if they are recognised as directly generating revenue instead of just another cost.
Not concrete rules but just what I have seen / heard in my 5 year experience.
I'm kind of torn on the whole learn a hardcore language cus css/html/javascript/ruby etc are all easy to pickup.
There's two sides to the coin here. On the one hand I'm like a c++ expert. My first language, I still do 50% of my programs at my job in c++ (other half is java apps), and it seems like hardly anyone these days knows c++ well. When we try to hire new people it's very difficult to find people who are good at it. So I will always be hugely valuable to my company and in theory I should always be able to find other work cus c++ knowledge is a valuable and becoming more rare skill compared to say knowing css or javascript.
But the other side of that coin is it's becoming more rare cus there's less demand for it. Yeah there's metrics and stuff that still show c and c++ as the most common languages used but if you browse the job markets almost everyone now is hiring to build web based stuff and is doing the front end work using other languages and even the server stuff might not be c++ or java.
So I don't really know. I know there's a lot of demand for app developers who know ruby on rails and css experts but hardcore c++ developers are also a dying breed and thus if you can become one you should be able to demand high pay for your expertise even if it takes a little longer to find that position.
The fastest growing fields to me though seem to be cloud based integration and network/cloud security. If you learn how everything fits together that's a big deal cus a lot of people know how to code the server portion or the gui/front end apps but don't really understand how it all connects through the networks and how to setup a good cloud system that is also secure.
Java = Plentiful jobs, decent pay, lots of competition, easy to get into.
C++ = Lesser job availability, really good pay, not much competition, tougher to break into.
The best programmers is not the ones who are the fastest (spaghetti-guys), neither the one who are the smartest (code compressors), its the professionals those who follow the steps of development on point that are the best. Also, as a junior don't ever hesitate to ask for help or advice, the dumb ones doesn't.
I myself always tried to strive to be that professional programmer, but I never reached that zen-state.
Now for some rambling!
Programming gotta be the most frustrating job I ever had. The projects usually starts with the funds (the dream) to make a Ferrari, but you and your team end up with a soapbox car because of all the cuts in the budget. You just want to kick those System Leaders/Architects in tha butt.
Don't expect much programming either, after all the 1000 meetings and all the UML business, the product is a swift job to complete (If you look at the project as whole). It's the test-iterations that makes you sweat somewhat, because bugs tend to come in masses.
That's my experience of Enterprise development.
Testing though, looking back that was my dream job until someone "fooled" me into the IT Security area. The pain... the pain...
Now-a-days development is my best hobby, sometimes I have more fun with that than Dota. I'm happy with that!
Btw, nice CV mr Badger :)
There's a lot of jokes I want to make in this this thread that would probably get me permabanned.
Anywho, best of luck with whatever you do. I am sure you will exceed in whatever you do.
Also, pm when you have a free second, these are rich.
@Havoc, yes exactly that. My wife wanted to relocate our fam about 2 hours west to be closer to her fam. I'm a c++ specialist and have tons of java experience as well but all windows applications. Sometimes they have web interfaces but no direct web development. All the jobs I found were java web developers and other web developers using stuff like css/html/javascript/ruby. It would've been a 20-30% cut to take any of those jobs. Their whole mentality was why hire a very specialized guy when we can just get college grads to do the same thing? I couldn't find a specialized enough job to pay me what I wanted.
In the end I stayed where I am and I love it, wife just has to deal with driving 2 hours to see her folks lol.
@netmask
Trust me. Architects get just a frustrated at having their lovely elegant solutions replaced with an abomination because of budget cuts and impossible time constraints :)
Пријавите се да бисте поставили коментар.
Hi All,
This will be quite a read but I am sure some of you will benefit from it as I know that a lot of you are younger and currently moving or learning/working towards a degree in Computer Science, Technological Engineering etc. I am simply sharing with you some of my experiences, and what I have seen and had to deal with in this line of work so when you come out of university you know what you're in for.
What prompted this is a guy who recently joined our team who is quite possibly one of the most brilliant and dynamic programmers I have ever come across but the down side is, it's his first job and isn't paid all that well and most of the stuff he does simple google searches can do and his role is not as glamorous as he thought it was. I feel bad for him because a lot of his talent is wasted in our group and he is fast losing interest in the role which is due to him having painted a picture of how he envisioned it to be.
THE ISSUE:
Skipping the back story lets get down to the University Degrees and what they can do and can't. As far as a degree in Computer Science, it basically tells a recruiter that you have a strong understanding of technology, programming, syntax, mathematics etc. all the things that would make for a well developed programmer, with an analytical mind. The issue arise that this alone isn't enough to secure you a job in the type of role you envisioned and will most likely wind you up working menial jobs till you get the experience to present a healthy profile to a company that is willing to pay you a decent salary.
A DEGREE IN COMPUTER SCIENCE OR RELATED:
I have found some of the most successful and better paid people in the industry I have come across always have a mixed background. Computer science, with something else.
* Prince2, Agile, or UML Architecture
* Financial, or Business Services
* Data Analysis
* MSC, or Cisco Certification
* SAP
As far as a lot of the business world is concerned a background in Computer Science is the skeleton, and they want to see meat. They want that good structure with a practical "front end" they can find use for in their business. This was one of the biggest struggles in the start of my string of jobs was that the degree itself always lost me out to people with that "something else" or more experience in previous roles which I didn't have.
Another issue that companies recognize is that a lot of what is taught in Universities is quite dated, and while it is fundamental to a good foundation in IT, or development, most people aren't intuitive enough to be able to adapt what they have learnt into a modern environment. Equally, trying to persuade a potential employer that you have what it takes to pick things up fast and adapt is part of the struggles you will face.
IT SUPPORT VS OTHER ROLES:
Honestly, this is a role (IMHO) that I would completely dodge. Most companies are content to outsource their IT to bigger names like Wirebird, Rackspace, and Media Temple. Who will provide support, and remove the need to hire 3-5 people to manage it. It cuts costs and headache to let a third party handle it so the only roles you will be fortunate to find will be in the third party companies who pay extremely low salaries due to a lot of their work being outsourced as well to the developing nations.
If you're interested in a role like this then I would highly recommend a Microsoft or Cisco degree to couple with as these will find you work fairly easily but cost a lot of money to get to a point where you can walk into a company and they will, with confidence hire you. Stuff like Python, Perl, Node, and shell scripting knowledge is advantageous in these roles and again, the additional certifications and scripting knowledge will set you apart.
WEB CODERS
This is a tough one because honestly I never learned any language beyond what I translate from the other languages I know and that is the problem right there. Basing a career choice on a language that most people can learn (basics) from a 30 minute video on Microsoft's virtual learning course isn't a wise move. There are people who are successful in these roles because of the wealth of experience across various languages, and CMS platforms which help secure pretty sweet roles. The only advice I can give on this is that Java/Javascript is your friend as well as good working knowledge of .NET technologies.
The market for people like web developers is pretty saturated and recognizing that a lot of companies are picky about who they hire and will usually want to see a very versatile person who understand a lot about web technologies, web apps, and so one. If you're making this a career choice you can't be half-assed as you're up against about a million other people who do exactly the same thing so you have to stand out as a passionate, and well versed in all things web.
IT PROJECT MANAGEMENT.
Probably one of the most financially rewarding careers you can have and the job listings for these go into the crazy figures for big names like Oracle, Microsoft, Jigsaw, etc. This role is actually surprisingly open and looking for new blood so would be a good option to have one of the IT Lifecycle certifications in your arsenal as it will never be wasted as a certification in any of them (Agile, Prince, ITIL) says you know how to manage yourself, others, and can help set you as a leader early on in any role you take.
There comes with this also the option to be self employed or work with an agency for period contracts which can be extremely lucrative and allow you to get time to yourself and be your own boss and have a life outside of work but can equally be really draining when you are involved in a project.
---------------------------------------------------------------------------------------------------------------------------
A short bit about my job climb and what I saw.
FIRST JOB:
Coding "Moses" for a statistical translation research company. Was really hard work in a very niche area which I was probably wise to get out of.
Skills Used: Perl, C#, and some IT infrastructure work.
SECOND JOB:
Software Engineer, and UI coder for Xerox. Worst. Fucking. Job. of. my. Life. Never again will I work for a big name at a low level. Underpaid, overworked, and just flat out invisible so no internal climbing or performance bonuses, or salary increase. Seriously unless its a really sweet deal avoid working for massive companies, you will just slow die away and lose all/most of your enthusiasm for this kind of work.
Skills Used: Shell Scripting, C#, VB, a lot of Hardware/Firmware knowledge
THIRD JOB:
Contracted Cisco Engineer. Good pay, but had very long hours and the swing of having loads of money and no money made it really hard to save or plan for the future.
Skills Used: Cisco technologies
FOURTH JOB:
Finally a break. Started out as a IT Project Manager, then moved into a Senior Network Admin role as when a fortunate position came free. Something like this is what I would recommend. A company that is new, or not very technologically advanced will allow you to run with your creativity and develop/suggest things to make their lives easier and will give you authority over them not understanding them fully themselves. It also helped me become very integrated in the company and I am fairly fortunate to have been there for 4 years now.
Skills used: Agile, MSCE, .NET, Ruby, Microsoft Dynamics, and general IT/Networking knowledge
--------------------------------------------------------------------------------------------
IN CLOSING:
Make sure you keep yourself versatile. Computer degrees are good but not enough most of the time, so pair it with a third party certification to really strengthen your profile. I have forgotten a lot of languages I used to know, and learned some new ones. My advice is learn one language really well (preferably Java IMO) and then the rest you can pick up as you go. In business a lot of .NET technologies are prominent so looking into this might be an option.
Hope this has been helpful, and I had to sit in a meeting room with him very depressed about where his career was going and it made me think of how many people on here have so much talent but may see it wasted if they don't play their cards right or set their expectations too high.
Thank you all for your time,
Havoc Badger
* This is my view and entirely my opinion, this is based on roles inside the UK and the US so things may be different where you live. My opinions are expressed based on 7+ years of IT related roles as well has hiring staff in similar roles.