Slashdot Mirror


Transitioning From Windows to Linux Development?

truthsearch asks: "I've been a professional Visual Basic developer for 6 years, working on two and three tier systems and also web applications. Two years ago I tried Linux and went from being a fan of Windows to an aspiring developer of Linux (or at least Unix) applications. My company has just announced their complete acceptance of moving everyone to .NET and so I want to leave ASAP. I'm even willing to take a pay cut to leave Microsoft software development. So if I were to not contribute to OSS or take time off to get my masters (in CS of course), what's the best way to transition from professional Microsoft platform development to Linux? Are many companies hiring Microsoft developers with little Linux experience to assist in corporate migration? With online postings requiring 3-5 years Linux/C++/Java experience how's a Windows developer supposed to transition? Is my only solution to stick it out here while I contribute to OSS for the experience?"

59 comments

  1. *winces* by CableModemSniper · · Score: 2, Funny

    I've been a professional Visual Basic developer for 6 years, working on two and three tier systems and also web applications.

    Man I feel sorry for you, their gonna have a field day with this one. b

    --
    Why not fork?
    1. Re:*winces* by __aafkqj3628 · · Score: 1

      I'm a professional VB (and recently VB.NET) developer for a long time too, it's not that bad. Honestly.

    2. Re:*winces* by GigsVT · · Score: 1

      professional VB developer

      Is that something like "Subway Sandwich Artist" or "Sanitation Engineer"? :)

      Just pullin your chain, no need to get uptight.

      --
      I've had enough abrasive sigs. Kittens are cute and fuzzy.
    3. Re:*winces* by __aafkqj3628 · · Score: 1

      Ya gotta admit though, those sandwiches are beautiful.

    4. Re:*winces* by CableModemSniper · · Score: 1

      I didn't say it was, just that coming to this crowd and saying that and then asking for advice was just asking for trouble :)

      --
      Why not fork?
  2. just get a patch accepted by linus! by larry+bagina · · Score: 1, Offtopic
    A couple years ago, i submitted a few patches for linux bugs, a couple of which were accepted, and my name wnet into the changelogs.

    I had to stop counting all the cold-call (or cold email) job offers i got from that to be a linux developer for some company or other. Of course, this was back in the go-go years, when companies spent millions of dollars on sock puppets, but i still get one or two job interview offers a month to be a "linux programmer."

    --
    Do you even lift?

    These aren't the 'roids you're looking for.

  3. Java by __aafkqj3628 · · Score: 1

    I would reccomend learning something like Java because of it's cross-platform abilities which would mean that a transition from windows to linux would be much easier.

    The other option is to get books, lots and lots of books on Linux C++ programming.

    1. Re:Java by Anonymous Coward · · Score: 0

      C#/.net is also cross-platform, jackass.

    2. Re:Java by Anonymous Coward · · Score: 0

      Sure... C# crosses platforms, Windows NT, Windows 2000, Windows XP, blah, blah, blah...

  4. Experience by PFAK · · Score: 2, Insightful

    You answered your question yourself. Get experience with working OSS software, code some stuff. Submit some patches to either the FreeBSD or Linux kernel, and you should be set.

    Just make sure that you keep up to date, even if you have to learn C# (.NET), it'll be still good on your resume. Heck, theres C# library's for UNIX now, if you have been reading slashdot.

    And, I'd recommend keeping your current job, once you have sufficent knowledge. Then go looking for another one.

    --

    Free means no restrictions, ironic the FSF's GPL forces restrictions, isn't it? What's your definition of free?
  5. Same as elsewhere ... network network network... by metacosm · · Score: 5, Insightful

    Questions:

    #1. Do you want to work on OSS systems and with OSS toolkits (writing a web application in PHP running on Redhat 8.0 and Apache 2.0) or do you want to write OSS code (writing a web application licensed under [BSD | GPL]).
    If your goal is to write software licensed under an open-source license, you will have a large uphill battle to find work.

    #2. Are you sure your newfound passion is worth giving up your job over in this economy? Better to write windows code during the day, so you can afford to write linux code at night.
    Slowly ebbing into linux is a good way to go, it will let you built up an understanding and ensure you are set on this decision.

    Recommendations:

    If you really want to break into the OSS software development market, you need to bear in mind a few things.

    #1. It is like any other market, your network of personal relationships you have developed over the past six years will be your basis, where you start looking. As always the buddy-network is the best possible way to find a job you might actually enjoy.

    #2. OSS is often as much about community as software, get involved. The best place to probably get involved is your local LUG. At you LUG you have a chance to meet like minded individuals.

    #3. Write some code that has your name on it, so that when asked to produce demos/examples of your work you can show them your (GPL | BSD) licensed code. If you write software that happens to help your local LUG you get a bonus point.

    #4. Remember that you might be able to create a new job, rather than fill an existing opening. Converting a company to linux, and developing new systems is a large task for even a small (100-200 employees) business. But a rewarding one.

  6. IMHO, there's no competition by SAN1701 · · Score: 2, Interesting
    With Borland Delphi/Kylix, you can

    Create any kind of multiplatform (windows/linux) apps.

    Use a WAY better RAD tool than VB (I used VB for a while).

    Learn and use a full-featured OO language.

    As a bonus, you can even generate .NET applications, if you need.

    I use it since its first version (well, since Turbo Pascal 3.0, actually), and, altough it's not the tool I use most in daily job (I deal with Macs a lot), it's simply the best RAD tool I've seen. Try a free download. After all, you're the kind of guy they're targeting now.

    1. Re:IMHO, there's no competition by zulux · · Score: 2


      The best thing about Delphi/Kylix is that you can dabble in Linux, and still use it to pay the bills.

      Aside, Kylix programs work wonderfully in FreeBSD with FreeBSD's Linux compatibility layer.

      --

      Moneyed corporations, non-working 'poor' and criminal prisoners are turning productive citizens into tax-slaves.

    2. Re:IMHO, there's no competition by SAN1701 · · Score: 1

      "The best thing about Delphi/Kylix is that you can dabble in Linux, and still use it to pay the bills"

      One interesting thing happened to me regarding this. In a small TV, we created a news system. Its clients, inside the company, uses a Windows front-end writen in Delphi; To the web, we simply recompiled the data abstraction layer and created some small formating code and we had a full-featured apache-linux webserver app, with little effort.

      If the folks at borland at least port this thing to the MAC... ;-)

    3. Re:IMHO, there's no competition by zulux · · Score: 2

      Its clients, inside the company, uses a Windows front-end writen in Delphi; To the web, we simply recompiled the data abstraction layer and created some small formating code and we had a full-featured apache-linux webserver app, with little effort.

      Fun stuff...

      The nastiest trick I've done with Deplhi/Kylix is that I was tired of buggy Windows workstations making my app look bad, so I put the front-end of the app on a FreeBSD server and shared the app with VNC. So any computer that has a VNC viewer: Apple, Windows, Be - you name it, can use the app. And if the workstations crashes, the app is waiting them where they left off.

      I too would love for native Mac support.

      --

      Moneyed corporations, non-working 'poor' and criminal prisoners are turning productive citizens into tax-slaves.

    4. Re:IMHO, there's no competition by Trane+Francks · · Score: 2, Insightful

      I agree that Delphi and Kylix are the way to go. Also, what hasn't been mentioned yet is that the language itself is relatively painless to learn for VB programmers. This should make it possible for our intrepid VB programmer to pick up the basics and move on before the .Net move at his current company becomes a serious problem.

      Any VB programmer who worked with version 4 will crack open Delphi and Kylix and think, "Wow, I've seen this before!" It's a very comfortable transition.

      I use all three.

      trane

      --
      ...a FreeDOS contributor: http://www.freedos.org/
  7. NOW you're leaving? by uradu · · Score: 4, Funny

    > moving everyone to .NET and so I want to leave ASAP

    So you stuck it out with crappy VB6 all these years for the sheer enjoyment of it, and now that they're finally moving to a half-way decent platform, you're bailing?

  8. The answer is ... by LordNimon · · Score: 0, Flamebait
    Are many companies hiring Microsoft developers with little Linux experience to assist in corporate migration?

    In a word, no. Especially in this economy. I suggest you do Linux development on the side, and then claim on your resume that you did it for work. In a year or two, someone may hire you.

    --
    And the men who hold high places must be the ones who start
    To mold a new reality... closer to the heart
  9. Game the system by Anonymous Coward · · Score: 0

    Learn to scam the headhunter system and it don't matter if all you know is GW BASIC.

  10. MONO by MrBlack · · Score: 3, Interesting

    Just because your employer is moving to .NET doesn't mean you can't do some development on Linux using MONO. It seems ironic to me that in may ways .NET un-shackles windows developers from the windows platform more than previous Microsoft development technologies did.

    Also, why not try and affect change from within your own company, rather than going somewhere else? If there is an existing open equivalent to something you're thinking of using then make the case for that. Also investigate languages like Java, Python and Perl which can run on multiple platforms. They all have large developer communities and mature libraries for doing lots of different things.

    1. Re:MONO by alyandon · · Score: 2

      .NET unshackles developers from MS Windows as long as they stick to the features that can be implemented on other platforms.

      One thing you are probably never going to see with Mono, DotGnu(sp?), et al. is a compatible implementation of COM+ which MS has thrown into .NET for talking to legacy win32 components/libraries/applications. If you need to use such features with .NET -- you are going to be developing and deploying on Windows (at least the service part will need to be).

    2. Re:MONO by MrBlack · · Score: 2

      AFAIK COM+ AKA enterprise services aren't so much about interop with COM, but more about providing "enterprise services" like queing, transactional objects etc (more analogous to certain parts of J2EE). .NET interoperates with COM by way of a COM callable wrapper. In order for a .NET assembly to interoperate with a COM component (under normal circumstances, forgetting about remoting and DCOM for the minute) the COM component would have to be installed and run on the host OS. So I guess you could say we would probably see .NET/COM interop in MONO when we see COM for Linux (hey, isn't that what BONOBO is...).

      Side note: I heard the marketroids at M$ were thinking about calling .NET COM+ 2, now wouldn't _THAT_ have been a good name.

  11. .Net by the+eric+conspiracy · · Score: 3, Insightful

    It would seem to me that sticking out the transition to .Net and working on Linux on the side would be the best way to make the transition.

    With .Net, your VB skills are soon going to be hard to market, and you don't have any real Linux skills just yet.

    If you stick it out, you will have a much better skillset to show the market.

    1. Re:.Net by metalpet · · Score: 1

      I second that..

      One possible future for linux happens to be one where .NET plays a significant role. Even if it doesn't, a lot of what you learn about .NET is relevant to java developement as well.

      Just try to move to C# instead of VB.NET if you can.. The learning curve is quite similar. Despite both languages being roughly equivalent, I suspect prospective employers will be more impressed by the former for historical reasons.

      That and C# is likely going to be the first and best supported .NET language on linux. There are several C# compiler in the work for linux but I haven't heard of anybody working on a vb.net one just yet.

    2. Re:.Net by OneOfThree · · Score: 1

      If you stick with your current job, take the opportunity to really learn OO programming. VB6 was never really OO. .NET is very OO. A good base in OOD, OOP and, say, C# would be a good platform to use to build skills in Java, and then you're on your way.

    3. Re:.Net by Anonymous Coward · · Score: 0

      If you stick with your current job, take the opportunity to really learn OO programming.

      There is no real evidence OO is better. It's bubble will soon pop and people will toss it like they did mainframes in the early 90's out of embarassment. Java and its clone.NET will die a slow, painful death.

    4. Re:.Net by Anonymous Coward · · Score: 0

      OO is wider than Java and .NET. It's a mindset. Arguably, Java and .NET style OO will go away, as more people realise the benefits of multiple-distpatch OO as in Common Lisp CLOS.

  12. .NET by droyad · · Score: 3, Informative

    Why run from .NET? Pretty soon* you can develop in .NET for the linux plaform

    *I am aware that it is already working, but it's not quite there yet

  13. Find a place that does Unix Development by PaddyM · · Score: 3, Interesting

    I'm not sure how you'd do that other than ask. I work for Lockheed Martin Air Traffic Management. We do unix development, and in fact as part of a leadership development program, I'm currently working on porting a Windows-based testing app to cross-platform (read: Java GUI and ANSI C backends on Linux). I'm not sure how much we're hiring, but it certainly isn't obvious from the job description (Software Engineering) that you could end up doing development in linux.

  14. there is competition by e8johan · · Score: 2

    Qt from trolltech (www.trolltech.com) is a better solution (IMHO).

    • Qt uses C++ (but is available for other languages). C++ is far more common than Borland's Pascal derivate that Delphi/Kylix uses.
    • QtDesigned is a great RAD tool, but it does not force you to use it. You can write (or insert) lots of code from the outside without any problems.
    • For cross platform apps, simply buy the full version and you can do Unix/X11, Win32 and MaxOS X with one source.
    • Qt is not only a GUI tool, but a collection of cross platform classes for: sockets, filesystem interaction, database access and much more.

    If you feel like trying it, just go to trolltech and download the free edition.

    1. Re:there is competition by jetsfandb · · Score: 1
      You might want to check out Borland's site first for info on Kylix. Mainly because:

      Kylix uses QT for it's widgets.

      The current version of Kylix supports both Delphi and C++ development.

      There is a free 'Open' version that has a limited number of components but allows you get a good feel for the product without cost. (Anything generated with the Open version falls under GPL, though).

      --
      It is by caffeine alone I set my mind in motion, It is by the beans of Java that thoughts acquire speed, The hands acqui
    2. Re:there is competition by oliverthered · · Score: 2

      Hmm.. I don't think you've tried Borland tools for quite some time.

      Kylix gives you:
      Just-in-time compiling so you can modify your code whilst debugging.

      A far better syntax for even-handeling.

      A seriously good RAD UI. you havn't seen rad till you've used Kylix/CBuilder &co.

      Type sensitive code compleation.

      Good ANSI compliance.

      Cross platform development (including mobile devices)

      the list goes on.....

      I do like QT and I use it a lot but Borlands tools are the best.

      --
      thank God the internet isn't a human right.
  15. Odd time to move by IceFreak2000 · · Score: 0

    As a previous poster said, albeit sarcastically, it seems odd that you've put up with Visual Basic with its numerous flaws and 'lock in' attitude for so many years you're now looking to bail out when the development platform your company has chosen has improved dramatically.

    My personal opinion is that .NET is a great development environment. As a long standing C/C++/Java developer (I hate to admit to VB in public), it's taken me a very short time to get to grips with the Framework - the language you use is largely irrelevent, but I have to admit I went for C# - which is the major bulk of any learning effort required in getting up to speed with .NET

    Other posters have also pointed out that there are Open Source efforts underway to port .NET to Linux (Mono and DotGNU

    ) as well as the much publicised Rotor implementations for FreeBSD and Mac OSX.

    Make no mistake; the Redmond behemoth is not going to let .NET just curl up and die. If I were you, I'd use it as a stepping stone to your Open Source ideals. Ahh, how delicious is *that* irony?

    --
    Life is like a sewer; what you get out of it depends on what you put into it...
    1. Re:Odd time to move by Anonymous Coward · · Score: 0

      I find .net to be pretty crappy. You're right that the language you use is largely irrelevant, but I find that that's because they're all the same language with a thin veneer of different syntax - they're all the same garbage-collected, single-inheritance OO. Boring. Give me lisp any day.

  16. Professional Programmer by JohnFluxx · · Score: 2, Insightful

    A serious question: How can someone really consider themselves a professional programmer - particular one that's been coding for 6 years - but has stuck to one language and one OS.

    I'm not trolling, just thinking from an employers point of view. Wouldn't you be suspicious of someone who doesn't branch out a little more? I personally would wonder where there motivation and proffesional curiosity is.. Or do employers like that sort of thing?

    1. Re:Professional Programmer by Anonymous+Brave+Guy · · Score: 2
      A serious question: How can someone really consider themselves a professional programmer - particular one that's been coding for 6 years - but has stuck to one language and one OS.

      That depends on your point of view, I guess.

      I've been a full-time professional developer for around four years, and I've used predominantly C++ on MS Windows in that time. Sure, I've also used C and assembler skills in significant amounts along the way, I've picked up enough of things like Java and Perl to be useful, and I have a side interest in several other tools and languages as well. The current project I'm working on runs on about 15 different platforms, too.

      I'd still probably describe myself as a C++ programmer who works with Windows as a one-line summary, though.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    2. Re:Professional Programmer by Anonymous Coward · · Score: 1, Interesting

      Maybe after 6 years he knows what he's talking about. Expertise is worth money. Personally, I strive for it. I worked with a man who worked with the same system all his working life. He built the OS and designed the programming language used to control it. If you made a mobile phone call during the 1990s there was a 50% chance you used that system. I am happy to refer to him as a professional programmer.

  17. Two/Three tier systems? by Anonymous Coward · · Score: 0

    What is a two or three tier system?

    Can anyone help me out here?

    1. Re:Two/Three tier systems? by Anonymous Coward · · Score: 0

      Two tier: Client/server.
      Three tier: Typically Db-server, webserver, client.

    2. Re:Two/Three tier systems? by Wavicle · · Score: 2

      The number of "tiers" refers to the number of players (apps) between a client application and the data or service it wants. A two tier system is almost always called "client-server", because those are the only two players involved. In the trade if the client is a custom app and the server is a database, this arrangement is usually referred to as "thick client".

      A site like slashdot is probably 3 tier because data travels client-server-db. The obvious reason to do 3 tier is the web. Web browsers shouldn't have to support running code to do complex SQL queries to some database. However there are a host of other reasons to separate database access from the client like security or connection pooling. You don't really want your db to suffer 100,000 simultaneous accesses, much better to put in a middle tier that maintains a queue of those wanting access and a pool of open connections to execute the queries. This set up where the middle tier does the db access on the client's behalf is usually called "thin client".

      Besides the whole web browser model, other 3-tier (or n-tier as we like to call them, although n is rarely greater than 4) technologies in common use (or at least that I've used) are CORBA (cross platform and language standard) and EJB (Java standard).

      --
      Education is a better safeguard of liberty than a standing army.
      Edward Everett (1794 - 1865)
  18. Use .NET as a stepping stone by gr84b8 · · Score: 1, Insightful

    A lot of development these days does not require very much OS specific development. C# is actually an elegant language from what I've seen, and has a lot of similarites (and even improvements IMO) to java. The .net framework also seems to mirror many of the java frameworks. Perhaps your best bet is to take the opportunity your company is giving you to learn C# and .NET - and use that as your transition. Being a c++ unix developer, it seems to me that there are a lot more Java/J2EE or C#/.net jobs out there than platform specific c++ positions (much to my dismay :). Take on linux as a pet project, it doesn't need to be your career.

  19. Cross Platform by gbr · · Score: 1

    There are a ton of cross-platform tools that will let you develop for Windows and Linux platforms. Personally, I use wxWindows, but you should also look at Kylix, QT, MONO, etc.

  20. hey I have a favor . . . by /dev/trash · · Score: 1

    Can I have the job your leaving? I'll take a pay cut, but not because I love MS, but because I like to eat and stay in warm places.

  21. Heresy by valisk · · Score: 1

    Read aloud the passages here here and don't be despondant my son. Saint Ignucius hath provided fo thou.

    --

    Economic Left/Right: -0.62
    Social Libertarian/Authoritarian: -3.69
  22. C# by Bri3D · · Score: 1

    Keep ypur job, learn C#.net, then quit and transition to Linux, which has C# libs, etc.

  23. Stay where you are by Anonymous Coward · · Score: 0

    Like everyone else has said, stay where you are and learn some marketable skills before you move (sorry but VB6 is the past not the future) .Net might not be the ideal job for you but you certainly can learn alot from it. Learn OO principles doing C# which you can then aply to Java or C++, when it comes right down to it, it doesn't really matter what platform you develop on to get these basic skills.

    Once you have the skills then you can be more choosy about your job, afterall I would assume your number one goal is to make a living.

  24. Keep your day job by DrCode · · Score: 2

    I've been professionally writing Unix/Linux code for over 10 years, and also have written a lot of OSS. And I've been unemployed for nearly 4 months. That experience doesn't seem to be doing me much good at the moment.

    It seems like the main jobs I see now are either for Window programmers (esp. .NET), or for Java with database experience. So stay where you are so you can get the .NET experience, and join an open-source project for fun. You'll have the best of both worlds (and believe me, ANY tech. job is better than no job).

  25. Advices given here are absolutely horrible by Alex+Belits · · Score: 2

    You can't learn new system, especially a superior one, by using tools that are from your old system -- even if they are developed recently. To learn Unix you need to study its design, tools and techniques, not use some monstrosity made to support applications made for Windows under Unix. So forget about Mono, Winelib and Java, learn C (plain C, by K&R book), networking (by UNP book), write something, participate in the development of something that you need, and then you will be able to choose what to do next.

    --
    Contrary to the popular belief, there indeed is no God.