Does the development stack matter?



  • @ammoQ said:

    Just install Linux and get your hands dirty. That doesn't mean you have to start working on a large codebase like Firefox or OpenOffice.org. Just try to make a nice little webapp using Rails, Java or PHP and MySQL or PostgreSQL. Try to get the whole thing running. Once you are there - and this can be as little as a CD collection management webapp - you will have learned a lot. Your experience will surely help you to leverage that skills to bigger apps.

    I'd second that, getting into things like MySQL and PHP this way are a very good way to become familier with the technologies involved. It's also worth (if you really feel like getting your hands dirty) doing this from source too, eg download the source tarball and do the whole './configure && make && make install' thing. Doing this a few times can really give you a feel for the underlying system, especially when you've solved a few 'why the flip doesn't this compile... oh I need /that/ library built first' type situations it gives you a lot more confidence. Even things like having a different system can lead to some small forrays into the code. EG, I run NetBSD as my *nix-a-like of choice, and learnt PHP and MySQL (and apache) like that, and sometimes something won't build for something as trivial as a random #define in a system file somewhere (EG 'MAXINT' vs 'MAX_INT' or somesuch.) tracking down those kind of issues can be quite enlightening.

    Another skill I would recommend learning (and this may sound frivalous, but I'm quite serious) is using documentation, you can get a lot of stuff done by just knowing how to find the information you need, I work with people who would get a lot more done if they actually considered spending five minutes reading the API docs for the middleware stuff we use. 

    On *nix, 'man' is your friend. (and if that makes no sense 'man man' is your friend too. ;p )

     @ammoQ said:

    <snip>.. On the other hand, if I need people for a J2EE project, I don't have to hire ASP.net experts and retrain them. I can hire J2EE-experienced people in the first place. Especially in the Java world, I just cannot wait 6 Months for them to get used to most-hyped-framework-of-the-week, because in 6 months, that skill will have become obsolete. I will need the-new-hyped-framework people then. Does anybody use Spring anymore?

     

    But sometimes that can be an advantage, if you understand the basics of OO, surely C# and Java are syntactically very similar (I've not used C# so I may be wrong here.), so if you have an understanding of /coding/ and the various design patterns the framework of the week try to implelent (I'm thinking MVC here.) then you shouldn't find it that hard to retrain between the two, they may be different, but they're both basically abstractions of similar base concepts? Or am I being a little too naieve?



  • @ammoQ said:

    Just install Linux and get your hands dirty.
     

    Seconded!  You'll be spoiled for choice of languages for one thing... 



  • @Ice^^Heat

    Problem is that you live in the Netherlands (just like i do) and that this country started on the wrong foot with anything that involved software.

    Big internet companies used Windows servers so schools teached for Windows!

    Luckily i jumped in on OpenSource and Netscape Navigator in the old days.

    However this also had its drawbacks because i couldn't get any job that involved anything not related with Microsoft and had to learn the Windows SDK API myself.

    This was ofcourse with success but these days people finally understand the importance on Unix and GNU/Linux for their servers so the Netherlands plays along now. 


    Your Microsoft knowledge is still viable and usefull, but to get a nice job you should learn POSIX based systems ASAP!

    Then you will also discover the sleak processes of a POSIX system and how much fast and cleaner a HTTP request (as example) is handled.



  • @djmaze said:

    @Ice^^Heat
    Oh, come on!  The quoting system is about the only thing that works correctly on this freaking forum!

     



  • @mrrooster said:

    But sometimes that can be an advantage, if you understand the basics of OO, surely C# and Java are syntactically very similar (I've not used C# so I may be wrong here.), so if you have an understanding of /coding/ and the various design patterns the framework of the week try to implelent (I'm thinking MVC here.) then you shouldn't find it that hard to retrain between the two, they may be different, but they're both basically abstractions of similar base concepts? Or am I being a little too naieve?

    The languages are similar, but the frameworks aren't. When even the most simple hello-world-application consistst of several Java source and XML config files, knowing the language and the abstract concepts is not enough to get you started.

    The other problem: When someone is experienced in Java, he writes C# code like Java code. But C# has other style rules and other idioms. 



  • Of course depending on what type of development you want to do. But the GNOME project recently'ish started a project called the gnome developers kit, which basically is a vmware image which includes all the tools you need to start contributing. The GNOME project is pretty wide, so there are lots of sub-projects to choose from. A big benefit of this is that you don't have to set up your own build environment which arguably is the biggest problem people will have when they decide they want to start contributing. 

    http://live.gnome.org/GnomeDeveloperKit/

    http://live.gnome.org/GnomeLove 



  • I'd suggest that you play around with KDE. It's written mainly in C++ and using Qt (Platform independent UI toolkit). But you don't need C++ since you can use scripting languages. It's ideal if you want to sharpen your OO skills.



    It's highly platform independent and got a plethora of interesting frameworks (Akonadi, Solid, Phonon, and NEPOMUK to name a few), I highly recommend giving it a look.


    Start here
    <nr/>
    PS: yes I admit I'm KDE fanboy, I can't help it if it rocks.



  • So yesterday I started my new foray into Linux with the new Ubunutu 8.04 release,

    I'm very impressed by the ease of use of the system. What would you recommend for an IDE if your coming from a VS.NET background? Since VS.NET is pretty much uncontested as an IDE.



  • @Ice^^Heat said:

    What would you recommend for an IDE
    Try Code+Blocks (you have to get it from their site), kdevelop or eclipse. Those are the only three IDEs I know for Linux (most die-hards use emacs or vim)



  • Depending on the language you want to write, you could also try MonoDevelop for C# or NetBeans for Java. There are IDEs for other languages too, e.g. Eric for python. If you don't mind to pay, you might also consider non-free (beer) Tools like Komodo, SlickEdit.



  •  for dynamicly typed languages Komodo is my favorite.  For all else I roll with Eclipse (of course with about a billion plugin-ins).  For fast little GUI programs I roll with C# and Visual Studio.



  • I must unfortunately say I have uninstalled Linux again. I had some configuration issues like drivers and so on. I didn't have time to take on these issues, and I guess it is just little things like these that don't work for me because I found myself starting Windows all the time to actually get some stuff done. This is kind of a problem, because as a software programming enthusiast I feel I must do certain things to expand and grow as a programmer. So when I read this article: http://www.vanwensveen.nl/rants/microsoft/IhateMS_1.html I thought: I must use Linux! But in truth I don't like the dual boot hassle. I really just want one neatly configured enviroment that works for everything I do, be it games, programming or playing Blu-ray discs.

    There have been some things I always wanted to do, like learning C++, and using Linux. But I never found the discipline and "courage" to really get into it. And now I failed again after doing a Vista install last night over Ubuntu on my laptop. But ofcourse, there is the ever growing influence of the net and programming community. So this evening I listened to this: http://blog.stackoverflow.com/index.php/2008/04/podcast-2/ and reading http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html . And I thought: "Damn, I still have 2 C++ books in my bookshelf. Never did anything with them!". I did some chapters on C++ Primer 4 ed but never got to the pointers. I'm usually put off by Linux/C elitism, but this information is actually coming from a reliable unbiased source. And whats the use of actually learning another high level OO language like python? It has the same level of abstraction as .NET and Java, so I'll probably learn nothing new.

    Having teachers telling me I'm good at OO design and understandig design patterns doesn't seem enough for me, software development is an endlessly complex subject, and I must recognise how much I suck. I'm in a "JavaSchool", so OO is the main course. And I'm not even sure if C++ will be served as a side dish. I know that one of my teachers is a C++ enthusiast, but I am not sure if it will be thaught at all.

    Maybe I'll get on the Linux bandwagon again. Or maybe I'll try and finish a book on C++ some day. But it's not going to be easy. But at least I have the drive to get better, and I think that counts for something. The interest has always been there, maybe it just needs a little more of a push.



  • @Ice^^Heat said:

    I must unfortunately say I have uninstalled Linux again. I had some configuration issues like drivers and so on. I didn't have time to take on these issues, and I guess it is just little things like these that don't work for me because I found myself starting Windows all the time to actually get some stuff done. This is kind of a problem, because as a software programming enthusiast I feel I must do certain things to expand and grow as a programmer. So when I read this article: http://www.vanwensveen.nl/rants/microsoft/IhateMS_1.html I thought: I must use Linux! But in truth I don't like the dual boot hassle. I really just want one neatly configured enviroment that works for everything I do, be it games, programming or playing Blu-ray discs.

    I feel with you, but nowadays, virtual machines offer most (if not all) of the advantages of dual boot without the drawbacks, given a machine with enough RAM.



  • @ammoQ said:

    The languages are similar, but the frameworks aren't. When even the most simple hello-world-application consistst of several Java source and XML config files, knowing the language and the abstract concepts is not enough to get you started.

    The other problem: When someone is experienced in Java, he writes C# code like Java code. But C# has other style rules and other idioms. 

     

    And yet, hired on the basis of my prior experience with Java and with an assortment of Microsoft technologies like MFC and COM, I was producing perfectly acceptable C# code after about two days. The key was looking at the existing C# code base and picking up patterns and elements of style from that, rather than assuming that Java or C++ conventions automatically applied. 



  • @dgvid said:

     

    And yet, hired on the basis of my prior experience with Java and with an assortment of Microsoft technologies like MFC and COM, I was producing perfectly acceptable C# code after about two days. The key was looking at the existing C# code base and picking up patterns and elements of style from that, rather than assuming that Java or C++ conventions automatically applied. 

     

    True. If you are lucky enough that your coworkers have produced a large asset of good code, and you are not one of those write-only-programmers, you can pick up about any language in little time. 



  • @ammoQ said:

    True. If you are lucky enough that your coworkers have produced a large asset of good code, and you are not one of those write-only-programmers, you can pick up about any language in little time. 

     

    The problem is that this is exactly how WTFs get spread around in a projects - not necessarily by newbies to the language, but by newbies to the project. If the codebase is big (and not organized and documented magnificently), pretty much everyone ends up reinventing a lot of wheels. 


Log in to reply
 

Looks like your connection to What the Daily WTF? was lost, please wait while we try to reconnect.