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 would you learn to be prepared for the future?

Options
  • 03-05-2010 12:39am
    #1
    Registered Users Posts: 7,639 ✭✭✭


    hey so im in 3rd year in college doing a course related to digital media but with very little programming / web development in it which is were my interest is

    i have to pick something to do for my thesis for next year and i have an idea but it would invole me learning probably 3 new languages over the summer and i dont know how that would work given my very limited background with it(had 2 modules of java and one with html and a bit of database stuff)

    but the advantage would be i would be learning something i would really like to be able to use when im finished and that the course isnt going to teach me and they are relatively new technologies (i think) so coming out of college with a great thesis using these i think would be good

    BUT my question is if you had a choice right now to learn something that you think would set you up to be in a good place as far as the latest thing is for the next 5 years what would it be?

    ill say what im planning a little later and get you to say if im mad or not


Comments

  • Closed Accounts Posts: 20,759 ✭✭✭✭dlofnep


    I would reccommend that you look into the following areas.

    Mobile Development - Mobile development is the future. Smart-phones are going to have serious processing power within the next few years, and alot of development is going to take place around them. Expect alot of jobs in the mobile dev sector. Your two options here really are Android or iPhone development. It's up to you which you want to choose. Android has less bureaucracy.

    Web Development - MVC. Model-View-Control web development seems to be the big thing right now. I'm currently getting my heads around developing my own framework within PHP, although I have some prior MVC experience with Java. The idea is that you seperate out the input, views and logic/calculations.

    There are a world of possibilities out there for you. Ruby is getting popular. PHP is still as strong as ever. I'd give PHP a look at first and wrap your head around db-driven websites - prior to expanding out into more complex areas.

    Beyond that, I'd just expand your Java a little. Keep practicing with it. Work on applications off your own back at home to improve your Java, as college never really fully prepares you. You might look into GUI development, socket programming, or managing multimedia content (audio, video, etc..)

    Best of luck with it.


  • Registered Users Posts: 2,119 ✭✭✭p


    I wouldn't try learning 3 different languages, just focusing on core one. Once you understand the principles of programming, then changing can be an easier option.

    What type of stuff interests you about programming?

    If you're from a digital media background, learning HTML & CSS (which are not programming languages) solidly, and then working on your PHP would put you in a good position to get a junior web development job. You could then get advice from the seniour members of the team and work to get PHP programming qualifications etc...

    Another option, if you're interested in programming for design, would be to learning Actionscript/Flash. It's quite easy to get started with, but also very easy to grow into doing much more complex projects too.

    If you're interested in non-web stuff, perhaps learning Objective-C for iPhone development or Java for Android might be a better option. This could be good if you're interested in more traditional programming, and Android would build on your current Java experience.

    Whatever you do, I'd recommend trying to find someone who has some experience in the language and traditional programming techniques and ask them if they'll mentor you. That will help focus your learning as you do your thesis, as you can meet up with them from time to time and get their advice.

    Good luck!


  • Registered Users Posts: 7,639 ✭✭✭PeakOutput


    thanks lads thats pretty much what i was thinking

    my thesis idea is a website that can communicate with an iphone and a android app

    so it would be java for the android o-c for the iphone

    i know some actionscript and flash already but while the project we did in it was quite complicated i dont know ifi could build anything else with it

    as far as the website goes my idea was to do it with html5 as that seems to be whats probably going to take over in the next 5 years, i would need to get a proper grip on php and css to go along with this aswell

    my potential thesis adviser would be very knowledgable in all of these areas (accept html5 i guess) but i dont know how much of a mentor he would really be


  • Registered Users Posts: 1,825 ✭✭✭Gambler


    [joke]Indian, Malaysian, maybe some Chinese?[/joke] - Sorry, couldn't resist but it's a tough time to be a software developer competing in the findafreelancer Market.

    On a serious note, I would agree with focusing on core principles. Once you have those and a language learnt inside out the you can understand other programming codes easily enough and will be able to pick them up fairly handily


  • Registered Users Posts: 7,639 ✭✭✭PeakOutput


    thanks gambler

    maybe i should add that i dont really intend on working for someone else as a developer ever

    i basically have ambitions about running my owns business / business's but all my ideas or the large majority of them are related to the internet so instead of outsourcing the development(which i am right now) and getting something that i know from my limited experience is not very hard to do i want to be able to have an idea and then sit down for a few weeks and create it myself and then ifnecessary go to someone better and pay them but know enough to know what im asking for and to know what that work is worth


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


    Actually, recommending other languages isn't really a joke; but to be honest, based on what I've seen in the last couple of years, good english is rare enough already.

    In terms of learning ruby or similar languages for future-proofing, well, the current top of the language pile in terms of usage in the wild is C, with Java a close second, and everything else a reasonably distant third. Ruby's not even on the graph. That's not to say don't learn it; you'd learn a lot doing so and it's a very pretty language (and it's a good idea to learn at least two languages with very different paradigms, like C and Lisp). My point was that future-proofing isn't about learning the latest fad; it's about knowing the basics soundly enough to be able to learn them in a new language fast, and it's about never stopping learning.

    There's also the mechanics of development; bug reporting tools, version control software, build control systems, unit testing frameworks and so forth. Learning (and using) those is a pretty safe bet as they may not be fancy, but they will make you a better programmer and frankly, a better programmer is a better hire regardless of whether or not they know language X.


  • Hosted Moderators Posts: 7,486 ✭✭✭Red Alert


    C and C++ are brilliant for teaching the fundamentals, and if you're up to speed on either of them you're well ready to use other languages as necessary.


  • Closed Accounts Posts: 5,284 ✭✭✭pwd


    asynchronous web services

    w3c say html5, MS say Silverlight, Adobe say Flash/Flex etc

    html5 isn't ready yet. I would imagine it would be limited and painful to use at this time. Good idea to get experience very early if it does take off though.

    edit: I think asynchorous web services are a good thing for you to learn, based on what you say; (not sure if I made that clear above).
    Different development frameworks favour particular types of web services. Google made protocol buffers available, which is a serialization format which is supposed to be extremely fast, and is what Google use themselves; so you should use these if you are developing android applications. The skills involved in developing software that uses asynchronous web services will carry across the different frameworks I think in any case.


  • Registered Users Posts: 2,119 ✭✭✭p


    Sparks wrote: »
    In terms of learning ruby or similar languages for future-proofing, well, the current top of the language pile in terms of usage in the wild is C, with Java a close second, and everything else a reasonably distant third. Ruby's not even on the graph.
    All this is checking is Google results, I wouldn't make any serious life decisions based on this.


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


    p wrote: »
    All this is checking is Google results, I wouldn't make any serious life decisions based on this.
    I think if you check a bit deeper, you'll find it tracks what's happening in industry reasonably well, though it does omit a large amount of legacy codebase.

    Simple fact is, despite the fun you can have with the newer, more fashionable languages, the vast majority of the work out there isn't done with them. Industry always lags behind and that isn't going to change.


  • Advertisement
  • Closed Accounts Posts: 5,284 ✭✭✭pwd


    Sparks wrote: »
    I think if you check a bit deeper, you'll find it tracks what's happening in industry reasonably well, though it does omit a large amount of legacy codebase.

    Simple fact is, despite the fun you can have with the newer, more fashionable languages, the vast majority of the work out there isn't done with them. Industry always lags behind and that isn't going to change.
    Supply and demand is the issue though.

    Languages and frameworks that are firmly established for a long time have plenty of developers with lots of experience. Emerging languages do not. The best thing you could do would be to get experience early on in a technology that is destined to become firmly established for a long time, although it takes a bit of a gamble to decide what you think will succeed, and you there won't be a developed community to support you.

    A C# programmer will find it easier to get a job and easier to command higher remuneration than a Java programmer for this reason. Personally, I started using Silverlight when version 2 was in beta. Since then, I've been offered interviews for good jobs, without any solicitation on my part. I've had a person from a big company try to persuade me to do an interview even after I said I wasn't interested, just because they couldn't make up the numbers. There's not such a lack of Silverlight developers about now, but it's still a major advantage to have started using it before most.


  • Registered Users Posts: 7,639 ✭✭✭PeakOutput


    thanks lads

    iv also come to the conclusion i need to figure out databases for what i want to do aswell, i might be biting off more than i can chew here but the result is something im very interested in so hopefully that will be enough to have me put in the work

    the html5 part would be fairly basic(although the sketchpad thing they have looks interesting) as the website part of my project would be pretty basic, i imagine the hard part is having this site accesible by the phone apps

    how similar is java and c? its a variation on c for the iphone called c operative or something like that i but imagine the overlap with regular c is pretty big?


  • Closed Accounts Posts: 5,284 ✭✭✭pwd


    I don't remember how similar Java and C are. I think Objective C is probably more like C++ than C, since it is object-oriented. It is probably reasonably similar.

    The use of asynchronous web services might be a greater difference to other programming than the use of a different o-o language.

    I take your meaning as wanting to have a clientside application on a phone which communicates with the server, rather than just having the website accessible through the phone.

    That means that you will need to use web services or a socket connection. You should use web services unless you need a live view of the server really. Web services are easier to set up and provide an api for your software. Sockets are faster, and allow you to push data to the client from the server (with web services you need to poll the server from the client for the equivalent effect), but there may be issues with connecting through firewalls (true with Silverlight anyway).

    Configuring web services can be a bit fiddly. This can be especially true on a shared hosting plan, although it depends greatly on the support provided by the host. [I've found Blacknight excellent in this regard] - You probably have direct access to the server for a college project though.

    With the web services themselves, if you are usig them to connect with a database, you'll probably encounter object-relational impedance mismatch. This basically means that the structure of the data in object-oriented software is not compatible with the structure of data in a relational database. If you use a MS framework, LINQ addresses this pretty well. Otherwise, it's fiddly rather than especially difficult to deal with.

    Applications using asynchronous web service calls are structurally different to typical object-oriented software. Web service calls are function-oriented in nature, so they interfere with object-oriented design. You also will be dealing with multithreaded development, which can take a little getting used to, and testing and debugging is probably going to be a bit more complex.


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


    pwd wrote: »
    I don't remember how similar Java and C are.
    Not much. They have similar syntax, but past that superficial resemblence (which is purely marketing rather than some sort of intrinsic design), they're very different. One's basicly readable assembly language with compilers on several million platforms; the other's compiled to an intermediate language and that's then interpreted (though some implementations of that interpreter will do just-in-time compilations and other optimising tricks). One is object-oriented, one isn't.
    I think Objective C is probably more like C++ than C, since it is object-oriented. It is probably reasonably similar.
    Er, no. Basicly, back in the day when OOP was just getting started, there were two schools of design seperated by whether to be early or late binding, the latter being more like ALGOL, the latter like Smalltalk. C++ was the main language developed to implement early binding OOP, ObjC was the main one used for late-binding (at least, it was the main one developed from C). C++ added a lot more to the C lexicon to add in objects; ObjC only added one or two operators (but it had a runtime as well, which C++ didn't and that was a bit of a performance hit at the time). ObjC was mainly successful on the NeXT boxes and vanished for a while after that until Apple made it prevalent again; C++ ran on everything so it was more commercially successful (unfortunately, it runs slightly differently on everything, and also on every compiler, so frankly, C++ is a bit of a disaster and why it ever sees the inside of a basic CS course I'll never understand because it's like teaching juggling 101 using knives).

    Basicly, neither objC nor C++ are like C in anything past syntax; thinking they are leads to subtle and annoying bugs that you chase down at 2 in the morning. And it's rather a general point that - C was prevelant all over the place in the 80s; any new language, to be successful in industry, needs to reduce the effort it takes to learn it (because most industrial programmers never ever even open one book to do CPD, let alone spend a few weeks learning a whole new programming paradigm) -- so every new language for a long while tended to model its syntax on C (C++, ObjC, Java, Python, and a host of others). Non-C syntax languages are fairly uncommon as a result (ever seen a language with the same syntax as COBOL or Pascal or MUMPS?).

    With the web services themselves, if you are usig them to connect with a database, you'll probably encounter object-relational impedance mismatch. This basically means that the structure of the data in object-oriented software is not compatible with the structure of data in a relational database. If you use a MS framework, LINQ addresses this pretty well. Otherwise, it's fiddly rather than especially difficult to deal with.
    Or you can use any one of the hundreds of ORM (Object Relational Mapping) libraries out there (if ORM isn't the point of the project, why reinvent the wheel with a crummier wheel?).


  • Registered Users Posts: 7,639 ✭✭✭PeakOutput


    Sparks wrote: »
    Or you can use any one of the hundreds of ORM (Object Relational Mapping) libraries out there (if ORM isn't the point of the project, why reinvent the wheel with a crummier wheel?).

    can you explain orm a bit more?

    i want to stress how little programming i have behind me

    the point of the project is to design an easy to use user centered mobile app that provides info and media to the user. the programming is going to be pretty important :p but i dont expect to turn into a fully qualified developer after it


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


    This is the future of development/programming:

    Click

















    Sorry Couldn't resist. :D
    Sparks wrote: »
    C++ is a bit of a disaster and why it ever sees the inside of a basic CS course I'll never understand because it's like teaching juggling 101 using knives
    QOTD!


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


    PeakOutput wrote: »
    can you explain orm a bit more?
    It's pretty simple in concept - the library maps an object to a row in a database table (which the library usually creates and manages). There's two main types; storage-only (which is like serialisation to a database rather than to a file); and active (ActiveRecord is probably the most fashionable example). Beyond that, well, it isn't quite so simple, depending on how deeply you get into it. Using ActiveRecord (or something similar) isn't that hard though, you just forget that there's a database involved at all and get on with it. But before you decide you have to use one, it's a good idea to consider if you can get away without it. Do you really need a database back-end?


Advertisement