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.
[+] [-] peterhi|11 years ago|reply
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.
[+] [-] eps|11 years ago|reply
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.
[+] [-] smt88|11 years ago|reply
The description was also vague and contained multiple grammatical errors. Yikes.
[+] [-] OliverJones|11 years ago|reply
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.
[+] [-] echo272|11 years ago|reply
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.
[+] [-] nolite|11 years ago|reply
[+] [-] gfmyork|11 years ago|reply
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.
[+] [-] canterburry|11 years ago|reply
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.
[+] [-] drawkbox|11 years ago|reply
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.
[+] [-] christopherslee|11 years ago|reply
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.
[+] [-] fridek|11 years ago|reply
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.
[+] [-] unknown|11 years ago|reply
[deleted]
[+] [-] Sakes|11 years ago|reply
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
[+] [-] nxi|11 years ago|reply
[+] [-] phektus|11 years ago|reply
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.
[+] [-] disputin|11 years ago|reply
[+] [-] zeeshanm|11 years ago|reply
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.
[+] [-] Hates_|11 years ago|reply
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.
[+] [-] mackraken|11 years ago|reply
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.
[+] [-] nxi|11 years ago|reply
[+] [-] legohead|11 years ago|reply
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.
[+] [-] nxi|11 years ago|reply
[+] [-] Zigurd|11 years ago|reply
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.
[+] [-] eldelshell|11 years ago|reply
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.
[+] [-] jammycakes|11 years ago|reply
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.
[+] [-] sharp11|11 years ago|reply
http://www.thinkful.com/ https://www.codementor.io/ https://www.bloc.io/