Advertisement
If you have a new account but are having problems posting or verifying your account, please email us on hello@boards.ie for help. Thanks :)
Hello all! Please ensure that you are posting a new thread or question in the appropriate forum. The Feedback forum is overwhelmed with questions that are having to be moved elsewhere. If you need help to verify your account contact hello@boards.ie
Hi all! We have been experiencing an issue on site where threads have been missing the latest postings. The platform host Vanilla are working on this issue. A workaround that has been used by some is to navigate back from 1 to 10+ pages to re-sync the thread and this will then show the latest posts. Thanks, Mike.
Hi there,
There is an issue with role permissions that is being worked on at the moment.
If you are having trouble with access or permissions on regional forums please post here to get access: https://www.boards.ie/discussion/2058365403/you-do-not-have-permission-for-that#latest

What skills to improve to get into software development?

  • 26-06-2009 4:50pm
    #1
    Closed Accounts Posts: 27,857 ✭✭✭✭


    Hey folks,

    I've just finished a BA in Computer Science and History (3 years in UCD).

    The degree is fairly practical in that I've been programming in Java since day 1 without having to delve too far into the mathematics and other aspects of computing. I didn't really excel academically, finishing with a second class (grade 2) honours degree, and I struggled a bit with the programming in second year (1st year was easy). In third year however I improved considerably, and I'm a fairly competent programmer now, but nowhere near the top of my class. I also did a C++ class, and did quite good in that, so I'm fairly good at that language also.

    Now that the prologue is out of the way...

    What I'm just wondering is, what do I now need to improve on and learn about in order to get any kind of programming/software development job? Obviously my academic record doesn't really have people knocking on my door to recruit me, but if I'm confident in my programming abilities, and feel that I will be able to hold my own in a work environment, then maybe I'd be more inclined to seek work in that area.

    - In an entry level job, what kind of assignments would I be issued? Do I need to learn a load about networking, interfaces, databases, or what?

    - What languages should I devote some time to that would benefit me? Say, two languages that would be most important in an IT environment? I'll have to improve my C++ (pointers, references, grrrrrrrrrr) and Java skills somewhat, but should I perhaps look at Python? PHP?

    Thanks for any advice guys!

    Unemployed Dave


«1

