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

What skills to improve to get into software development?

  • 26-06-2009 3: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 Posts: 2,790 ✭✭✭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 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,016 ✭✭✭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,076 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,076 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 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 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 Posts: 11,977 ✭✭✭✭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,076 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,075 ✭✭✭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 Posts: 11,977 ✭✭✭✭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 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,076 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,075 ✭✭✭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,075 ✭✭✭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,076 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: 454 ✭✭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 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 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 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,075 ✭✭✭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.


Advertisement