2

I'm a newer developer who has worked on some personal projects as well as non-profit/charity projects. However, I seem to be the most "senior" developer in my circle, meaning, most guys come to me for help and when I need some help, they can't help me.

As I don't have a full-time programming job, I'm sort of lost in terms of how to get some professional-grade code review. In other words, before I go full-hog into applying for full-time jobs, I want the opinions of a few reliable/reputable people on how my current code looks, where I could improve, how they would rate me as a programmer, etc... Because currently I have no clue in the slightest and even if I did, it's not just my opinion that matters anyway. The other issue is I have no idea whether my portfolio projects are "good enough" or are just little joke projects in terms of what an employer is looking for. I keep thinking I have to work on bigger projects, but that could go on forever. The thing is, I'd rather do this with someone local in person and not a random stranger on the internet as there is no way to judge whether that person's advice is credible or is in line with where I am trying to go if that makes sense.

Is this type of service offered by programming consultants? I can't be the only one facing this issue. As a self-taught programmer, this is very difficult because people often say put portfolios and projects up, but I have no way to judge whether my code is "good" or not other than my own perception off what I read from books such as Clean Code by Uncle Bob and Code Complete by Steve McConnell. Of course some of this is subjective, but that doesn't mean there isn't some sort of professional standard that can't be attained. Thanks for your advice.

PS: I also hear a lot about "mentoring" yet I've not seen how one would go about getting a mentor at all. I would love a mentor, is this a paid service or is this some type of relationship someone typically has with a more senior co-worker in the context of an office? I'm talking about a real-life person, not a YouTube Channel.

closed as off-topic by Doc Brown, Bart van Ingen Schenau, gnat, Blrfl, Thomas Owens Jan 7 '17 at 13:40

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions seeking career or education advice are off topic here. They are only meaningful to the asker and do not generate lasting value for the broader community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – Doc Brown, Bart van Ingen Schenau, gnat, Blrfl, Thomas Owens
If this question can be reworded to fit the rules in the help center, please edit the question.

  • 5
    The only place in the SE network where you can get a feedback on small pieces of code is codereview.stackexchange. But for getting a job as a programmer, your current code quality is often a minor concern, this depends very much on who is interviewing you. Your problem solving skills, your ability to work in a team and your ability to learn new things (like better coding) should be of much higher importance. But YMMV. – Doc Brown Jan 6 '17 at 7:09
  • 2
    The fact that you even know of this site already puts you among the better developers out there. And the fact that you care enough about your craft that you bothered to ask this question even more so. (Oh, and the fact that you managed to string multiple English sentences into a coherent whole also is sadly the exception rather than the rule.) Coupled with the fact that you not just know about Code Complete and Clean Code but have even read them, I'd say not to worry. If you show that same dedication you showed here during the interview, you will be able to get a good job at a good company … – Jörg W Mittag Jan 6 '17 at 9:32
  • 1
    … with a good team, and the rest will happen naturally. Then, you will be the worst developer on the team. As Pat Metheny once said: "when I was around 14, I started playing in Kansas City with the best players in town. They weren't guitar players - they were piano players, trumpets and drums, but those guys were really my teachers. I was fortunate to learn from playing with great older musicians. Whenever young guys ask me what they should do to get better, I always say try to be the worst guy in whatever band you're in. That's the secret." – Jörg W Mittag Jan 6 '17 at 9:35
  • 1
    @DocBrown: for getting a job coding skills may be totally irrelevant, but I see the question as asking more how to determine whether he is equipped to do the job right. He's not asking for help getting a job. He wants an independent evaluation as whether his contribution once he got the job would be positive. Erdrik's answer addresses that. – jmoreno Jan 7 '17 at 13:42
  • 1
    __I have no way to judge whether my code is "good" or not other than my own perception off what I read from books such as Clean Code by Uncle Bob and Code Complete by Steve McConnell. __ Actually there are a lot of ways: code analysis tools like code climate can be hugely useful; Using linting tools to show various issues. Don't worry about the size of the project so much as the quality of the code that does exist no matter how small. – Michael Durrant Jan 9 '17 at 13:02
3

