Hacker News new | ask | show | jobs
Ask HN: Confused software developer
38 points by nxi 4213 days ago
I am desperate for help but not sure whom to ask. I do not have any senior software developer friend who I can ask for advice. So, I hope somebody out here can help me. I am 30yr old software developer with 2 yrs experience as a ASP.net C# developer. I have been jobless for 6 months. During my tenure as a developer, I did not do anything great. Just converted some existing HTML(static) sites to dynamic(developed a simple & crude cms like interface to edit the content on the website). I also made some simple web services. But I felt it was more like doing something and praying real hard that it should work. I cannot say honestly that I know webservice. Once I lost my job, I was having trouble finding .net openings as everyone wanted experienced people and no one wanted a junior. I decided to leave .net and look else where, I was also fed up with windows and visual studio. I tried Java but it was tough learning it based on the online resources. I struggled for a long time with Maven and still i am not sure if I know it properly. I did play around with Python, I really liked the syntax formating(well indented structure as it made it more readable). I am a windows 7 user, but now I am getting used to Linux mint since 3 months. Now my problem is, I do not have experience due to which I cannot find a job and I cannot get a Job as I lack experience. Its like a dead-lock situation. Plus I have not achieved at 30 what I aimed to do when was 25. I am not sure which language to choose as I am trying to move away from .NET. I am currently trying to develop an app for android in hopes to be self-employed or atleast gain a skill as a mobile app developer. But I am not very sure how successful I will be as I still struggling to find was way around Java. May be I am just looking at all this in a wrong way. I am not sure, but I think its time for a complete shake up.
28 comments

Not wanting to be brutal but if you have 2 years experience of anything then you are no longer a junior. Maybe not actually a senior but certainly not a junior. Junior is like saying trainee. Stop thinking that you are junior.

You seem to play down your accomplishments "Just converted some existing HTML(static) sites to dynamic(developed a simple & crude cms like interface to edit the content on the website). I also made some simple web services"

Lets rewrite that for you:

1) Rebuilt existing site into a modern Web2.0 dynamic website complete with it's own CMS to make the sites easier to maintain for the users. 2) Developed webservices to allow the content of XXX easily accessible by other services.

If your CV is like this post then it needs a makeover.

You are not a junior anything, you are an experienced ASP.net C# developer!

Building on your ASP.net and C# skills will provide greater benefit in the short term than becoming a noob in a whole bunch of other technologies.

This bullshit spin won't withstand even the most basic technical interview. It will also ensure that he'd come across as a pompous noob who's out of touch with reality.

I've been programming for money close to 25 years and I can assure you that the "junior" period covers at least 5 years. Yes, 3 years in you would think that you know a lot, have a boatload of experience and just a wee bit under "senior", but then at a 10 year mark you realize how obnxoisously cocky that self-assesment was. You just didn't know what you didn't know, but it didn't prevent you from feeling super-smart.

So, yeah, the OP is most definitely junior. That part is not a problem and it's actually really good that he doesn't think more of himself than he really is. His problem is a lack of experience and the only solution to this is just to sit your ass down, read what others have written and write your own code. Iterate.

It isn't bullshit for a mid level generalist to remove the "junior" just because the web frameworks play musical chairs every few years.

Titles are stupid. If I were feeling more cynical, I'd argue that the problem is the Windows programming ecosystem doesn't have much of a middle.

The problem with his description of his achievements is that he is probably underplaying them. Obviously without knowing what he has actually produced (seen the site, reviewed the code etc) I was hoping to make him see what he has done in a better light. "Spent two years converting a static website to something more modern" sounds really lame and could indicate a lack of confidence in what he is capable of or perhaps he is failing to recognise what he has actually done.

His CV needs to get him an interview and I think he is selling himself short.

Personally 'junior' means 'trainee'. Anyone who after five years is still a trainee would have their CV thrown straight into the bin. But I have always worked in environments with very flat hierarchies. Juniors need supervision and mentoring, I expect anyone who been employed for more than a year to be capable of unsupervised work.

Disclaimer: I am the IT manager, I review all the CVs, I get to say who gets employed. I've yet to regret any hiring decision so I am reasonably confident in the methods I employ.

I've employed people with much less experience than the poster and they were up to speed in no time. In 5 years you could get a degree in almost any subject and complete a masters on top of it - at least in the UK.

