Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am a self taught programmer. I have only 1+ year of experience in development. Majority of my knowledge is gained by reading books and from little bit from the engineering degree.

Currently I have no go to guy or person to discuss ideas / solution. I am their go to guy and they are not interested in the idea of the solution they just want it to work. So can people who are already there have they done it on there on i.e using internet and books or they have been cultured into the role?

share|improve this question

closed as unclear what you're asking by ozz, MichaelT, ChrisF Jan 18 '14 at 13:17

Please clarify your specific problem or add additional details to highlight exactly what you need. As it's currently written, it’s hard to tell exactly what you're asking. See the How to Ask page for help clarifying this question.If this question can be reworded to fit the rules in the help center, please edit the question.

What do you mean by "good?" I've been in the workforce 30 years now, and I have always been on my own; I've never had the benefit of a mentor. If you manage to find one willing to make the time, good for you. – Robert Harvey Jan 17 '14 at 16:03
@RobertHarvey In 30 years, you've never had someone use their experience to guide you to finding solutions on a semi-regular basis? – Steve Evers Jan 17 '14 at 17:43
@SteveEvers: Not one-on-one personally, no. Most of my mentorship has come in the form of books, blogs and podcasts. – Robert Harvey Jan 17 '14 at 17:45
@RobertHarvey That's a shame. A good mentor can be as simple as a smart smoking buddy that likes to talk shop. – Steve Evers Jan 17 '14 at 17:46
Yes and No - You can not improve without response of a programmer (Note: It must not be a mentor, being lonely and connecting to a chat channel could do it) – Dieter Lücking Jan 17 '14 at 18:44

Maybe. It all depends on "the one".

My view on software engineering is similar to that of any other skilled craft and I'm a huge proponent of Software Craftsmanship movement. Just like with any other skill, if you want to get good at making software(or houses, sculptures, swords... etc), you need to practice. That's why some people will tell you, you just need 10k hours and they won't be wrong. However...

There is an expression that "practice makes it perfect," but there's also another expression, "perfect practice makes it perfect." If you don't know what you are doing and you keep repeating incorrect action for a full year, what you acquired is a bad skill that a more experienced person would tell you that you shouldn't be doing.

In most other professions, having a mentor when you first start off isn't an option or a choice but a requirement and I think it is very unfortunate that in software engineering field we do not have that. I've seen numerous times (and been there myself) where a completely fresh graduate joins the team and he is simply given a project and then asked, "when do you think you'll have it done". People are thrown in with full expectation that they will "just pick it up" and that is not the case. It takes a lot of practice and a lot of trial and error to truly pick up the skill (any skill).

A while ago I had a discussion with my manager and he was upset with one of our senior developers (who had about 10 years on top of my 15). This guy's code quality wasn't meeting certain standards but he was (still is) a really smart guy and actually did a lot of good stuff on our team. My manager exclaimed, "he has 20+ years of programming experience, he should know better!!" To which my reply was, "Why? I went to the same college he went to, and school didn't teach me this stuff. Did you tell him what he should know? Did anyone before you? I know I didn't."

Can you become a master-level craftsman without any mentorship? Probably but it also depends on you. Not everyone will.

What I do know is that I got lucky enough to have an absolutely awesome mentor whom I met at my first co-op and I ended up working with that guy together for 7 years. In the first 6-12 months, he ingrained in me the skills/view on my work/view on management/view on software that I use to this day on daily basis. In turn, I've had 3 co-ops work for me in the past and at the end of their blocks all of them came into my cube and thanked for an eye-opening experience.

If you can find a mentor, never turn away the opportunity. If you can't find one at your current job, consider looking for a different one. Think of finding a mentor now like a interest on the savings account. What you invest now, will be paying off every single year from now and for the rest of your career.

That's a good book list, you linked to. Of those books, I would definitely recommend you take a look at these ones:

  1. The Pragmatic Programmer
  2. Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin
  3. Peopleware by Demarco and Lister
  4. Agile Principles, Patterns, and Practices in C# by Robert C. Martin
  5. Refactoring: Improving the Design of Existing Code
  6. The Mythical Man Month
  7. Design Patterns by the Gang of Four (only after you read 2 and 4)
share|improve this answer
Thank you for taking time out and replying. That provided me with a very good insight. Out of the above 7 book number 3 and 4 are only remaining. Design Patterns I have finished "reading" recently. It seems you have been very lucky. First you found mentor and then 7 years neither you nor he left. AWESOME – theHumbleProgrammer Jan 18 '14 at 3:47

Having a mentor is great, especially when you are first starting out, but even better is to be a member of a large dev team that uses source control and enforces code reviews.

In my career, I've spent a lot of time being the resident expert in my niche. Nothing helped me to grow as a developer more than the time I spent on a large dev team (more than a dozen developers), where I worked on the same code as the other developers. Code was not allowed to be committed to source control until the changes had been reviewed and approved by at least 1 other developer. Frequently 3 or more developers would review the changes.

With a single mentor, you get their bias and style. But, with several peers, you really get to see a diversity of styles and practices. From a single mentor, you can increase your depth of knowledge, but from a large team, you can increase your breadth and depth of knowledge. From a code review, you are forced to justify the reasoning behind your design or your approach to a problem. In doing this, you better understand your own code! In a code review you also get suggestions of better or alternative ways to do things.

When you review someone else's code, you'll see code you don't understand. The process of understanding another developers code is always educational. This is where I've learned my favorite coding techniques.

I find that I learn well when I explain how to do something (which is why I participate on stackoverflow). It's great to be on a team using some technologies that you know very well, and others where you are not as strong. This gives you opportunities to teach and learn. And, you'll find that in teaching, you also learn.

Seems to me a mentor can be hard to come by. But, joining a large dev team should not be nearly as hard.

share|improve this answer
Thank you for taking time out and replying. Your solution is a very practical one because finding a good programmer is hard (I conduct technical interviews) so odds will be even higher for mentor. So learning from peers is likely the best solution as of now. – theHumbleProgrammer Jan 18 '14 at 3:30

Not the answer you're looking for? Browse other questions tagged or ask your own question.