top | item 8673907

Ask HN: Confused software developer

38 points| nxi | 11 years 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.

55 comments

order
[+] peterhi|11 years ago|reply
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.

[+] eps|11 years ago|reply
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.

[+] smt88|11 years ago|reply
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.

[+] OliverJones|11 years ago|reply
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.

[+] echo272|11 years ago|reply
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.

[+] nolite|11 years ago|reply
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
[+] gfmyork|11 years ago|reply
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.

[+] canterburry|11 years ago|reply
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.

[+] drawkbox|11 years ago|reply
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.

[+] christopherslee|11 years ago|reply
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.

[+] fridek|11 years ago|reply
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.

[+] Sakes|11 years ago|reply
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

[+] nxi|11 years ago|reply
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.
[+] phektus|11 years ago|reply
"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.

[+] disputin|11 years ago|reply
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.
[+] zeeshanm|11 years ago|reply
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.

[+] Hates_|11 years ago|reply
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.

[+] mackraken|11 years ago|reply
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.

[+] nxi|11 years ago|reply
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.
[+] legohead|11 years ago|reply
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.

[+] nxi|11 years ago|reply
I know SQL.
[+] Zigurd|11 years ago|reply
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.

[+] eldelshell|11 years ago|reply
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.

[+] jammycakes|11 years ago|reply
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.