I would expect competence in a programming language in weeks or months, not years. Note I require competence not expertise.

>> I can assure you that the "junior" period covers at least 5 years.

You can't assure that. There are super sharp people out there with less than 3 years of experience that know a whole lot and there are devs with 10+ years experience who can't determine when a for-loop should be used.

The problem is that term 'programmer' means very different things depending on the industry and company you're in.

> The problem is that term 'programmer' means very different things depending on the industry and company you're in.

That's because 'programmer' as a word is a lot like 'painter', which means "applies pigment to surface" and does not differentiate between "painter of portraits" and "painter of my kitchen".

Programming is a literate and verbal exercise: We should have better words for this.

Knowledge is not the only thing that defines a junior. It is also the actual experience, with the actual real world problems. Super sharp people with 3 years in the industry simple don't clock enough time to step on all the rakes. They are still prone to making rookie mistakes simply because they haven't made them yet.
Yes, so "junior" covers up to 5 years, and it also extends to "same 5 years, N times over again". I.e. it has a base case of a number of years, over which it potentially recurses/iterates. :)
Mostly agreed. I think the term 'junior' can be applied to people with 0-5 years, but the number is somewhat arbitrary, and depends a lot on what was done during that time. If the person had escalating responsibilities while being mentored appropriately, they'd definitely be out of 'junior' status quickly.

I've met people with far more than 5 years experience who really are still 'junior' when it comes to the ability to program. They might rock at PHP or Rails or Wordpress or whatnot, but mostly are reusing existing libs without understanding how it actually works, and couldn't replicate anything on their own.

The balance the OP needs to find is being able to promote their accomplishments and skills without the usual inflated cockiness that seems to come across in many resumes. What's even weirder is many people I meet aren't like that in real life, but reading their resumes, it reads as if they are. I keep thinking "there's gotta be a better way" then think "I guess there is - word of mouth networking".

I have 2 years of experience, and I started holding the formal title of senior software engineer before hitting that mark - I have also passed on lead engineer roles at multiple well known companies already.

This is not an undeserved title either - I have been praised for strength and volume of contributions, improving code and processes. I am about to be promoted as well. Granted, I am probably a rarity, but it is possible to be quite accomplished in that time span.

Don't take this advice. Don't pretend you have skills that you don't. Also, this guy obviously doesn't know what he's talking about because "Web 2.0" implies social features. The biggest red flag I ever see on a resume is someone incorrectly using Web 2.0 (and anyone who actually knows what it means won't use it).

The description was also vague and contained multiple grammatical errors. Yikes.

Web 2.0 did not originally imply social features. You may understand that now, but Web 2.0 originally meant the use of browser-side programming to create a more "desktop like" experience, together with CSS for snazzy layouts, whereas Web 1.0 is more plain HTML, with flow based on form filling and submission.

For example, if we compare two webmail applications -- Squirrelmail and RoundCube -- we might identify Squirrelmail as "Web 1.0" and RoundCube as "Web 2.0".

If the job meant taking static HTML to Web 2.0, that is clear: the pages were transformed or replaced with a fairly "rich" UI, skipping the stage where you have drop-down lists, checkboxes and submit buttons in a blocky layout.

(What is social features, anyway? "Log in with your Facebook account" or "comments powered by Disqus"? This fluff is simply not applicable in many kinds of professinoal websites! Do you want to see twitter comments underneath when accessing some medical record? "Share your medical history via Google+! Yes/Learn More/Not now" ...)

I apologize to passers-by for how pedantic this is about to get...

First, I don't care how it was coined. I care how I use it now. No modern speaker of language uses all words as they were first used. We use them as they're understood.

Second, while Web 2.0 was coined in obscurity to mean what you describe, it rose to popularity with the understanding of social features[1].

"Social features" simply mean that users can connect to one another and/or generate the value of the site. YouTube is an example of Web 2.0 because it wasn't a publishing platform for established companies as much as a video-sharing platform, where user-generated content was first-class content.

1. http://en.wikipedia.org/wiki/Web_2.0#Web_2.0

Note that this sense of Web 2.0 does not replace the original meaning; it's a different nuance. The word "Web" in that nuance refers to "The World Wide Web" as such, and the "2.0" is just a common trope referring to a new improved something. Meet the new me. Me 2.0, if you will.

