The first company I worked for was small and provided no initial training of any kind. I did a lot of googling and customized the solutions I found in Google for the problems I had to resolve. This became a habit. I didn't learn best practices or Standards of coding or business process etc. Feeling that the next job could only be better, I treated this job like a chore.

After a year, I got an offer from another company, my current company, which was paying me awesomeness. This company is too small and also didn't provide me any training (not that they had any obligation).

I started learning on my own but I feel I am not up to the mark. I know small things about many things but not everything about anything in particular (Jack of all King of None). I don't know in and out of the system and I am always on guard of saving my reputation.

After having two years of experience all I know is 40-50 % of Python, 30-40% of (jQuery, HTML, CSS, SQL Queries, Apache, Django) each and how to install/uninstall Ubuntu.

I have two years of experience but I don't feel like I deserve what I am earning or what I am doing is up to the quality. What will happen after two more years. I will still be slapping solutions copied from Google and wont know in and out of something for sure.

I sometimes feel I should start all over again but I am afraid that no company will hire me and teach me best practices or standards after having TWO years of experience.

How to become expert if I don't have opportunity at my work to learn from more experienced peers?

  • 1
    @Stark, I edited your question (original was more like a rant), because at least you aware about the need to learn best practices - which is hard for self-learner with little support from more experienced peers. Hope you like my edits. Jun 4, 2014 at 23:30
  • @Stark: see lots of advice about advancing your career: workplace.stackexchange.com/questions/tagged/career-development Jun 5, 2014 at 0:55
  • Is there some reason why you are expecting your employer to give you this? Why can't you find other developers and do side projects to develop your skills?
    – JB King
    Jun 5, 2014 at 4:59
  • This is sooooo me, trying to find a way to improve but I don't know how :(
    – Shina
    Jun 6, 2014 at 22:16
  • 1
    In my view this is not a question about WHAT to learn but rather HOW to learn when working in a workplace with few peers. As such I believe it's on topic.
    – O. Jones
    Jun 11, 2014 at 1:28

1 Answer 1


There's a few things to keep in mind; But before I get to solutions, I'll point out that as long as your workplace is satisfied with your work and are paying you - you're doing well. Not everybody knows everything, and the fact is there are many self-taught programmers out there, many of whom have the opposite mindset (they "know it all" when they really know nothing).

Also, the fact that you are at least vaguely aware of your skill-set is also good, because you know when you need to do research; as opposed to others who may force a suboptimal solution.

What it will come down to is self-education, or off-hours classes. I'll skip night-classes and focus on free/cheap ways to get better.

Books, books, books!

Buy books! And read them. Re-read them. Look for books which talk about design patterns, as it's a big portion of what self-taught individuals lack. Also, most of classroom work is derived from books you can very easily locate and study.


Read the raw documentation for the programming languages you are working with; also read any commentary supplied by others. Focus on syntax and language constructs first to ensure you have a rock-solid base, specific functions/libraries can come later.

Work on Personal Projects

Start working on personal projects with slightly more complicated requirements than you are able to do. Aggressively research when you hit walls. When you are finished a project, re-factor your code multiple times to find more efficient solutions.

Look at / Contribute to Open-Source

This is a biggie. Almost the biggie. Research open-source programs, and opinions on their codebases. When you find open-source projects which people routinely state have great and modern code-quality: download and examine what they did. Find solutions they used and compare them to similar solutions you've used. This was the single biggest factor in my own personal education. Note that not all open projects have good code, and popularity != quality; see what people say about the code. Not to insult Wordpress or Ogre, but those are good examples of popular projects with not-so-great code.

I'll note that there's a saying: "If you're a developer in open-source and you don't have a job, it's because you don't want one"; and that's pointing out that a lot of very good developers not only get good because of open-source and it's constant feedback, but they get noticed because your work is public.

Find Patterns in the Languages You Use

Different languages take dramatically different approaches and have different limitations; when you read the documentation to languages, or the wikis, you'll find out they had very specific goals/ideas. When you understand 'what they were thinking' when they made the language, you can begin better predicting where your gaps in knowledge are. For example, "PHP" has a function for almost everything - so whenever you go to write a function, double-check to see if PHP has a similar function already. In a language like C or C++ you'll find it's library heavy, and want to steer your research towards that.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .