38

I am currently working for a 2 person company, as the solo primary developer. My boss gets the clients, mocks up some png design templates and hands them over to me.

This system has been working fine and i'm really enjoying it.

The types of projects I work on are for small - medium sized businesses and they usually want a CMS system. Developed from scratch i'll build a customised backend for the client to add/edit/remove categories, tags, products etc and then output them to the front end according to the design template handed to me. As time has gone on, the projects have increased in complexity, with shopping cart / ordering features and other common e-commerce type features.

Again, this system has been working fine and i'm really enjoying it.

My issue is my personal development as a programmer. I spend a lot of my spare time reading programming blogs, checking through stackexchange, reading suggested programming books (currently on 'The Pragmatic Programmer', really good so far), doing brain exercises (lumosity.com and khanacademy math problems), doing lots of physical exercise and other personal development type activities.

I can't help but feel though, that I'm missing out on feedback, critique. My boss is great and never holds back on praise in regards to my work, but he unfortunately is either to busy to check my code, or to be honest, I don't think it's one of his specialties and so can't provide feedback.

I want to know what i'm doing wrong and what i'm doing right. Should I be putting that much logic in the controller, am I modulating my code enough etc.

So what I have done is developed a little 'Family Budgeting' app and tried to do it as cleanly and effectively as I currently know how.

What i'm wanting to know is, is there somewhere I can submit this app, and have some seasoned developers provide feedback. It's not just a subsection of my code like 'codereview.stackexchange' appears to require, it's my entire workflow that I want critiqued.

I know this is a lot to ask, and I expect the main advice given will be to look for a job within a team, which is certainly something I will look into later down the track, but for now I want to persist with my current employment situation, but just don't want to develop too many bad habits.

Let me know if I can provide any further information to help clarify, or if this isn't the right place for this type of question I apologise in advance. Didn't want to use reddit as I felt this community fosters more well thought out responses.

3
  • 3
    As a formerly not that long ago junior developer I find it a bad idea to let a junior developer run wild like this. Not to mention a PNG mock up hardly gives you the info required to write an effective CMS. Plus why constantly write CMSes when there are off the self setups way more effective than a solo developer could write in any reasonable time for a client including micro CMSes.
    – Rig
    Sep 17, 2012 at 1:17
  • 2
    Well initially he had his own in house CMS which had been built in Coldfusion. I learned the language through trial and error and we completed a few projects using it. Over time though I convinced him it would be a good idea to move towards PHP, as I had more experience using it and there is a larger community to rely on ( having no superiors I rely on google heavily ). Since then I have been gradually building a reusable modular CMS in ciBonfire. It is coming along really well, cataloging system pretty much complete. Problem is i'm learning as I go, we have clients to please.
    – hoppipolla
    Sep 17, 2012 at 1:27
  • 2
    @OliverHyde "Problem is i'm learning as I go, we have clients to please." This won't be any different elsewhere either.
    – user29079
    Dec 17, 2012 at 15:14

7 Answers 7

21

You are on the right track to improve your skills, and it's understandable that you are uncertain about the reliability and enterprise-readiness of your code.

This is a normal process to go through for a junior developer, and your interest to improve is very important, as it is a key to one day becoming a rock-star developer.

As a reference to learn best practices, I would recommend joining open-source projects which are hosted free for passionate/curious programmers. They would really help you understand how to use best practices and how to decide on application design. In addition, try to get involved in open-source project development, as it will boost your self-learning and improvement dramatically.

I would also recommend attending local community events for software developers . You may find some of these groups at communitymegaphone.com. Talk with local buddy programmers, they are mostly good people who would not mind helping a colleague.

3
  • Hmm, maybe I will look into joining some open source projects, not sure where to start :/ Have to go do some research. Regarding the community events, I have been going to local meetups, in New Zealand they are scarce compared to what it looks like you get in the states but do occur and are very helpful. Thanks for the feedback.
    – hoppipolla
    Sep 17, 2012 at 4:14
  • Definitely get involved with other real people looking at your code. There is no replacement for that. Sep 19, 2012 at 15:23
  • Yeah i'm tidying up my 'personal budget' app and will submit it for evaluation maybe on redit or on some other community forums.
    – hoppipolla
    Sep 23, 2012 at 0:08
9

As you gain more experience you can certainly go back and review your previous projects/code to see where you went wrong. Hindsight is a beautiful thing. I know for a fact I've looked at code/documentation I wrote x ago and realised where I went wrong and where I could have improved.

The fact you read blogs, books, SE, etc. should be giving you greater insight into programming as part of your own personal development and the trial and error and the evolution of your projects and code should certainly be evidence of the fact that you're improving. Self critique can be a very good thing.