"Web 2.0", where "web" refers to "web technology", has not disappeared. Though it's something that the average user might not care about, it's not outdated in the same way in which, say, "sensibility" meaning "sensitivity" is outdated. The people who originally used "web 2.0" are still alive and still use it, for one thing.

Do you also think that this site is using "hacker" incorrectly, because the popular new meaning is "electronic criminal", and has been since at least 1980?

I wasn't suggesting that Web 2.0 has replaced the original meaning of Web. I said that Web 2.0 (meaning a website with user-generated content) has replaced the original, obscure meaning of Web 2.0 (meaning a website with dynamic content).

Your argument that I must disagree with "hacker=geek" because I disagree with "Web 2.0=dynamic" is based on a false premise. I don't care how non-technical journalists use either word. I care how my community (tech professionals) use those words: hacker=geek and Web2.0=social.

With your level of experience, you should not make the mistake of jumping on, or off, a particular technology stack's bandwagon. Look, lots of worthwhile work happens in .net, and in Java, and in Python, and even in older languages. When the technology in a stack has inconvenient or irritating aspects, that's a big opportunity: if you're good at dealing with that stuff, you're valuable.

What counts? Getting stuff done, not indentation styles.

If you don't know SQL, now, while you're looking for work, is the time to learn it. Give yourself the assignment of building a program and maybe a web site to browse some kind of open data. (Historical weather measurements? Nursing home quality scores? Political donations? There's tons of open data available on the net). Get your system working.

For $10 a month, you can subscribe to an online books service like Safari Books. That should allow you to overcome the somewhat chaotic state of online teaching materials for popular software stacks.

The way you describe things reminded me of a fairly recent Hacker News post: https://news.ycombinator.com/item?id=8630972

It's a about a blog entry of a self taught programmer who was changing technology stacks back and forth, I suggest you to read it.

As he concludes, the answer is to focus. IMHO if you don't enjoy .Net and you want to change it, go for it; you will need motivation along the way and if certain technology doesn't give it to you then learn something that does and STICK to it.

Sorry dude.. you are looking at this the wrong way. This is an industry where you do not need a job to get experience, you just need to RTFM (of whatever tool you've adopted), learn it up and down, and find a way to apply it. That's what you get from experience. After that, people will hire you
I know people get fed up of C#/.NET because it feels so separated from what's going on in the rest of the development world and because the (relative) lack of open source community makes it seem quite dull. But it's a great language and a decent framework and with Microsoft open-sourcing so much of it a few weeks ago it could be on the verge of becoming more exciting.

If I were you I'd consider trying to get involved (or at least following developments) in the official .NET on Linux projects. That way you don't have to learn a new language but you can move away from Windows and Visual Studio. And try to get some practice deploying Linux .NET applications in Docker - I'd guess that experience will be in high demand in the near future.

First off, read this: http://blog.freecodecamp.com/2014/11/a-cautionary-tale-of-le...

Then, read this ranking of the most popular languages: http://www.tiobe.com/index.php/content/paperinfo/tpci/index....

Figure out what type of development you enjoy. Do you enjoy the backend, the frontend mobile etc. Different languages are good for different things.

If you like APIs and backend development learn java/scala or C#. Python is a really good all around programming language but you'll need JavaScript, CSS to do frontend web development. If you enjoy mobile, then java or Objective-C/Swift is pretty much a must.

Next, what kind of job do you want? If you want an enterprise job then java or C# is what you want. If you want to work for a small company, then many languages will do but Python is again a good bet.

If you want to be a freelancer, then probably you should pick a skillset to get really good at, whatever you happen to like, and stick to it. That's how you'll stand out against others and be seen as an expert.

I personally don't believe in knowing 5+ programming languages and claiming to be great at all of them. Pick 1 or 2 as your core, and then dabble in others. Your core languages you should be able to do in your sleep and be good enough to ace any interview.

Most developers need 5-10 years to really get to be engineers and solid product makers. Until then work on teams that are better than you and get as much experience as possible.

Keep doing what you were doing in .NET or something you can take on. Maybe explore some new areas/platforms but only when you have some projects in them. You can learn to deliver product on any platform but change it up when you have the ability or in your free time. Start small in deliverable chunks always and build from there.

I feel that you need to slow down, write sentences into paragraphs, figure out what you want. Be concise.

You are focusing on the 30 year old thing, most developers are their best in their 30s+, so don't believe the hype. Think about it, graduate at 22 or 25/6 with masters if taking that route, 5-10 years of experience puts the best of their industry right at early to mid thirties as the starting point for good developers. Just because VCs want developers before you know your value doesn't mean good developers aren't needed. You need to focus on making yourself better in your eyes. You aren't there yet but you are on the journey and you are thinking about these things so that is a good sign.

Keep working at it, you have time. Right now though since you feel a little lost, just take on a .NET role, or something you can take on, and rebuild your confidence. You can make a product on any platform and you will learn many good patterns and anti-patterns even if that is not the platform you choose in your own projects. What you need right now is experience and some of it may suck but find the good/fun/learning in each adventure.

What I tell most people to do is to build a lot of toy projects. A lot. Ship a lot of code out onto the internet for the world to see.

There are several purposes:

1) Building a lot of things will hopefully help you uncover different problems that you will have to struggle to solve. Hopefully after struggling to solve them, you will gain understanding. Just following hello worlds doesn't really help much. But when you're trying to figure out how to implement a "real-world" product problem, you'll have to figure out how to develop features that don't come for free with whatever framework you are using.

2) Also, don't write everything from scratch. Research what frameworks or libraries might help accelerate your development. Understand the pros and cons of using them.