I've never heard of paid mentoring, and I suppose there are two reasons for that:

  • Being mentored for free isn't that hard, so why paying for it?
  • Paid mentors would be more inclined to consider you as their paying customer, not as a peer. This could lead to the situations where the mentoring would be flawed, such as when negative critique is required (you don't want to critique the guy who pay your bills, do you?)

As for the difficulty to judge how valuable a mentor is, you're right, it's the same problem as judging yourself your own level. There are, however, several techniques which may be helpful.

1. Multiple mentors are better than one

If you've being mentored, always listen to several mentors. Independently of the expertise of a given mentor, there is a narrow border between neutral, objective critique and mentor's own opinions. For example, when I mentor other developers, it is not unusual for me to share my strong opinions on different subjects while I know that those opinions are not shared by the whole community.

For instance, while I absolutely believe that programming projects should follow style rules and those rules should be necessarily enforced during the pre-commit, some talented and skilled developers may be against this practice. This is opposed to concepts which are globally accepted as being true in our industry, such as the fact that a team of one or more developers should use a version control.

In order to not being brought to think that the opinions of your mentor are the absolute truth, correlating the information with the one given by other mentors is essential. Of course, when information diverge, it's up to you to find who's right, or, if all mentors are giving their opinions, which opinion would you like to follow.

2. Mentors' profiles

No one is able to know everything in software development field. Any mentor will share with you her knowledge and expertise based on the languages she learned, the books she have read, the communities she's member of.

Someone who works on daily basis with a functional language will push you to adopt a functional style when working with collections, independently of the language you use. Someone who works on embedded systems and/or software which requires extensive optimization will push you to profile, benchmark and optimize.

Depending on your goals, some mentors may suit you better than others. If you're a web developer, it may be wise to have mentors who themselves are or at least were recently active in web development. If you work on embedded software, web developers may not be the best mentors for you.

3. Reliable feedback on the mentors

Choosing a good mentor is no different than, for a company, choose a good developer. The techniques should therefore be very similar to the ones used by companies to hire people.

  • The CV doesn't mater much. Resumes showed again and again their irrelevance. They are still used as a popular filtering technique by many corporations—mostly by the lack of better alternatives—but it is clear that an impressive CV doesn't mean that the candidate is a good fit (and an unimpressive CV occasionally hides a very interesting person).

  • Focus on relevant elements: open source projects; contributions to the community; blog articles; videos; tutorials written by the person; technologies, protocols, development tools, programming languages the person worked on. All those elements could give you valuable information on a potential mentor. Some elements would only show you the involvement of the person, while others have an additional benefit of peer review. StackExchange, for instance, is particularly interesting in terms of peer review; while not having the benefits similar to the system used in scientific world, StackExchange reputation system could hardly be cheated in order for an unskilled person to gain a lot of points.

  • Communication skills are key. An expert who is unable to communicate his skills effectively is useless as a mentor, and harmful as a member of a team.

7

Although offering career advice is off-topic for this stackexchange, where a freelance developer can get their code reviewed I feel is a good question to ask. Also, it's good that you are asking this kind of thing, curiosity and the desire to improve are some of the best qualities I've found in developers.

  • There is codereview.stackexchange.com
  • The "Open Source" community is a pretty good way to get your code reviewed and find out how well you work in a team.
    • Try taking a look on GitHub for a project you'd like to work on and join in.
    • Start your own project and try to get others invested
  • Friends are often good for quick reviews

Don't underestimate people even if they are worse at programming than you. Their opinion is still worth having.

  • Get them to review your code. Rather than asking if you've done well, ask them if they understand it.
  • Programming is a wide enough area that they could know something you don't
  • They might prioritise things differently and notice something you missed.

Professionally your code should be readable by someone who doesn't have any prior knowledge of the project, someone with rudimentary programming skills, or someone similar. You might even help them learn something, too.

  • I really like this answer. I love codereview.stackexchange.com. I would just warn to be aware that some Open Source projects are known for being tough on the less experienced in some sort of misguided "tough love" method of programming. It's certainly not for everyone. – user1118321 Jan 7 '17 at 3:58
  • Agree, and would like to add that programmers that are 'worse' may still provide insightful pointers in a review. They may know things you don't know. – JBSnorro Jan 7 '17 at 7:45
  • 1
    @JBSnorro: Exactly! That's what I was trying to highlight in the last paragraph. I'll just edit it a little to also reflect your words. user1118321: Cheers for adding the link, I forgot! :) – Erdrik Ironrose Jan 9 '17 at 12:37
0

In addition to what others have said, I recommend seeing if there are any programming groups in your area. I do a lot of iOS and macOS stuff and there are nationwide NSCoder Night's and CocoaHeads meet ups. If there aren't already some, you could start them yourself. Once a month meet at some coffee shop or maker space and pick one person to teach the rest of the group about one topic. It could be databases, graphics, networking, etc. I've learned a lot from these types of gatherings.

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