Comments

  • Registered Users, Registered Users 2 Posts: 2,791 ✭✭✭John_Mc


    Dave! wrote: »
    Hey folks,

    What I'm just wondering is, what do I now need to improve on and learn about in order to get any kind of programming/software development job? Obviously my academic record doesn't really have people knocking on my door to recruit me, but if I'm confident in my programming abilities, and feel that I will be able to hold my own in a work environment, then maybe I'd be more inclined to seek work in that area.

    - In an entry level job, what kind of assignments would I be issued? Do I need to learn a load about networking, interfaces, databases, or what?

    - What languages should I devote some time to that would benefit me? Say, two languages that would be most important in an IT environment? I'll have to improve my C++ (pointers, references, grrrrrrrrrr) and Java skills somewhat, but should I perhaps look at Python? PHP?

    Thanks for any advice guys!

    Unemployed Dave

    You'll definitely need to know about Databases, relational DB design, and SQL.

    I'd recommend C# as you'll pick it up easily with your background in Java.

    Web dev would be a good advantage, so maybe learn HTML/CSS/Javascript if you see yourself going down that route..


  • Registered Users, Registered Users 2 Posts: 5,618 ✭✭✭Civilian_Target


    Java's good, it can do the heavy lifting, but you need to follow it up with a toolbox of other things you can use with it. So then this depends, are you really looking Enterprise, Mobile, Web or Desktop?

    - If it's enterprise, brush up on your Linux skills, try some application servers, learn some perl, and some Java enhancing stuff like AsjectJ. Connector frameworks knowledge and SQL are also very important. (I work in this area, I have fluent *nix skills and a thorough knowledge of Java bytecode analysis and garbage collection.)
    - If it's mobile, get good with Java ME. You might want to learn as well a bit about I phone. Learn efficient programming, how to conserve the phones memory, and how to do mobile UI output.
    - For web, you obviously need to have fluent xHTML, XML, CSS skills. A send web language, like PHP, and a sound knowledge of JSP are probably useful. Mess around with some AJAX libraries, and try some XML frameworks like Castor as well, and webservers like Apache. And an eye for graphics wouldn't hurt.
    - Desktop is a bit rare. You need to be pretty well on top of AWT and SWT to start. Know how to deal with threads, and filesystems. And know your platform.


  • Closed Accounts Posts: 8,015 ✭✭✭CreepingDeath


    +1 on databases, absolutely essential.

    Maybe download a free copy of Oracle XE.
    Become fluent in SQL ( both DML & DDL )

    Our company use J2EE 99.9% of the time.

    The technologies we'ld be looking out for are

    Front End : HTML, JSP, JavaScript, Tag libraries, Struts, Ajax
    Back End : SQL, JDBC, Hibernate, EJBs, JMS, XML processing, Web Services
    Databases : Oracle, DB2, SQL Server, Teradata
    Other : Linux, Junit testing, Ant build scripts, design skills, UML

    Also, if you have any personal projects you work on in your spare time, they might be worth
    talking about in an interview.


  • Closed Accounts Posts: 1,326 ✭✭✭waraf


    Front End : HTML, JSP, JavaScript, Tag libraries, Struts, Ajax
    Back End : SQL, JDBC, Hibernate, EJBs, JMS, XML processing, Web Services
    Databases : Oracle, DB2, SQL Server, Teradata
    Other : Linux, Junit testing, Ant build scripts, design skills, UML

    Good grief :eek: The only stuff we covered in my course were the ones in bold, Java and some mySQL. Would you really be expecting a graduate to have that number of skills?


  • Moderators, Science, Health & Environment Moderators, Social & Fun Moderators, Society & Culture Moderators Posts: 60,104 Mod ✭✭✭✭Tar.Aldarion


    waraf wrote: »
    Good grief :eek: The only stuff we covered in my course were the ones in bold, Java and some mySQL. Would you really be expecting a graduate to have that number of skills?

    Yes I am quite daunted by this, it intimidates me when I see a 'graduate' job wanting me to know things I have never even heard of or more likely have just seen the acronym of. I am bad at programming at the moment even with a 1.1 in elec+comp eng so today I am starting Java from hello world up. We did no SQL in my course, but I used it in my project. It's been a year since college and programming so just getting used to classes etc again.
    I have also just gotten the Sun Certified Programmer for Java 6 Study Guide just now and am reading the first pages. I don't know how to get enough confidence to get a graduate java programming job, as they seem to expect so much on the job request when most of us are pretty bad at just java as it is!


  • Advertisement
  • Closed Accounts Posts: 1,326 ✭✭✭waraf


    I have also just gotten the Sun Certified Programmer for Java 6 Study Guide just now and am reading the first pages. I don't know how to get enough confidence to get a graduate java programming job, as they seem to expect so much on the job request when most of us are pretty bad at just java as it is!

    Fair play. I haven't used Java in a couple of years too but I decided to go with the Sun Certified Java Associate course first. I had purchased the SCJP book first and got scared so I thought the easier course would be a better starting point for me. Good luck with it anyway.


  • Closed Accounts Posts: 27,857 ✭✭✭✭Dave!


    Yes I am quite daunted by this, it intimidates me when I see a 'graduate' job wanting me to know things I have never even heard of or more likely have just seen the acronym of. I am bad at programming at the moment even with a 1.1 in elec+comp eng so today I am starting Java from hello world up. We did no SQL in my course, but I used it in my project. It's been a year since college and programming so just getting used to classes etc again.
    I have also just gotten the Sun Certified Programmer for Java 6 Study Guide just now and am reading the first pages. I don't know how to get enough confidence to get a graduate java programming job, as they seem to expect so much on the job request when most of us are pretty bad at just java as it is!
    This sums up my thoughts actually

    It's very daunting


  • Moderators, Science, Health & Environment Moderators, Social & Fun Moderators, Society & Culture Moderators Posts: 60,104 Mod ✭✭✭✭Tar.Aldarion


    waraf wrote:
    Fair play. I haven't used Java in a couple of years too but I decided to go with the Sun Certified Java Associate course first. I had purchased the SCJP book first and got scared so I thought the easier course would be a better starting point for me. Good luck with it anyway.
    How is it going for you? I am just browsing this book at the moment, this will take a while, it's huge and I've just learned how to print out hello world. :pac:

    We'll get htere dave!, I'm thinking of trying to do this or another masters as i'm a year out of college with no job:
    http://www.computing.dcu.ie/prospective/postgraduate/softeng/structure.html


    Maybe doing that and doing some scjp along the way might be best. Unfortunately I can't see any QA jobs where I could try scjp in the evenings around so a masters might ahve to do.


  • Registered Users, Registered Users 2 Posts: 417 ✭✭randomname


    Yes I am quite daunted by this, it intimidates me when I see a 'graduate' job wanting me to know things I have never even heard of or more likely have just seen the acronym of. I am bad at programming at the moment even with a 1.1 in elec+comp eng so today I am starting Java from hello world up. We did no SQL in my course, but I used it in my project. It's been a year since college and programming so just getting used to classes etc again.
    I have also just gotten the Sun Certified Programmer for Java 6 Study Guide just now and am reading the first pages. I don't know how to get enough confidence to get a graduate java programming job, as they seem to expect so much on the job request when most of us are pretty bad at just java as it is!

    SQL is absolutely essential for the majority of programming work you will do. Don't be daunted by seeing job specs with x number of disciplines required. You need to work on improving your skills and showing an aptitude that you are able to self learn.


  • Registered Users, Registered Users 2 Posts: 2,164 ✭✭✭hobochris


    waraf wrote: »
    Good grief :eek: The only stuff we covered in my course were the ones in bold, Java and some mySQL. Would you really be expecting a graduate to have that number of skills?
    YES!

    I graduated last year and have most of those skills. But I guess it depends on how modern your course is and if it keeps a close eye on the industry.


  • Advertisement
  • Registered Users, Registered Users 2 Posts: 11,986 ✭✭✭✭Giblet


    I'd expect a graduate to have at least one framework dealing with web based techs, and some sort of DB background.

    Some J2EE or .NET stuff is crucial for any graduate nowadays.

    HTML, JSP, JavaScript, Tag libraries, Struts, Ajax At Least 3 of these
    SQL, JDBC, Hibernate, EJBs, JMS, XML processing, Web Services 2 of these
    Oracle, DB2, SQL Server, Teradata 1 of these
    Linux, Junit testing, Ant build scripts, design skills, UML Not essential but a good leg up, especially testing if the company you are going to uses it. UML is handy if you are given use cases to read


  • Closed Accounts Posts: 27,857 ✭✭✭✭Dave!


    Jayzus college didn't prepare me for sh*t :confused: What kind of retarded course leaves out this stuff if it's industry standard ?! I learned nothing about SQL/databases, servers, or any of that. Learned very basic web design (html, css, javascript).

    Essentially all I learned from college was java and C++

    Ridiculous


  • Moderators, Science, Health & Environment Moderators, Social & Fun Moderators, Society & Culture Moderators Posts: 60,104 Mod ✭✭✭✭Tar.Aldarion


    No IT course or engineering course in nuig seemed to teach as much as all that above!

    did c/++, java and a semester of UML. Did more in my projects but others did not have to.


  • Closed Accounts Posts: 18,056 ✭✭✭✭BostonB


    Dave! wrote: »
    Jayzus college didn't prepare me for sh*t :confused: What kind of retarded course leaves out this stuff if it's industry standard ?! I learned nothing about SQL/databases, servers, or any of that. Learned very basic web design (html, css, javascript).

    Essentially all I learned from college was java and C++

    Ridiculous

    A lot of courses tbh.


  • Subscribers Posts: 4,076 ✭✭✭IRLConor


    Front End : HTML, JSP, JavaScript, Tag libraries, Struts, Ajax
    Back End : SQL, JDBC, Hibernate, EJBs, JMS, XML processing, Web Services
    Databases : Oracle, DB2, SQL Server, Teradata
    Other : Linux, Junit testing, Ant build scripts, design skills, UML

    Stuff I learned in college.
    Stuff I learned while in college but not in the course.
    Stuff I learned before college.
    Stuff I learned/used since college.

    If I saw a college graduate claiming to have studied a large number of the items above in their course my reaction would be either:
    1. They're lying.

      OR

    2. What did the college course leave out to include those topics? e.g. Did they have a solid algorithms and data structures class?


    I'd expect a graduate to:
    • Know how to program. No, seriously. If someone gave you the formula for the Fibonacci sequence would you be able to code it in under 10 mins in a language of your choice without assistance? Yes? Congratulations, you're a better programmer than ~75% of all the people I've interviewed for coding jobs.
    • Not be confused by pointers or recursion.
    • Know the basics of OO software development.
    • Have produced at least one piece of software and be able to talk about the design and implementation of it.
    • Be able to analyse a chunk of code and estimate the efficiency of it. If they don't get big-O notation even on a superficial level they were let down by their education and/or are sub-par.
    • Have produced usable code in at least one of {C, C++, C#, Java} and one of {Perl, Python, PHP, Ruby} and be able to discuss the difference in their coding experiences between using the language in the first set and the language in the second set.

    I get a bit antsy when I see people say things like "College didn't teach me [technology du jour], what were they thinking?" because as far as I see it, if they've done their job right you should find learning that technology easy. Time spent teaching you a specific technology in any depth is time that could which could have been spent covering the things that are hard to learn on your own.


  • Registered Users, Registered Users 2 Posts: 11,986 ✭✭✭✭Giblet


    True when all is said and done, a good programmer shouldn't be fazed learning something new, especially if this is going to be a career. Some exposure to the techs listed above will be an advantage, but there is no reason you can't sit down on the web or with a book and set up some simple projects. It's all free ;)


  • Closed Accounts Posts: 1,326 ✭✭✭waraf


    How is it going for you? I am just browsing this book at the moment, this will take a while, it's huge and I've just learned how to print out hello world. :pac:

    I've just done the first couple of chapters and it's pretty handy so far (but then again I'm only doing the Java Associate course so it's significantly easier than the full programmer course). Gonna try and get through it in about 5/6 weeks if possible and then try the exam. If I pass I'll move straight onto the SCJP course


  • Registered Users, Registered Users 2 Posts: 18,272 ✭✭✭✭Atomic Pineapple



    The technologies we'ld be looking out for are

    Front End : HTML, JSP, JavaScript, Tag libraries, Struts, Ajax
    Back End : SQL, JDBC, Hibernate, EJBs, JMS, XML processing, Web Services
    Databases : Oracle, DB2, SQL Server, Teradata
    Other : Linux, Junit testing, Ant build scripts, design skills, UML

    I done a 4 year honours degree in commercial computing and I would have covered the above in bold.

    We also had solid coverage of algorithims, data structures, OO design, AI, SDLC, Project Management, Testing and I also have various pieces of prototype software that I have done.

    All this and I still managed to totally F up my first interview :rolleyes:


  • Moderators, Science, Health & Environment Moderators, Social & Fun Moderators, Society & Culture Moderators Posts: 60,104 Mod ✭✭✭✭Tar.Aldarion


    Thanks IRLConor, I liked that post. It's good to see when people programming for a while have learned what they know adn what they expect from us.

    I may be confused at the moment if you handed me paper and said bang out the fibonacci sequence there Tar but at least I'd make an an attempt at an array and a for loop or something and bang something out. :s
    Something definitely needing work as i am a bit too dependent on help from the net while programming.
    waraf wrote: »
    I've just done the first couple of chapters and it's pretty handy so far (but then again I'm only doing the Java Associate course so it's significantly easier than the full programmer course). Gonna try and get through it in about 5/6 weeks if possible and then try the exam. If I pass I'll move straight onto the SCJP course
    First chapter in this is 85 pages and I think even the first chapter is something I will spend a lot of time on. Gotta know the basics. :)
    Sure yesterday I hadn't coded in more than a year and was happy to just be able to write something like:


    import java.util.Scanner;
    
    
    public class printmyname {
    
    	
    	public static void main(String[] args) {
    		
    		System.out.println("What is your first and second name?");
    		Scanner name = new Scanner(System.in);
    		String inFirst = name.next();
    		String inSecond = name.next();
    		System.out.println("Welcome " + inFirst + " " + inSecond );
    		
    
    	}
    
    }
    
    :pac:


  • Moderators, Society & Culture Moderators Posts: 9,689 Mod ✭✭✭✭stevenmu


    There are different types of development positions out there, and they will have different types of requirements based on the type of position needed.

    One common type is a developer who is hired to work on a specific product (or set thereof). If the product for e.g. is heavily dependant on J2EE, XML and web services, it wouldn't be unusual for a company to expect applicants to have experience with all of them. Although it also wouldn't be unusual for a company to only expect a graduate applicant to have just the core technology (Java in this e.g.) and to provide some training on the others.

    My current position is for a consultancy, when I got the job I had zero experience of the main technology being used (SharePoint). I did have experience with some related technologies (C#, ASP.Net, SQL Server) that gave me a leg up, but primarily I got the job because I could demonstrate that I could learn and adapt to new/different technologies on the fly. I work on a wide range of projects featuring a lot of different technologies, one project could feature heavily in XML and web services, the next could be based on OLAP cubes, the next mobile devices and web forms and so on, so there would have been very little point in them advertising a specific list of technology requirements.

    I'd completely agree with IRLConor's post, in that I don't think for a graduate it's all that important to have a long checklist of technologies and TLAs. What's much more important is having a good idea how to program, how to analyse a problem and develop a solution for it, and how to indentify what you don't know and pick it up pretty quick. (the only exception to that would be databases, it's pretty essential to be able to build and work with a relational database of some kind)

    There are jobs out there like The Hitcher mentions that will have a list of set requirements, but there's also plenty that will train you in as needed, or expect you to pick them up as you go along.

    Or at least that would all be true if it wasn't for the recession. :pac:


  • Advertisement
  • Subscribers Posts: 4,076 ✭✭✭IRLConor


    Thanks IRLConor, I liked that post. It's good to see when people programming for a while have learned what they know adn what they expect from us.

    You're welcome. I've only been programming full-time professionally for about 5 years now. On and off (and through school & college) I've been coding for both myself and others for about 11 years or so, so I'm hardly an authority on hiring programmers.

    Back when I was contracting I did some interviewing for clients in the US. I found that giving a trivial programming problem to each candidate was a quick way of weeding out the people who were not up to scratch. My usual routine was:
    • Trivial coding problem.
    • Present them with a problem which is equivalent to building a system or subsystem that they were being hired to work on and get them to design it (high-level) from scratch on a whiteboard. Play devil's advocate (gently!) and see how they deal with criticism of their thinking.
    • Get them to talk about a previous project they did (college, work, wherever). Try to judge how much they enjoy coding and how invested they become in projects they love (or how demotivated they get by projects they hate).

    It was rare that someone impressed me on the second two steps after failing the first (even when I did the steps in a different order to try and eliminate bias) and I don't think anyone ever redeemed themselves on the third step.
    I may be confused at the moment if you handed me paper and said bang out the fibonacci sequence there Tar but at least I'd make an an attempt at an array and a for loop or something and bang something out. :s
    Something definitely needing work as i am a bit too dependent on help from the net while programming.

    You'd be very surprised how many people fail at simple tests like that. Sometimes it's interview pressure, sometimes they're rusty (particularly if they haven't been working for a while) but sometimes it's because deep down they can't code.

    Bear in mind also, that when I was asking those kind of questions I didn't really care if they missed a curly or semicolon or something. I was really just watching to see how they handled it. The best people just hammered it out as fast as they could write it. The adequate people thought about it, wrote it out, made a few bugs, spotted most of them and got there in the end. The vast majority just wrote gibberish on the paper that bore no resemblance to an attempt at a solution.

    Some more discussion of the phenomenon is available here: http://www.codinghorror.com/blog/archives/000781.html

    Here are two exercises that I'd recommend for budding programmers looking for a job:
    • Find a chunk of code you have written and ask yourself the following questions:
      • Would I be happy using this as a show piece in an interview?
        • If so, why?
        • If not, why not?
      • Can you find any bugs? (No matter how obscure!)
      • If you were to add a feature, what would it be?
      • If the code didn't run fast enough, how would you go about speeding it up?
    • While you're job hunting, spend at least an hour a day coding, designing or debugging. If you have a pet project, work on that. If you find an open source project that interests you, work on that. If you don't have either of those, look for programming competition questions and grind through a few of those. No matter what, you need to get some practice in. Also, it's a good litmus test. If you don't look forward to that hour a day you're probably going to hate a career as a software developer.

    Oh, and read. Now's your chance to read all the technical books that you won't have time to cover when you're working. If people would find it helpful I can go through my bookshelf later and recommend some good books.


  • Closed Accounts Posts: 18,056 ✭✭✭✭BostonB


    IRLConor wrote: »
    ...If people would find it helpful I can go through my bookshelf later and recommend some good books.

    That would be great, especially if you included why you liked those books.


  • Subscribers Posts: 4,076 ✭✭✭IRLConor


    BostonB wrote: »
    That would be great, especially if you included why you liked those books.

    I'll do that later then.


  • Moderators, Science, Health & Environment Moderators, Social & Fun Moderators, Society & Culture Moderators Posts: 60,104 Mod ✭✭✭✭Tar.Aldarion


    IRLConor wrote: »

    Some more discussion of the phenomenon is available here: http://www.codinghorror.com/blog/archives/000781.html
    Interesting reading: I tried that fizzbuzz thing. and it took me a few minutes to figure out what to do. Moreso remembering the syntax than anything.
    
    public class print {
    	
    	public static void main(String args[]) {
    
    		for (int i=1; i<=100; i++)
    		{
    			if (i % 3 == 0 && i % 5 ==0)
    			  
    			{
    				System.out.println( "fizzbuzz");
    			}
    			  else if (i%3 == 0 ) 
    			  	{
    				  System.out.println( "fizz");
    			  	}
    			  else if (i%5 == 0)
    			  	{
    				  System.out.println( "buzz");
    			  	}
    			  else 
    			  	{
    				  System.out.println(i);
    			  	}
    		  }
    		}
    		
    	}
    
    In an interview people might be scared and freeze up. My problem atm and I suppose with other graduates that are not good programmers yet is getting out a trivial answer like this in a small time and then maybe being asked to write it one or two different types of ways and why is this one efficient as opposed to 'this other method'. Although I do recognise efficiency such as O(n), O(n^2) somewhat from years ago. And anything much more complex than this, forget about it for now. :)
    Here are two exercises that I'd recommend for budding programmers looking for a job:
    • Find a chunk of code you have written and ask yourself the following questions:
      • Would I be happy using this as a show piece in an interview?
        • If so, why?
        • If not, why not?
      • Can you find any bugs? (No matter how obscure!)
      • If you were to add a feature, what would it be?
      • If the code didn't run fast enough, how would you go about speeding it up?
    • While you're job hunting, spend at least an hour a day coding, designing or debugging. If you have a pet project, work on that. If you find an open source project that interests you, work on that. If you don't have either of those, look for programming competition questions and grind through a few of those. No matter what, you need to get some practice in. Also, it's a good litmus test. If you don't look forward to that hour a day you're probably going to hate a career as a software developer.
    Oh, and read. Now's your chance to read all the technical books that you won't have time to cover when you're working. If people would find it helpful I can go through my bookshelf later and recommend some good books.
    I would like to see what kind of titles you have on the shelf too.
    That is good advice above, I don't know if I could find bugs apart from no ";" etc and as for show pieces of code, will take time to get that yet. Certainly when I was writing a simple loop program earlier I could not tell why my gibberish output was what it was when I had coded it wrong.
    Programming noob alert. Practice is the best suggestion above, most people's problems with programming is practice I think.


  • Registered Users Posts: 455 ✭✭onedmc


    Dave! wrote: »
    I learned nothing about SQL/databases,

    /QUOTE]

    I find that hard to believe you did no SQL I finished computer science in UCD 20 years ago and did plenty of SQL then.

    onedmc


  • Registered Users, Registered Users 2 Posts: 5,618 ✭✭✭Civilian_Target


    On an aside: IRLConor What is your thinking on people getting demotivated by jobs they hate? I usually see this as an upshot, if they have a record that indicates they finish projects.

    Back on topic
    My experience is that companies don't hire fresh grads straight out of college except in big boom times when prices are artifically high.

    Most people, me included, after college have to do some combination of:

    - Masters or other individual project where you deliver a piece of real software that works, performs some useful function, and uses existing libraries and technologies.
    - Open source contribution, sufficiently large that you either made a substantial project branch, or that we can see how many commits you made by googling your name.
    - Working a couple of badly paid jobs at the start to get experience in the technologies you need to get a better job.


  • Registered Users, Registered Users 2 Posts: 1,821 ✭✭✭Skud


    great thread! Open source or low paid/internship seems one of the ways to go atm. Also suggest looking at design patterns and OO concepts for interviews. They can be a huge emphasis on whether a candidate understand what is going on and how a candidate solves a problem.

    I'm on the lookout for a job after doing a masters but from my interviews i've been able to communicate what level you I am at by the detail I mentioned around projects I have done and questions/challenges/experiences I shared.

    Passion and enthusiasm goes a long way too. Everyone knows you're not at industry software level out of college so the material may not be as important sometimes


  • Registered Users, Registered Users 2 Posts: 981 ✭✭✭fasty


    IRLConor wrote: »
    I get a bit antsy when I see people say things like "College didn't teach me [technology du jour], what were they thinking?" because as far as I see it, if they've done their job right you should find learning that technology easy. Time spent teaching you a specific technology in any depth is time that could which could have been spent covering the things that are hard to learn on your own.

    This is the most important paragraph in the whole thread. You should come away from college knowing how to figure things out, knowing algorithms and data structures.

    College didn't teach me how do develop Win32 or .Net applications. We did Java. I had to learn C and C++ myself for a few projects. We only did a few weeks of SQL, something I deal with daily now. But it did give me problems to solve, pointers on how to solve them, help if I was stuck and a deadline. While the projects then were trivial it's pretty much the same as how things work for me as a "real" developer.


  • Subscribers Posts: 4,076 ✭✭✭IRLConor


    As promised, some picks from my bookshelf (in no particular order):
    • The Pragmatic Programmer - It's pretty much a collection of good advice to programmers who are trying to improve themselves professionally. Most of the advice is stuff you'll learn sooner or later but it's worth seeing it written down and in an easily readable form.
    • Programming Pearls - A collection of small, but tricky problems and really nice worked solutions for them. I find reading it makes me want to open an editor and start cranking out the code. :)
    • Design Patterns (a.k.a. "the Gang of Four book") - A lot of object-oriented problems seem to reoccur over and over again so it's worth being able to spot those and know some high-level solutions for them. You get more out of this book if you read it, work for a year and come back and read it again. On reading it the 2nd and subsequent times, I've found myself saying "Ah, that's what I was doing when I implemented X". It's also useful as a Rosetta Stone for communicating with senior developers who are full of themselves. :pac:
    • The Mythical Man Month - This is a pretty old collection of essays, but if you look past the antiquated bits you'll find a lot of wisdom. It's more a book on project management than software development but it's well worth a read. File under "learn from the mistakes of others".
    • Joel on Software - I don't actually own a copy of this, I borrowed it from a friend. All the essays that make up the book are available on http://www.joelonsoftware.com/ so there's no need to buy the book unless you feel like supporting the author. It's a mixed bag of stuff but it's the collection of thoughts of a successful programmer so it's worth picking through to find the stuff which will help you improve.

    The following are also useful references to have to dip in and out of as needed:
    • Compilers: Principles, Techniques and Tools (a.k.a. "The Dragon Book") - You will probably never be involved in writing a true compiler but sometimes implementing a domain-specific language is the best solution to a problem. Even if you never do that, compiler techniques include a good few string processing algorithms that are worth knowing.
    • The Art of Computer Programming (a.k.a. "Knuth") - Acres of dense, almost impenetrable algorithms on the most basic stuff ever. Useful to have, but expensive to acquire. "There's a solution in Knuth" is true for many, many programming problems.
    • Mastering Regular Expressions - Learn regular expressions. They're a great tool for making string processing easier. This book is a fantastic resource even well after you've learned how to construct complex regular expressions. I don't have a copy at the moment (it was part of my company library) and I'm strongly considering buying one.
    On an aside: IRLConor What is your thinking on people getting demotivated by jobs they hate? I usually see this as an upshot, if they have a record that indicates they finish projects.

    I don't know quite what you're getting at but I'll have a stab. :)

    In my experience there are three "usual suspects" which cause a programmer to be demotivated:
    • The codebase is rubbish quality and getting anything done is a mammoth task.
    • The co-workers are incompetent or unpleasant.
    • The management doesn't know how to handle programmers.

    If you find yourself demotivated either fix the problem or work hard at an exit strategy. Don't let it fester, it probably won't improve on its own.
    Back on topic
    My experience is that companies don't hire fresh grads straight out of college except in big boom times when prices are artifically high.

    Most people, me included, after college have to do some combination of:

    - Masters or other individual project where you deliver a piece of real software that works, performs some useful function, and uses existing libraries and technologies.
    - Open source contribution, sufficiently large that you either made a substantial project branch, or that we can see how many commits you made by googling your name.
    - Working a couple of badly paid jobs at the start to get experience in the technologies you need to get a better job.

    I was lucky enough to have option 4: start a company with a few friends and go contracting. Don't discount independent contracting as an option for picking up money and experience. It's not always easy being your own boss, but it's highly rewarding.


  • Advertisement
  • Closed Accounts Posts: 18,056 ✭✭✭✭BostonB


    You'll get more experience in 2 or 3 yrs contracting than you will 10yrs in a regular job. IMO.


  • Registered Users, Registered Users 2 Posts: 962 ✭✭✭chavezychavez


    To my mind, the basic essentials around code programming is knowing what you want to do and planning how to do it.

    If you're proficient in 1 computer language, then after that, its a case of learning various code structures and semantics.

    Also, considering that the wheel has pretty much been invented for the majority of the things you'll need to do already, all you're going to have to do is Google for a snippet of code that will help you out.

    I know I (and I reckon a huge number of current programmers) wouldn't be able to function with looking up Google for different things and I certainly could thinks about going back to reference books again..:eek:.

    On the application side of things, databases, databases and databases.
    Download the MS SQL Server Express editions and get your SQL (Table Creation/Alteration, Views, Procedures and Triggers) up to standard. Or go down the Oracle route if you prefer. This will also stand to you for ASP.NET if you want to get involved there

    Going by recruitment websites (last time I looked), there also seemed to be an demand for OLAP programmers - cube design and building, reporting services and Integration Services.

    These are all things that you can do in your own time and aren't that mind numbingly boring.

    Good luck with what you decide. Just remember, try to get into the field that you want to work in, otherwise you could be in a "bucket" of a certain area so to speak for a long time.


  • Registered Users, Registered Users 2 Posts: 5,618 ✭✭✭Civilian_Target


    @IRLConor: Nah, what I was really getting at is, when hiring programmers, do you consider the fact they get demotivated by your usual supects to be a plus or a minus?

    Interestingly, my book library looks quite different. I would recommend:

    The Little Schemer - How to program by example. Reading this will change they way you program. (And if you ever wanted to program with examples involving peanutbutter and jelly sandwiches, now is your chance)
    Domain Driven Design: Why programmers do what they do, and when to do what?
    Pro Java: Very relevant in the context of this thread, a good book for Java programmers to prepare you for real life problems that you will see when you hit your first jobs. It was my bible for the first 6 months on the job, although it's a bit too UI focussed for my liking.


  • Moderators, Science, Health & Environment Moderators, Social & Fun Moderators, Society & Culture Moderators Posts: 60,104 Mod ✭✭✭✭Tar.Aldarion


    I want all these books but no way i could buy them! Felt bad enough just getting the SCJP book.
    Suppose that and maybe one more book will do for now. The net is great and all but I like books more.


  • Subscribers Posts: 4,076 ✭✭✭IRLConor


    @IRLConor: Nah, what I was really getting at is, when hiring programmers, do you consider the fact they get demotivated by your usual supects to be a plus or a minus?

    I don't see it as a plus or a minus, just a fact of life. I don't think there's anyone out there, programmer or not, who wouldn't be demotivated by a crap boss or incompetent co-workers. Maybe programmers are a little more sensitive to stuff like that, I dunno.

    I wouldn't judge a programmer too harshly for being demotivated but if they were a co-worker and just threw up their hands and sat down and refused to try to work around their demotivation I'd be irritated at the very least. I would certainly respect a programmer who was demotivated by the work but figured out a way to work through it.

    EDIT: I must have a proper look through your books. Domain-driven Design looks particularly interesting.


  • Subscribers Posts: 4,076 ✭✭✭IRLConor


    I want all these books but no way i could buy them! Felt bad enough just getting the SCJP book.
    Suppose that and maybe one more book will do for now. The net is great and all but I like books more.

    Books are expensive. :( I built mine up over time and more than a few of them came home in a suitcase from cheaper countries.

    I'm willing to consider lending some of mine. If anyone's interested, drop me a PM and we can negotiate. :)


  • Advertisement
  • Moderators, Science, Health & Environment Moderators, Social & Fun Moderators, Society & Culture Moderators Posts: 60,104 Mod ✭✭✭✭Tar.Aldarion


    Thay are reallly expensive in some cases. Law books were bad too in college I recall.
    I love the sound of your programming pearls one, that's why I want to do programming. I love problems and then eventually getting it right and looking at something I wrote do something. Unfortunately I don't get to that last bit! :)


  • Registered Users Posts: 77 ✭✭slogue


    Def learn some sort of SQL (Oracle, SQL Server or even MySQL) and get a certification if possible

    http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=155&p_org_id=53

    The oracle exams are relatively cheap

    On the learning SQL at college I agree that not enough practical SQL is done, we spent hours doing the theory (which is needed) but needed more practical to back it up


  • Registered Users, Registered Users 2 Posts: 515 ✭✭✭NeverSayDie


    Just to add to the list of book recommendations;

    Code Complete is another good one. Not platform-specific, it's more of a general guide to software development practices;
    http://www.amazon.co.uk/Code-Complete-Practical-Handbook-Construction/dp/0735619670
    If you're interested towards the engineering/project management end of the business, The Mythical Man Month seems to be considered a classic, though I haven't gotten round to reading it myself yet;
    http://www.amazon.co.uk/Mythical-Month-Essays-Software-Engineering/dp/0201835959

    Along with the GangOfFour design patterns text mentioned earlier (a great book), this one may be a more approachable intro to the topic, very popular book;
    http://www.amazon.co.uk/Head-First-Design-Patterns-Freeman/dp/0596007124

    Also on design pattern lines, in spite of the dubious title, this book is a pretty good discussion of the use of various patterns specifically for large scale software systems (kind of an enterprise-specific version of the GoF book);
    http://www.amazon.co.uk/Enterprise-Application-Architecture-Addison-Wesley-signature/dp/0321127420
    Just started into this one, which also discusses patterns applied to large software setups, seems pretty good so far. Like a hands-on version of the book above. It's aimed at .NET folks, but it's really an architecture book, so probably of potential interest to anyone working with enterprise software design;
    http://www.amazon.co.uk/Microsoft-NET-Architecting-Applications-PRO-Developer/dp/073562609X

    Plenty of good advice given out in this thread already. Just to add; in commercial development, you tend to spend the majority of your time working with other peoples' code, not writing your own systems from scratch. You're invariably extending, updating, patching, bug-fixing or otherwise modifying an existing codebase (especially at the junior level, that's all you're likely to be doing). With that in mind, being used to reading through large codebases is a good skill to have. Maybe grab the codebase for a smaller open source project of some sort, and see how you manage in terms of figuring out bits and pieces of it.


  • Registered Users, Registered Users 2 Posts: 2,151 ✭✭✭dazberry


    I tend to horde books that should really see a new home, I've nearly 20 years worth, and I don't know why - I can't see myself using the DESQView API, or writing my own 32bit OS :eek:.

    I discovered a seller on ebay in the states that sells "older" versions of books, for instance Pro WPF in .Net 3.0. Some of these cost US$4 to buy and US$10 to ship, and books can be slow to arrive - but I've got some great deals there. A girl in work (yes we have a girl programmer) signed up to an online book site which looks really good. We were going to try and get work to pay for a corporate subscription but they're a right bunch of bankers and it would have been like getting blood from a stone.

    and just to add to the every growing list :)
    Agile Software Development 2nd Edition - Alistair Cockburn

    Rapid Development - Steve McConnell


    D.


  • Closed Accounts Posts: 22,479 ✭✭✭✭philologos


    Thanks for this thread! I'm personally wondering about this as well. It seems that you really do have to do a lot of work outside what is generally taught in the Computer Science degrees.


  • Advertisement
  • Registered Users, Registered Users 2 Posts: 11,986 ✭✭✭✭Giblet


    You can incorporate outside learning into projects, especially final year. I did some XNA programming in 4th year, MVC + Hibernate stuff using Spring in 3rd year. I still use a lot of the stuff I learned doing those projects to this day.


  • Closed Accounts Posts: 4,564 ✭✭✭Naikon


    Jakkass wrote: »
    Thanks for this thread! I'm personally wondering about this as well. It seems that you really do have to do a lot of work outside what is generally taught in the Computer Science degrees.

    It really helps, college programming is badly taught in most cases.
    Try get into the swing of formulating simple algorithms to
    simple problems.

    Don't worry about the implementation of syntax between
    day C vs Java vs whatever, just wory about the meaning
    or semantics.

    I.e work out how to square a number on paper, than code the
    algorithm in C, and then in perl/ruby if you want:)

    Do not worry about the specifics of each langauge, develop
    a proper problem solving strategy first.

    People seem to be freaking out about not knowing xyz
    here.

    No employer worth their salt expects grads/newbies to know
    a wide variety of tech. I google alot of stuff I don't know.

    Learn how to RTFM, and it will stand to you in most cases
    where you need to get up to speed with something.

    It's tough at first, but keep with it and you will get better.
    Regular practice is essential, you will stagnate if you don't work.


  • Registered Users, Registered Users 2 Posts: 5,618 ✭✭✭Civilian_Target


    Domain Driven Design is very good.
    Domain Driven Design Quickly is a summarised version of the book that is free (so long as you give them your email address) and gives you a flavour, but it's still most of 100 pages, so it does at least tackle the issues at a reasonable depth.

    Tar The SCJP book is not a good way to learn about programming. If you can still return it do. It's there to get you past an exam. Learn with a different book, and then get it from a library 3 weeks before the exam to learn the inside bits. Something like Pro Java which I already recommended will teach you the useful 70% of stuff on the exam, with good practical exercises and more useful examples.


  • Moderators, Science, Health & Environment Moderators, Social & Fun Moderators, Society & Culture Moderators Posts: 60,104 Mod ✭✭✭✭Tar.Aldarion


    I agree with you if I was just trying to get a certificate, but I am going through it painfully slowly googling everything and working on complete tangents off of the book, I'm only on like page 20 now. I'm trying to learn stuff rather than pass the exam, the opposite of programming in college. I'll look out for your book too!


  • Closed Accounts Posts: 28 joanbrent


    Achievement in the IT field depends on a very hands-on skill set… so you should learn a well-paying skill in high-demand. Make sure it is a skill you love, so you will enjoy working with it. Find a good IT training service… which has a proven plans for getting people to the top of their career.


  • Registered Users, Registered Users 2 Posts: 40,038 ✭✭✭✭Sparks


    Thay are reallly expensive in some cases.
    File it under CPD and check the used section in amazon, special offers, etc, etc.

    And I'd add to the list (which is quite excellent already):
    • Knuth. Yes, mentioned already. Yes, it is that good.
    • A Pattern Language. The original that the gang of four book is based on. Not computer specific, but good design reading nonetheless.
    • Unit Test Frameworks. Possibly not the best book on the subject, I haven't read them all, but forget that and get any book on the subject. If there's one thing I'd add to the current undergrad curriculum as a basic, that's probably it. Well. After remedial English, perhaps. :D
    • Tufte. If you do any sort of presentation of information, either for program output or for an actual stand-up-and-talk presentation to other people (and you will end up doing both, regularly), you really should read Tufte at least once. There are four books which nearly count as art, they're so well made, and there's a website. The man invents new kinds of graphs. It's rather hard to top that as a recommendation (I know it doesn't sound like much, but think about it for a minute).

    There are others, like Refactoring that are on my work wish list (I like to keep two wish lists on amazon.com, one for fun reading and one for work/cpd stuff) but I've not read them yet so I can just pass on the recommendations of others. Which isn't as much use as you'd think.

    Also, follow blog posts. Joel's okay, but I find he gets a bit under my fingernails and I disagree with a lot of what he says (the whole cult-of-the-rockstar-programmer gets tiring after about four minutes), so I track others (Google Reader, or any other RSS reader for that matter, is your friend, especially if you have something like an iPhone or netbook and take the train every day to work). Coding Horror, the Daily WTF, Beautiful Code, ReadWriteWeb, various Planet feeds (Planet PHP, Planet PHP.ie, Planet Python, Planet ILUG, Planet MySQL, Planet Postgresql, whatever is relevant to the area you're going into), DZone, and (good grief) Zed Shaw, all of these I've found decent at one stage or another, your reading list tends to evolve and change over time as you move from job to job or even project to project (and as the authors do the same thing). Think of it as a cheap way to go to a programmer's meet, but with everyone thinking about what they say, being able to enter and leave the conversation at will without missing anything, and not having to sit in a dark pub with flat guinness while wearing socks and sandals.

    :D

    (That last part is in jest, for the humour-deprived. I've never gone to one of these meetups, but that's because every time I tried, a client's machine exploded or something else caught fire. I think they're actually a pretty brilliant idea for both CPD and networking - IT in Ireland seems to be a pretty incestuous little industry from what I've seen of it).

    Also, read code. Find a good open source project, checkout its repository, and browse through the code. (And when you're ready, if it has a peer review thing going on, fix stuff or add stuff and submit patches - both the writing and the subsequent code review are fairly useful things to do, not to mention a nice little ego boost when your patch is submitted. It can make a whole monday afternoon that little bit brighter).


  • Registered Users, Registered Users 2 Posts: 40,038 ✭✭✭✭Sparks


    joanbrent wrote: »
    Achievement in the IT field depends on a very hands-on skill set… so you should learn a well-paying skill in high-demand. Make sure it is a skill you love, so you will enjoy working with it. Find a good IT training service… which has a proven plans for getting people to the top of their career.
    After about as long as IRLConor programming in industry and another six or seven years programming in a research lab before that, I've never once heard of an IT training service like that, or of anyone who used one.

    I've worked for companies teaching training courses, yes, but those companies didn't do the kind of personal CPD management you're talking about, and frankly, I'm not sure I'd ever hire an engineer who trusted their CPD to an anonymous company like that, CPD is something you're meant to take a measure of personal responsibility for. (IEI CPD programmes and the like are a different thing, they're based on 1-to-1 mentoring from accredited mentors rather than anonymous CPD management companies; but mostly the IEI seem restricted to Civil Engineering in Ireland, and the IEEE version for computer programming doesn't seem to work the same way).


  • Closed Accounts Posts: 9,183 ✭✭✭dvpower


    Some SQL and some basic database design knowledge would for me be a must.

    On the lists of skills mentioned on some other posts, I wouldn't be too concerned. I find that if a graduate presents him/herself with a large list of skills, I'm immediaty suspicious (and it usually turns out that they only know of them). So, my advise would be to gain some familiarity with some of the languages, tools, techniques and patterns mentioned above, but don't try and sell them as skills (rather as an illustration that finishing your degree doesn't mark the end of your learning).

    But if you've been studying an OO language like Java for a number of years, make sure you can adequately answer some stock questions like 'What's Inheritance?' or 'Explain Polymorphism?'

    Even for for experienced software engineers, a lot of skills you learn along the way fall out of your head after a while of non use. (Maybe that's just me:D).

    Someone mentioned a book called Code Complete by Steve McConnell. This is an excellent book and well worth getting. Its not about particular technologies, its about a common sense approach to software development. My copy is about 10 years old and there's not much in it that's out of date.


  • Registered Users Posts: 2,379 ✭✭✭toiletduck


    Anyone recommend any good programming websites along the lines of Joels or Coding horror?


  • Closed Accounts Posts: 309 ✭✭Dave D


    toiletduck wrote: »
    Anyone recommend any good programming websites along the lines of Joels or Coding horror?

    codesqueeze Is a pretty good blog, Found the 25 chuck norris programmer jokes hilarious. :pac:


  • Advertisement
Advertisement