3) Hopefully as you build more things, they will get better. And then you will have something to showcase to prospective employers. You'll have real code you can share with them. Be humble, get pointers on how you can improve. Bonus points if you have tests too.

4) It shows initiative and interest. I'd imagine these are important intangibles. I'd be very reluctant to hire an engineer who didn't tinker with things at night. (not necessarily all night, every night.)

5) Additionally, taking vague concepts and requirements and turning them into products does take some discipline. Which features will you keep, which features will you cut. How can you change your requirements and still get what you want. It shows that you can do things without being told exactly what to do, or how to do it.

Hope this helps.

2) Also, don't write everything from scratch. Research what frameworks or libraries might help accelerate your development. Understand the pros and cons of using them.

That's the most often ignored advice I've encountered. Most frameworks and libraries are written by actually smart people, or at least by very experienced people. While it may not seem as the best solution for any given problem, they solve many basic things that are just hard to get right on the first try.

I started coding about 10 years ago by writing my own CMS. Then I've found it was built on wrong assumptions and wrote another one. Then another. My thinking was - my needs are very simple, I don't need the whole framework, I will be better on my own knowing every line of my code.

This time was almost completely wasted. I've learned what to avoid but not how to do things right. Also my resume was missing hot keywords recruiters are looking for, since I knew the language but not the frameworks. Usually it's ok for companies to train somebody as long as they have a point of reference ("he knows Backbone so he will learn Angular quickly" - not the best thinking, but that's what I've experienced so far).

My advice is do some initial research, see which framework or language suits you best and stick with it. It takes about a year to find all ups and downs of any given solution and many on the first glance look better/worse than they actually are. Good rule of the thumb is to choose something that is past the first iteration, so the initial problems are resolved but haven't had more than few, meaning that involved people are smart enough to not replace one error with another.

I'm of two minds on this sort of advice. If you don't at the very least understand the core concepts of DOM event handlers and async callbacks and I guess just the DOM tree in general, jumping right into Angular (when you're looking for front end jobs) is doing yourself a pretty big disservice. But as far as just getting a job jumping from hot framework to hot framework probably is just fine...
Yeah, it's tricky. I guess I should amend the suggestions to be:

A) start by understanding the tools and libraries available to you, and how to integrate them to build product/features faster.

B) start to understand what is going on under the covers in those libraries. it's not uncommon that, as awesome as these libraries can be, you'll have to look at their source code eventually to work through some unintended behavior or corner cases.

Some more background would be nice. All I was able to gleam was that you have 2 years experience developing in c# which mainly consisted of converting a legacy code base to an ASP MVC code base. Don't worry about being 30, it just matters what you can do. So, with that being said.

How were you making money before you became a c# developer? It sounds like you might have been programming, but what specifically?

What city/country do you live in?

What did you like about the tech you were using before c#?

What did you like about c#?

What kind of app were you building in c#?

What kind of online articles do you find yourself reading when your mind starts to wander?

What was the vision you had for your life at 25?

How long did you spend writing your resume?

How many jobs do you apply for each week?

How many do you apply for each month?

I just want to get a sense of who you are. If I get that, I'm sure I can offer some good advice as to what tech to invest your time in, and possibly even some actionable steps for you to find work.