Having said that, having the critical eye of another developer always adds value and can provide opinions/options that you may not have thought of. Although I don't know of any particular site that you can dump a full project for a code review - you could put snippets of what you consider suspect onto codereview.stackexchange for their perusal and comment, then take that feedback on board and apply it elsewhere where appropriate.

Alternatively, you could write some opensource stuff and throw it up on github (or equivalent). The open source community will certainly critique your work and improve it where they see fit.

At the end of the day, if the products you are producing work as intended, meet the business requirements and are maintainable - you're doing something right.

For conceptual programming questions, patterns, etc. You can always post those questions here on PSE and for code implementation issues on SO.

1
  • Cheers, I think maybe I will break my budget app down and post some snippets on codereview.
    – hoppipolla
    Sep 17, 2012 at 4:12
3

Le me share my opinion, some words of wisdom and some questions for you to reflect upon.

Being an experienced programmer I have found over the years that best code is the one that is simple (look at KISS concept)and easier to be modified by another programmer.

Also, leaving adequate space for the code not to be congested (breathing space) and evenly structured. Use a well known naming convention for your variables, giving them understandable names (that another programmer can understand) and writing comments that are to the point, not too much and not too little.

If you follow the above you are already on a good road.

Moreover, since developers are something like architects I will give you a very important saying that you should reflect upon;

  1. “Perfection is achieved, not when there is nothing left to add, but when there is nothing left to take away” – Antoine de Saint-Exupery.

and

  1. "Striving for excellence motivates you; striving for perfection is demoralizing" - Harriet Beryl Braiker.

However,

  1. "Many events, roughly 80% of the effects come from 20% of the causes" - Pareto principle

With the above I want you to understand that there is a fine balance between effort and effect, cost and quality.

And the questions to reflect upon;

  1. What do I like to be doing in five years ahead from now?
  2. Will the effort improving my coding skills benefit my professional career in the long run?
1

You may wish to check out https://codereview.stackexchange.com/

That would be a great place to get feedback about your code or design from seasoned professionals.

3
  • Yeah, I suppose the crux of my question was, is a fully fledged app suitable to post there, or is there somewhere else I can do this. It seems like codereview is more targeted as snippets of code to be examined. Basically provide a link to the github project and let them loose. I'm tidying it up today and will search around for some community forums to post the link to. :)
    – hoppipolla
    Sep 23, 2012 at 0:11
  • 1
    All at once might be a lot for one developer to chew off at a tme. meta.codereview.stackexchange.com/questions/537/… says try a piece at a time. It wouldn't be suitable for codereview se but high level design documentation o some sort might be helpful to a reviewer looking at your codebase for the first ime Sep 23, 2012 at 4:48
  • @OliverHyde If you post one source file, lets say one of the most intricate ones, then you will get feedback on that file that applies to the whole project. This will be a good way to get feedback on your program language and coding style. If you are looking for feedback on the overall program design, you could (according to the FAQ) post them to this very site.
    – user29079
    Dec 17, 2012 at 14:30
1

Continue to read books, blogs and Stack Overflow Q&A. If you want to improve yourself in a more social way, why not engage work on an open source project? I don't mean create your own project, but work on an existing one.

As you are the only developer in this company, I imagine that it would be possible that someday, you will hire somebody else. Tell yourself that this day, the guy will have to read your code. Do you already write some documentation about your tool? Keeping in mind your work can be read by other people is a good thing for solo developers and help you to make better code.

1
  • 1
    Yeah that's what I have begun doing with my coding now. My boss has suggested he may look at hiring an additional developer next year....bet get on top of my documentation :)
    – hoppipolla
    Sep 23, 2012 at 0:09
1

I'm in a similar situation as you, been hired as the sole programmer for a 5 person company, and only one of them is directly involved with the applications I am developing/adding to. Luckily, I did not have to create anything from scratch but up until now only modified applications my predecessor built. In doing so, I believe I have already improved myself by recognizing what parts of his code were good, what parts were bad and how one could improve them.

Reading code is a huge part of improving your own coding, so above all I suggest you search yourself an open-source project, read code, understand it, and try to judge what is good, what is bad and what could be improved. Maybe even write a code-review about it on your blog.

Cheers!

1
  • Yeah cheers! I've working here awhile longer now and have found myself a good rhythm of using online code-review websites and self review.
    – hoppipolla
    Apr 7, 2013 at 21:04
-1

Leave. Find a new employer where you will work in a larger team of developers, including some shit hot guys whom you can learn from.

You clearly have all the right motivations in wanting to.

1
  • 4
    This shouldn't be the first option. The OP is enjoying his job and he has apparently also got a decent boss, which seems rare nowadays. Before jumping, consider that you may end up with a job that you don't enjoy, with a bad boss, and no guarantees that you will actually learn new things.
    – user29079
    Dec 17, 2012 at 14:50

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