So what is it like out there? In the world of Software Development?



  • 2 years ago, I found my "calling": Software Development.

    I was doing an internship for my school. The education I am doing right now will prepare me for all-round ICT work: Systems Administration, Networking, Desktop Support, Management, Databases and Programming. Thus not very specialized, but there is an emphasis on the System Administration/Networking part.

    Now, back to the internship, they involved me into a project that would realise internal news bulletins via an electronic medium. There would be an rehaul of the static HTML intranet, which would be dynamic. I was tasked with searching for an Open-Source CMS system etc. But, I found my calling, and built one myself in ASP.NET which I could intergrate into the company's existing systems, and everybody was happy.

    I got an incredible kick out of it, and tought: "This is it! This is what I want to do with my career!" So started learning more about C# and programming languages in general.

    So, the next internship I was desperately looking for an Programming position. Which is quite hard, since most internships offered by the school involve the Systems Administration part. But I got one. They used .NET to build Web Application for clients (Including the company I was with before), downside was that they used VB.NET, but that's okay.

    So, the interview went well, and I was under the impression that when I started working, they would give me all kinds of fun little ASP.NET projects for clients.

    But, no such luck. They tasked me to built an Information System for their Domain Name Management (Orders, Invoices and other financial stuff). Well, sounds fun doesn't it? They had already a user interface design and a ERD for the database prepared for me. So I tought I was going to do this from scratch, but after a little while, it became clear they wanted their Microsoft CRM 3.0 system customized. They told me I could do everything in CRM with JavaScript.

    Despite the fact that Microsoft Dynamics advertises their CRM system as being fully customizable, I had trouble adapting all the wishes of my colleague's into the CRM. I ended up making weird JavaScript constructions, and some ASP.NET stuff in an iFrame. It worked tough, but it was no fun, and it seemed that CRM limited my ability to solve my employers problem. I quit early, because the distance was to large and I had to pay for the gas. Internship = almost no pay

    So I was off to another internship, looking again for an programming position. In the meantime I made some realizations: I don't like stuff like scripting: Classic ASP, PHP and JavaScript are technologies that annoy me. So I wind up everytime in pointless "ASP.NET vs PHP " disussions. Even almost got into fight over a PHP and ASP.NET in my hobby-club (we organize events), where someone wanted to implement an Open-Source Information System (Downloaded from the internet), and I wanted to develop my own in C# and implement that (Because it is a HOBBY).

    But here we are again, another internship. A nice interview, and what I got from it, is that I was going to rehaul their Classic ASP site to a whole new ASP.NET Web Application. Tough the lack of technical knowledge of the boss that interviewed me was kind of curious. I had to tell him that ASP.NET was the latest incarnation of ASP, and that it is not possible for HTML to "talk" with an database. The construction: the HTML page has a frame which refers to the Classic ASP page in which you can browse the database, I guess that's what he meant by talking to databases from HTML ;) . He also told me that anoher company made the database. And I wouldn't have to touch that. That's fine, I just make an ASP.NET web application that talks to it.

    But anyways, having not yet made the realization that by Database he means the "Classic ASP" pages, I started out. As soon I asked for a table structure and DataModel from my colleague's, they looked at me with big eyes: "A what??!!". Then I made the realization: By Database my boss actually means the ClassicASP Webpages, and I don't have to touch that. So what in the world does he want me to rehaul??

    The plot thickens however, the company has outsourced all it's Web Development to a company called Data Access. I called them, and they told me the ASP pages served as nothing but a front-end to their actual Business Logic. Which is built in some obscure unknown language I never heard of: Visual DataFlex. There goes ASP.NET. There goes the complete rehaul.

    So I guess I have to make some changes in the web application, and screw around with ClassicASP and DataFlex. To make matters worse, there is no documentation or whatever on DataFlex on the internet. Now I have to depart my comfortable C++-like thinking and learn a whole other type of language, that nobody seems to use and is from 1985.

    ClassicASP = NO FUN

    Visual DataFlex = NO FUN

    Not designing something from scratch = NO FUN

    It is just no fun, I can do it, but its no fun.

    But this is the programming job I wanted right? This is the 'real-thing' out there. I don't have the luxury to decide which platform I want to use, I just have to roll with it.

    Then what do I like? Next year I will start with an 3-year degree plan to get my Bachelor of ICT in Computer Science. I already got some books from the school about Java and UML. And it's GREAT! It is really fun to learn OOP and designing UML diagrams. I love it.

    Now... my question for you is: What is the real job like? When I start to work, will I run into all kinds of annoyances like above??? Or will I actually have enough knowledge and position to get a job that I actually like? In programming...

    I guess I will have the privilige of selecting the right Job-ads (The platform, what I need to do) for me, but I am uncertain of what I will run into. I guess I just need some structure and be comfortable in a certain Design/Programming Paradigm.

    I hope for some answers, and that I explained my "problem" to you clear enough.



  • You say you love programming, but it seems like you love programming in ASP.Net. Yes, you are going to run into a lot of jobs where you will have to learn a new language, or a new way of doing things. Most programmers enjoy learning new things. At the same time, your education and experience will start to give you more insight into the best way to do things. ASP.Net is not always going to be the best way to do something. Sometimes, PHP is going to be the best, or Javascript. When warranted, it is perfectly acceptable to say "I think we should use X language to accomplish this" even if the company really wants it in Y language. So no, you won't always be forced into using one certain language. For a programmer, languages are like tools in a toolbox. Each one serves a purpose, and it is best to have all of them. If you really want to be a programmer, it is in your best interest to learn a variety of languages.



  • That sucks when a job description has almost nothing to do with the job you are hired for.

    I mean no disrespect, but you were being hired as an "intern".  That traditionally implies you get the crap work that no one else wants to do.  Either that or you are the one to get everyone coffee.  At my previous job though the company had a bunch of interns hired specifically for computer science, and instead of giving them programming jobs, they had them do software testing.  It's not completely out of their realm, but the whole point of an intern position is to learn about the career you're training for.  I tried to convince them to put them into development roles, but to no avail.  Luckily, the interns hired at my current employment actually get to do some pretty fun stuff, some of which even I'm jealous of.

    I agree with Jerim though.  Learn as many languages as you can, and try not to hold onto some too tightly.  e.g. M$ programming languages have the bonus of working very well on Windows, but don't work too well in a cross-platform environment.



  • Well,

    I started out with C#. Then I developed an app for my "hobby-club" with PHP. Right now I am working trough a Java book, and after that I have 2 C++ books on the shelf I want to work trough.

    I have to admit, I am a Microsoft "fanboy" (Well, whats a "fanboy"? Lets just say I don't hate Microsoft), and their products suited me well.

    Other than that, I will get an training on Visual DataFlex soon, maybe when I understand the language, I will think different.

    However, internships do tend to suck, and I am happy that in my next school, I don't have to do them anymore.



  • @Ice^^Heat said:

    Not designing something from scratch = NO FUN

    If anything, this is the one you're going to have to work the hardest to get past.  The number of opportunities that a relatively junior developer is going to be given to build something from scratch is going to be limited.  Those opportunities do exist, but you'll have to hunt really hard to find them, and most of the time you'll find the efforts being lead by someone else and you'll only get one small part of it.

    By far more common are cases where you have to work within the framework already put in place by someone else.  You're right, they aren't as much fun, but there are a lot of companies with an existing investment in one way of doing things and you're going to have to provide a pretty compelling reason why they should change. Not that long ago I had to let a guy walk out the door because he wanted us to completely replace our existing systems with his pet ideas and unless he was allowed to do things his way, he was leaving...so he left.  He was a smart guy and I was sorry to lose him -- and I would have LOVED to replace those crap systems -- but the company just wasn't going to go for it.  And even when there isn't an existing system you are trying to extend, etc., there are almost always business requirements that you have to fulfill, or other constraints ("we're a unix shop, so C# is off the table").  Finally, eventually you'll find yourself maintaining your own old systems, and you'll want to rebuild it again with new stuff you've learned, and you won't be able to because the company already depends on it working the old way .

    In 20-odd years of professional development experience, I've only spent maybe half that doing something 'from scratch', and I think I've had a pretty good run. 

    -cw



  • @Ice^^Heat said:

    Not designing something from scratch = NO FUN

    For a musician, Not headlining the gig = NO FUN.  (i.e. just being the warm-up act.)  But ya gotta pay yer dues.

     



  • just so you know.  The work though is what you were looking for.  Not tough.



  • @Ice^^Heat said:

    2 years ago, I found my "calling": Software Development.

    So you reached the NIH-happy stage a bit earlier than most (it's typically around the 3-year mark). You'll grow out of it - probably in about 3-5 years, when you've done enough stuff from scratch to get bored with doing more or less the same things over and over again. Everybody goes through that stage at some point.

    In the meantime, stop expecting your day job to be fun. If it was fun, they wouldn't have to pay you for it. It's a more or less universal law that unless you're running the company, you get paid based on how not-fun your job is (higher pay -> more stress -> less fun). There are exceptions, but as a 2-year rookie, you are not going to get one of those jobs any time soon - such jobs are exceptional, they aren't the norm, and they demand the best people.

    Your problem is a common one: unrealistic expectations.

    If you're going to do a 3-year course next year, then when you finish, you'll be at about the 6-year mark... so no, you won't have enough knowledge to get the sort of job you're after. That needs a minimum of about 10 years practical experience. Also, you'll need considerable employment experience to get such jobs - assume a minimum of 2-3 years, not counting internships (so for you, the two things will happen at about the same time). Eventually, if you're actually good at it (not everybody is, and you aren't capable of judging whether you are yourself), you'll be able to get the kind of jobs you like - but fair warning, they aren't the kind of jobs you currently think you will like. By the time you get to that point, your preferences will have changed. And merely being able to get decent jobs doesn't mean that you'll actually do it - a certain amount of luck is involved.

    Yes, you will run into all kinds of annoyances like you describe. Why do you think this site is here? We're the people who know that this is what happens in the real world, and prefer to make fun of it rather than go around stabbing people. 

    If that doesn't sound appealing, change careers. You have to be a certain kind of insane to make it in this one.
     



  • @asuffield said:

    There are exceptions, but as a 2-year rookie, you are not going to get one of those jobs any time soon - such jobs are exceptional, they aren't the norm, and they demand the best people.

    Your problem is a common one: unrealistic expectations.

    If you're going to do a 3-year course next year, then when you finish, you'll be at about the 6-year mark... so no, you won't have enough knowledge to get the sort of job you're after. That needs a minimum of about 10 years practical experience. Also, you'll need considerable employment experience to get such jobs - assume a minimum of 2-3 years, not counting internships

    I am really trying to hold my tongue on this one...but I just can't. I'm CPound and I have to comment.

    Here goes...

    You talk about exceptions to the rule. Well, in my experience, this has totally reversed. The 2-year rookies ARE getting those jobs. Not only that, they're getting these jobs right out of college. We're talking maybe 1 year of internship experience at the most. It depends how well they can market themselves during the interview process.

    Do I agree with this? Obviously not. (Just read some of my previous "controversial" posts.)

    Being that I have much more experience than these rookies, it is a slap-in-the-face and an outright insult that they are able to get these wonderful jobs in a day, but what took me years of intense work and degradation to achieve.

    And are these recent grads being paid well? Oh yes, they are. Once again, slap-in-the-face.



  • @CPound said:

    I am really trying to hold my tongue on this one...but I just can't. I'm CPound and I have to comment.

    Here goes...

    You talk about exceptions to the rule. Well, in my experience, this has totally reversed. The 2-year rookies ARE getting those jobs. Not only that, they're getting these jobs right out of college. We're talking maybe 1 year of internship experience at the most. It depends how well they can market themselves during the interview process.

    Do I agree with this? Obviously not. (Just read some of my previous "controversial" posts.)

    Being that I have much more experience than these rookies, it is a slap-in-the-face and an outright insult that they are able to get these wonderful jobs in a day, but what took me years of intense work and degradation to achieve.

    And are these recent grads being paid well? Oh yes, they are. Once again, slap-in-the-face.

    Some companies explicitely prefer unexperienced people which (supposedly) are easier customized to the company's way of "doing things". That said, currently it is very easy to get a job as a software developer, so if you were unlucky enough to start in, say, 2001, you probably had a longer search period and a smaller number of offers than people have now.



  • @ammoQ said:

    @CPound said:

    I am really trying to hold my tongue on this one...but I just can't. I'm CPound and I have to comment.

    Here goes...

    You talk about exceptions to the rule. Well, in my experience, this has totally reversed. The 2-year rookies ARE getting those jobs. Not only that, they're getting these jobs right out of college. We're talking maybe 1 year of internship experience at the most. It depends how well they can market themselves during the interview process.

    Do I agree with this? Obviously not. (Just read some of my previous "controversial" posts.)

    Being that I have much more experience than these rookies, it is a slap-in-the-face and an outright insult that they are able to get these wonderful jobs in a day, but what took me years of intense work and degradation to achieve.

    And are these recent grads being paid well? Oh yes, they are. Once again, slap-in-the-face.

    Some companies explicitely prefer unexperienced people which (supposedly) are easier customized to the company's way of "doing things". That said, currently it is very easy to get a job as a software developer, so if you were unlucky enough to start in, say, 2001, you probably had a longer search period and a smaller number of offers than people have now.

    I agree, the market has turned around. Back in the early to mid 90's, anyone who could turn on a computer could get a job easily. Then the crash came and no one but the top level experienced people could even find a job. Now the market is back to hiring anyone who can turn on a computer again. Timing is everything. Yeah it sucks that we had to struggle through the downturn and these young guys coming in have it so easy. But they soon will share in the next down turn.



  • Well, I am 20 now, I probably get my Bachelor around 24, then I most likely want to go for a master, wich will be 2 more years.

    So when I am 26/25 I'll start working...

    But everybody says one should study as long as they can, and I don't want to end up as a production worker in a factory. Nor would I want to cut UTP Cables all day.

    At least I know what I want... a lot of peeps don't. But I figure I have a long drag ahead of me.



  • @Ice^^Heat said:

    So when I am 26/25 I'll start working...

    Unless you are specifically looking at not working during college, I would rethink this :)    There are always professors who need someone to write code for them, there are co-op jobs and internships, etc.   It's always a tough balance, work vs. school -- and one that I didn't handle so well myself -- but there are lots of opportunities to get some experience under your belt before you graduate, and that experience will come in handy when you're trying to distinguish yourself from other new grads. 

    -cw

     



  • @CPound said:

    Being that I have much more experience than these rookies, it is a slap-in-the-face and an outright insult that they are able to get these wonderful jobs in a day, but what took me years of intense work and degradation to achieve.

    Yes, but without them, there'd be no material for The Daily WTF.

     



  • I'll be frank. If I interviewed you, you'd be lucky if I didn't laugh you out of the interview. If you want a job where you build everything, you had better go start your own company.

    Personally, I try like hell to not write software. Anything I have to write is something that I have to maintain and something that keeps me from getting my work done. Logging framework? Not on your life; I've got log4net. CMS system? Like hell I'm going to write that, there are several hundred systems I could use instead. Data access layer? Only if there's some reason I can't use NHibernate.



  • Then, let me stress to you, I fully realize that "building everything from scratch" is not done in the software world. Maybe It's just that I am thrown into the deep concerning an already built system. And then they tell me: "Do this and that." And I don't even know where to begin. And then I have to program in some obscure language that goes against everything I have learned.

    However,

    I bet an poorly designed C# system can be just as annoying, even if it is "my" language.

    And what is desiging from scratch? Write your own Database server? Write your own .NET framework?

    Don't we use API's all the time? We don't built API's from scratch, we just download them from the internet.



  • "Building everything from scratch" obviously does not mean that you invent your own hardware, operating system, languages etc. just to build yet-another web application.

    But every now and then, in almost every company that creates software, it's time to do something completely new. Mostly because the existing systems have become "legacy" and the company needs to adopt new technology. For example, switching from Client-Server (VB6, OracleForms etc.) to 3-tier web applications. Of course, such a switch is risky and expensive, but it's bound to happen. In such a situation, the company is likely to look for people who know the new technology, and this is the chance for someone who doesn't want to maintain existing sytems, but "build everything from scratch". Such jobs exist, but you better be cutting-edge to get one of them.



  • @Ice^^Heat said:

    Now... my question for you is: What is the real job like? When I start to work, will I run into all kinds of annoyances like above??? Or will I actually have enough knowledge and position to get a job that I actually like? In programming...

    I guess I will have the privilige of selecting the right Job-ads (The platform, what I need to do) for me, but I am uncertain of what I will run into. I guess I just need some structure and be comfortable in a certain Design/Programming Paradigm.

    I hope for some answers, and that I explained my "problem" to you clear enough.

    The short answers? Yes.. And No.

    When you start out, especially in high school and first years in college, you have to take any job you can get. These aren't always the "crap" jobs as someone pointed out, but as you've discovered they may be ODD. Grit your teeth, learn the new thing, gain some experience and move on. As you gain knowldege and experience you can pick and choose your jobs.

     Annoyances, yep you will ALWAYS have those. Unless you work alone (then there will be a whole nother set of annoyances) Some of the annoyances are part of the fun. When I first started a "real" job, EVERYTHING and I mean EVERYTHING was in beta. From the OS to the compiler to essentially the first version of our product. Talk about interesting times.

     Working in a group can be a joy, but it can also be frustrated. You'll learn how to deal with it.

    But if you REALLY LOVE to program. And you ENJOY that rush of finishing up a project. Then start doing stuff on your own. In your free time. Build your own website (and no, not just a bunch of static pages) The more you do now, the more experience you have and the more you can show your next employer.

    Why get a master degree?



  • Well, I just graduated from college and got a "real" programming job doing C++.  Beforehand I had internships working on stuff in Java and .NET.  The job market's pretty good right now, so hopefully that holds out for the next few years.

    There's always a possibility that any certain company has something written in some obscure legacy language or framework that you could be hired to maintain.  And there's lots of jobs out there that let you do plain old C++ or .NET programming.  In my own opinion it's uncommon for interns or new hires to design new software products, but if the company wants a new tool or a quick-and-dirty business application, they might let you build that from scratch as a "warm up" project.  But in my very unscientific opinion, I think only 10% of professional developers are designing brand new software at any one time.  It's much more common to be working on bug fixes, patches, refactoring or adding features to an established project.  Sometimes that can be exciting work, sometimes not so much.

    Different departments in the same company might have completely different requirements, so you might interview with some guy who does ASP.NET and SQL for a living and get assigned to another manager who wants you to write Visual DataFlex for the rest of your life.  You just have to take charge of your career and market yourself to companies who need you to do what you like to do (if that makes sense).

    Take the time to figure out how the company works, how your boss works, how they do recruiting, how they work with customers.  That's really valuable information to learn at this point.  Keep up studying on your own, and figure out how to market the skills that you're learning.  In other words, when you learn something new, think about how you would apply it to your current job.  Keep that knowledge that in mind when you write your resume and go to interviews.

    Anyway, that's my advice, hope I didn't come off as too much of a tool.
     



  • Why not get a masters degree?

     It has been hammered into me I should get as much degrees as possible and study as long as you can.



  • If you enjoy studying, by all means go for the masters! I think that many contributors here are from the US and you seem to be from Europe (like me :-). The market is little different here.

    My experience is that sometimes you get stuck with the über-frustrating and potentially boring fight with existing weird legacy systems. However, a lot of time bulding new functionality for an existing application is really fun. It's also entirely possible to get gigs doing all-new SW.

    Also, why not contribute to one of the numerous open source projects? Find one that interests you and start working. Most projects have some beginner tasks that you can do until you feel confortable doing something more advanced. You could be programming Firefox or whatever right now :-)



  • Currently, the job market for developers is good (at least here). If you prolongate your study, although your current level of education is good enough for the job, you might face tougher times in a few years when you have made your degree; assuming an economic cycle of six years, you might end up looking for a job during a depression.


Log in to reply