This will all work out. Success doesn't care how hard you fall, only how quickly you get back up. So put your fucking rally cap on, cause this about to be a memory.

Cheers

I did IT support for a yr after that I was a market analyst. Then a 2 month opening for an intern came up, which I managed to stretch it to 2 yrs. But the new manager wanted only senior developers on staff and I was out. C# was my first professional language. Before that I did some collage projects and some freelance work on static sites, MS Access based app with VB. C# was not a choice but what the company was working on. I have only developed websites with forms. Basically a fancy CRUD. They is nothing special I see in C# but I liked the intellisense of Visual Studio. My vision for 25 was that, I would have a clear aim. As in, picked a language, domain and stuck to it for atleast 5 yrs. My resume, have been a long time in making. Guess since the last 4 years, my Cv has been the same. Just keep updating it. I apply for about 3-10 jobs weekly, depending on the openings available. As for reading, I usually follow the articles on asp.net and hacker news. Anything with keyword .net, C#, python.
Thanks, I have a much clearer view. A little background on me so you can see I know what I'm talking about. I'm a 12+ year web app developer who specializes in front-end development.

Proficient in:

SQL, Java, Hibernate, c#, ASP.net, ASP MVC + Razor, Entity Framework, Coldfusion, Railo, Visual Studio, IntelliJ, Javascript, jQuery, Mootools, Backbonejs, css, LESS, bootstrap.

Familiar with: IIS, Apache, Tomcat, Maven, Artifactory

Currently Mastering:

knockoutjs, knockbackjs

Dabbled in:

Python, Ubuntu web server, Pylons.

So here are my assumptions about you, and I'll follow it up with advice:

You are not a developer or engineer, you are a hacker. You've probably thought or said something to the effect of "Users don't care what the code looks like, all that matters is that it works". You are probably good at getting things working quickly but given a large project can find yourself weighed down with code debt and that once rapid productivity rate comes screeching to a halt.

I think of programmers as having personality types, and if you match up the correct personality type with the correct tasks, that individual can be very productive. So, if I am correct, you are a hacker. You are best suited for working on prototypes or at custom software shops where getting an initial app launched is way more important than code maintainability.

You have a long background in market analysis, I'm guessing 4+ years, so if you can find a company creating software to aid in market analysis, you could champion yourself as both a developer and domain expert to that company.

Advice:

1) You have sent out roughly 168 resumes over a 6 month period and none of those have resulted in an interview. So either your resume is terrible, or you are applying to the wrong jobs, but I suspect its most likely both. Send me your resume, and I'll look over it with my friend and we'll critique it for you. hnsakes [at] gmail.com

2) Rewrite your resume from scratch, referencing your original resume for content. Your resume should always be coupled with a cover letter that has been tailored to the position you are applying for.

3) Understand the value that you bring and tell the employer how you will help them. Going on my assumptions above that would consist of banging out prototypes or small to medium sized applications quickly.

4) Apply to companies that are looking to start transitioning from people services to technology services. For example, I am currently contracting with a book publisher helping them move from selling books to delivering content via a web application.

5) Apply to custom software shops. They will have projects of all sizes, and hackers typically shine in these environments.

6) Apply to companies providing market analysis services where you can leverage your domain experience to add value.

7) Always apply to companies looking for a .NET / c# developer, don't pick up a new tech stack unless you need to, meaning some company is interested in hiring you but they don't use c#.

Critique:

You think c# is bad, you think visual studio is bad, but you don't have the experience to know why nor were you able to find the good parts in those techs.

Visual Studio is pretty amazing, c# is pretty amazing. The only problem with visual studio is that it is not IntelliJ, the only problem with c# is the web is polluted with poor code snippets due to a disproportionate amount of poor developers in that community compared to others. Building Microsoft based web solutions is just too easy to get started with, and developers tend to plateau pretty quickly as a result.

Entity Framework, is just awesome. I just wish I could code this stuff in intellij rather than VS though.

So this is my initial response. I'd be happy to go into more details over email or in this comment thread. This won't be hard to fix. You will have a job soon enough, you just need to know yourself better, and allocate your resources correctly (fine tuning the jobs you apply for, polishing your resume, and as a last resort working with new technologies after you have addressed the job search techniques/resume).

"I do not have experience due to which I cannot find a job and I cannot get a Job as I lack experience. Its like a dead-lock situation"

Nowadays, whenever a programmer says this a cat dies in the other side of the world. We developers are almost immune to this, because we have what we call open source software and free cloud services doing very specialized tasks. What I mean to say is that if experience is your problem, you should be glad to know that there are ways to gain experience without a job. This is quite easy to do in our field - contribute to open source, do some personal projects for portfolio, or even help out some startup in need of manpower. All these things can be done right now, and reaching out to HN is a good start. Relax, my friend. Just head out and continue on, say, the Python web development path, and pretty soon you will find some arrangement or gig that will get the wheels rolling for you.

You say you're battling to get hired with only two years experience, but now you're wanting to abandon that two years of .Net experience and then go job hunting with skills in which you have no commercial experience. Build on the little foundation, stay with .Net at least until job hunting isn't a problem.
I pretty much agree with what everyone has said. But I'll just emphasize that you should believe in yourself and just try to fake until you can believe in yourself. Like they say "fake it till you make it."

And the only way to make it is to keep going and don't give up. Believing in yourself will help with not giving up. You'll be surprised how much you'd be able to learn by just not giving up. For example, I know this one developer who used to ask these ridiculously stupid questions on stackoverflow. I mean things like you can learn simply by reading the docs. But I've always known him having thick skin and just getting stuff done. Your aptitude can only help you to a certain extent but it is your attitude that can help you achieve great heights. Have a growth mindset and don't worry about not learning fast or what others have done.

You already have experience in .NET so I'm not sure why you are trying to move away from it to a language in which you have no experience at all. You mention the work you did on the simple CMS and praying that it worked. Build on those skills. If you could do it again what would you differently. What methods could you employ so that you didn't have to pray it worked. Read up on webservices so that you fully understand them. Getting good takes a lot of time. Even though I know a few languages and frameworks very well, moving to something new can feel like starting all over again.

The great thing about software is that there are plenty of ways to get experience outside of having a job. Write your own software or develop your own sites that show off your capabilities. Make the source available on Github if you want. Write some blog posts. Help out on Stackoverflow.

Don't over think it or start self doubting. Are you getting interviews? As previously asked - where are you located?

1. You must network. Make the effort to go to local meetups, etc. One problem you have is that you don't have other developers around. Knowing how to market yourself comes with awareness and experience you get by having relationships with other developers. Get out to a local meetup or something.

Without knowing more, in general: 1. If you're able to reduce your salary requirements then look for something that offers you a chance to build skills (sacrifice compensation for now). 2. You may need to relocate for greener fields.

As for tech choices, I think it's more about being with a team (or project) that is actively practicing high-quality code craftsmanship. Languages come and go, but delivering high quality code is a skill that sticks.

Dubai, UAE. No interview calls. That is really frustrating as I do not get any reply for my emails. Atleast, it would be great if they just reply saying what I lack. I know its extra work but I think is the least they can do when they post and ad for a job.
Consider moving to an area with more jobs available.

As for your skills, continue to create on your own. You should know SQL and how to work with memcache or redis. Making an android app is good but if your career path is more towards web development keep toying around with that technology as well. Ideally you could build something and include it on your resume.

As nolite said, pick a language and stick with it. You need to learn one language inside and out and then you'll be able to pick up other languages that much easier.

And lastly, don't sell yourself short! You have experience, you are excited about this work and willing to learn, then you will do a great job. Let that show through when you interview. Tailor your resume to fit the job description you are applying for. Your resume gets you an interview, the interview gets you the job.

I know SQL.
As others here have pointed out, you don't give us a lot to go by. But here are some points that leap out:

1. If you find Java hard to understand, and not just unappealing too your tastes, do you really understand C#? You may need to focus on basic understanding, no matter what language you choose.

2. Android has a steep-ish learning curve and can punish an incomplete understanding harshly. For just one example, apps and components of apps have a lifecycle you can't just gloss over.

3. What's wrong with the market for C# developers? I don't think picking another area of concentration will help. You may need to get some certification or course completion that shows you have a specific level of C# expertise.

IDK anything about the job market in the UAE but I have an acquaintance in a position very similar to yours (self-taught .Net webdev with some years of experience) and my advice was to go into mobile development. You say you're doing some Android development. Stick with that and apply for those positions. If you publish something in the Play store, much better since you'll have something to show.

Use your knowledge (as limited as it might be) on web services as a leverage (all mobile apps use some sort of web service) and exploit it.

Also, try to apply to positions in consulting firms, since those usually grab the cheapest option and allows you to gain some real world experience.

The main thing I'd recommend here is this: start building up an online portfolio.

Get yourself a GitHub account if you haven't already done so and start contributing to one or two open source projects. Submitting pull requests or patches to existing projects and having them accepted is one way of getting yourself noticed.

Start answering questions on Stack Overflow. Start a blog. Leave comments on other people's blogs.

Things like these can compensate considerably for a lack of workplace experience.

These are in no specific order and I haven't tried them. But, sounds like you might benenefit from some structured training:

http://www.thinkful.com/ https://www.codementor.io/ https://www.bloc.io/

A great way to gain more experience is to contribute to open source.

One way would be to join the Debian mono group to help improve the C#/.NET stack in Linux Mint (they pull packages from Debian):

https://wiki.debian.org/Teams/DebianMonoGroup

Similar teams exist in Debian for many all languages.

> I am 30yr old software developer with 2 yrs experience as a ASP.net C# developer.

That's it? Your only development experience is that? No school or anything of that sort?

There is a backstory missing: how did you get that ASP.net C# job with zero experience?

Not-an-expert-disclaimer here.

First of, believe in yourself. This sounds clinched, but what I mean that you should do is dare to take on more responsibility.

Presumably you don't advertise yourself as 'experienced' when applying for the job openings because you feel you won't be able to add value the the company you're applying to. I presume you don't trust yourself to be able to complete the tasks the company will ask of you and that you refuse to have the company lose money because of you.

The solution, in my opinion, is to inflate instead of deflate what you've done. Even if you yourself don't believe it amounted to much: having 'built a custom cms' on your cv will, if phrased the right way, sound like 'experience' to potential employers. You're not lying when you do this. You _have_ built that CMS, and even if it seemed simple it still counts for something.

I can honestly say that I've written accounting software for the marketing department of a certain company. On my cv this sounds impressive, and I've actually done it. In reality it came down to 500 lines of (very ugly)VBAv6 code in excel. Do I think it's the best work I've ever done? No, but I did do it.

Next, perhaps you don't realize this, but after a certain point the language you program in matters less and less. You see what's important in programming is not the languages that you know but the paradigms that you've mastered and the intuition you develop for doing things in a certain way. In C# you've learned object oriented programming. This experience is much more valualbe to you than knowledge of C# itself. With you having played around in Java, C#, Phyton it sounds to me that you've sampled allot of different ways of getting stuff done with programming.

And you do _know_ this, even if it seems so simple to you, putting on your cv 'two years experience with OOP' is true and a valid way of advertising yourself. Allow yourself to advertise the 'generic' programming skills you've learned with C# when applying for openings that require Java. You're not lying, and you'll see that you can live up to the challenges your future employer has in store for you.

When I wrote that VBA application I hadn't written a single line of VBA in my entire life, and while the source is a mess (I don't envy the person who needs to fix something in the future...) the program does work.

You _must_ trust yourself to be able to tackle the problems that could be thrown your way by your employer. That way you won't feel guilty when applying for a job and you can say that you are, in fact, experienced, which you are.

You say you don't have any senior software developer friend. Aren't there any opportunities for networking in Dubai? Meetups etc.?
Have you considered focusing your job search on systems administration, while continuing to develop your programming skills?
Try harder, look for a job in start-ups and at-least for one year just do good work instead of looking for package.
some people (caugh caugh rent-the-runway) describe a junior developer as this: http://www.indeed.com/viewjob?jk=d399f4767bd2e859&q=Junior+F...

pretty silly

Where are you located?
Dubai, UAE
Would you consider moving?

If you could move to San Francisco, you most certainly would get a job, junior or not. Then improve.

Surely you understand how unrealistic this is. I mean, it's so unrealistic that "unrealistic" is almost a comical understatement. Why not just go all the way and say, "If you could just win the lottery and grow a set of beautiful, angelic wings, you could be a very wealthy, flying programmer."
If your sloppy grammar and spelling are anything to go by, perhaps your issue lies with inattention to details.
You should consider the fact that not everyone on Hacker News is a native english speaker before judging someone based on their spelling and grammar.
Quite an ignorant reply to a foreigner who's native language is obviously not English.