Advertisement
If you have a new account but are having problems posting or verifying your account, please email us on hello@boards.ie for help. Thanks :)
Hello all! Please ensure that you are posting a new thread or question in the appropriate forum. The Feedback forum is overwhelmed with questions that are having to be moved elsewhere. If you need help to verify your account contact hello@boards.ie

Companies where 'proper' methodologies are used

Options
  • 13-05-2016 1:15pm
    #1
    Registered Users Posts: 710 ✭✭✭


    So, as background, I am 26, out of college(CS degree) 5 years or so since 2011. Since then I have only worked at startups, once as basically the core (and only) developer in a 2 man team, and now as 1 developer in a team of 4(all remote from each other and me) with a non-technical founder/manager(who is here in Dublin).

    I recently read the wikipedia article on cowboy coding and doing some other reading, and basically, it terrified me. It is exactly what I have been doing.
    fanned by management that controls only non-development aspects of the project, such as the broad targets, timelines, scope, and visuals (the "what", but not the "how")

    Is basically what I have always been doing. Almost never does anyone look at any of the code I write, and I don't look at code others write, we each 'own' large chunks of functionality across the front and back end layers(so it's sliced by feature rather than layer).

    I'm getting increasingly unhappy with this, and am terrified of the effect this is having/will have on my career. It has all just begun to crystallise recently. I want to move, to a larger team, with a technical manager, with code reviews and CI and unit tests and actual design and planning, where I can be an efficient cog in a machine and learn how software should actually be developed in a team in the real world- actual 'software engineering' and and not just slinging code together then changing it based on my boss's whim of a new feature he thought of this morning.

    So my question is, can you name any companies like that in Dublin? That practice good engineering, where as a developer my managers care about and understand the 'how' and the technical details of the product. I have been looking at available listings, and I see a lot of startups with tiny teams, or teams that are just being set up so there is no existing culture in place, and that's the kind of thing I want to avoid. I worry that the kind of development culture I am thinking of doesn't exist in Dublin, or if it does, that I am not qualified to join such a place. Would appreciate any discussion/thoughts on this topic :o

    I am thinking that I may even need to take a break and train myself, read all these books about software lifecycles and things, it just terrifies me that if despite the fact I have always been employed and my bosses have been very happy with me, and I have been writing code, I could still be unemployable when I leave here because I haven't learned how to work effectively on a team.


Comments

  • Registered Users Posts: 7,500 ✭✭✭BrokenArrows


    How about suggesting these proper methodologies to your management? Maybe they will be more than willing to either promote someone to manage it or they can hire someone new.

    At as basic level everyone should have a code reviewer, even if its just a quick glance to make sure you're not doing anything insane or stupid or to spot simple issues like spelling mistakes.

    Since there is only 4 of you code reviews should be easy to organise.

    Every single checkin we do needs to be code reviewed by my peers and i review other peoples work.

    If you're still learning then reviewing other peoples code can be very useful. You see the way they do things and learn from it, or you see something they did wrong or you know a better way and you tell them and they learn.

    If your boss is reluctant to change then start making a list of the problems that have ocurred due to bad practices.

    1. How many times has there been a unintended side effect to implementing changes that your boss thought of this morning?
    2. How many times have bugs been traced back to simple mistakes?
    3. How many times have the requirments been so vague that the resulting product wasnt what was asked for?
    4. How many of the above issues would be resolved by proper design documents and discussing the documents with the other engineers for input?
    5. How many of the above issues would be resolved by code reviews?

    If your boss is not technical but business minded then he probably worries about money a lot. So if you tell him in the past 30 days due to the above issues we lost 8 developer man days (2 days per employee fixing bugs) which cost the business 8 x €150 per day. He might start caring.
    Or if something is just badly designed then you might end up spending a lot of time supporting the product which again is wasted money.


  • Registered Users Posts: 710 ✭✭✭MrMorooka


    How about suggesting these proper methodologies to your management? Maybe they will be more than willing to either promote someone to manage it or they can hire someone new.

    Because I know that our boss has no interest in this beyond lip service. Another member here has tried to introduce Redmine into our flow, but it didn't work because at the end of the day the boss just prefers to verbally give us direction in our regular status meetings and there is no buy-in, again, because management is not interested in actually managing.. I want to leave. We are also like 5 months past a deadline now and just keep on doing waterfall iteration finding problems with our "design", with no end in sight I can see.

    I was afraid of that response too, the "just do it yourself" answer. It's valid I suppose, but I don't have the confidence or experience or desire to change things. I just want to work somewhere where this culture exists so maybe in the future I can have the ability to introduce it elsewhere.
    At as basic level everyone should have a code reviewer, even if its just a quick glance to make sure you're not doing anything insane or stupid or to spot simple issues like spelling mistakes.

    Since there is only 4 of you code reviews should be easy to organise.

    Every single checkin we do needs to be code reviewed by my peers and i review other peoples work.

    Sounds great, so where do you work?
    If you're still learning then reviewing other peoples code can be very useful. You see the way they do things and learn from it, or you see something they did wrong or you know a better way and you tell them and they learn.

    Exactly, which is why I would love to find somewhere that does code reviews with buy-in and management support..


  • Registered Users Posts: 710 ✭✭✭MrMorooka


    I very much appreciate the plan you have edited in about making the case to our boss, but I don't have the confidence in my own abilities to make those arguments. I don't want to be the only one bringing them up, because then I will be blamed and expected to fix them. Given that the rest of the team is remote and we only see them once a year, and I'm the only one here seeing the boss every day, I don't think it would be a good environment if I stopped working my(behind deadline) work to talk about it. He'd just placate me/pay lip-service and say we can change it after we finally release this product(that has been perpetually 2 weeks away from launching for months).

    The points are all totally correct of course, we are completely wasting time and money here. But I don't want to be the leader who fixes all these things, I am not at that level of competence right now- I want to get experience in a more regimented environment and get the hell out of the pseudo-leadership positions in small startups, because I am not capable of it.

    So again, that was my question, what kind of places are out there where I can see how things are done so I can avoid getting into situations like this again, where I can learn. There are obviously the big companies like Google/Facebook where I imagine there is proper engineering discipline, but I'm assuming I can't get into those places, so are there any lesser-known consultancies etc?


  • Registered Users Posts: 6,035 ✭✭✭Talisman


    MrMorooka wrote: »
    So my question is, can you name any companies like that in Dublin? That practice good engineering, where as a developer my managers care about and understand the 'how' and the technical details of the product. I have been looking at available listings, and I see a lot of startups with tiny teams, or teams that are just being set up so there is no existing culture in place, and that's the kind of thing I want to avoid. I worry that the kind of development culture I am thinking of doesn't exist in Dublin, or if it does, that I am not qualified to join such a place. Would appreciate any discussion/thoughts on this topic :o
    Have you heard of Intercom?


  • Registered Users Posts: 710 ✭✭✭MrMorooka


    Talisman wrote: »
    Have you heard of Intercom?

    Wow, no, I hadn't, but that looks like a really interesting place. Sounds perfect really.. I don't have any experience with the technologies they mention in the roles they are recruiting for(and I have to get over my pervading feeling of "there's no way I'm good enough to work there"), but I will definitely read up on them and consider an application. Thanks for pointing them out.


  • Advertisement
  • Registered Users Posts: 6,035 ✭✭✭Talisman


    What technology stack do you use?


  • Registered Users Posts: 710 ✭✭✭MrMorooka


    The main project I work on uses a MongoDB-Spring-AngularJS/Bootstrap stack. Looking at the technologies they use, I could probably pick up Ember pretty well from being familiar with Angular(which I really like and find it easy to get stuff done with), but RoR is pretty much an unknown to me. Need to put some time into researching things.


  • Registered Users Posts: 8,408 ✭✭✭RedXIV


    Just as an aside MrMorooka, if you look for large, multi-national and established companies, the vast majority have solid processes already in place or are rapidly moving towards this.

    Also, I wouldn't worry too much about the learning curve for joining another company. The fact you consider this important now means you would probably seamlessly enough transition into a team using best practices


  • Registered Users Posts: 6,250 ✭✭✭Buford T Justice


    OP, you're not the only one crying out for a bit of structure in their job. I have exactly the same problem


  • Registered Users Posts: 65 ✭✭schaffer


    The other end of the extreme are companies that latch onto a new buzz word such as "Scrum" and "Lean" and try to implement it company wide without realising how it works.

    Most companies will have some structure in place or will let the engineers self organise to do this. Sounds like your manager is a control freak that trusts nobody.

    I would look for almost any other software company. When you interview ask them what they do (methodology used) and what issues they have with it. Ask them how and why it works for them. Most people will be honest and tell you want works and what does not. If they say everything is perfect keep on looking....


  • Advertisement
  • Registered Users Posts: 768 ✭✭✭14ned


    MrMorooka wrote: »
    Is basically what I have always been doing. Almost never does anyone look at any of the code I write, and I don't look at code others write, we each 'own' large chunks of functionality across the front and back end layers(so it's sliced by feature rather than layer).

    This isn't necessarily a bad thing at the very beginning of a R&D project. Once a piece of software starts getting prepared to be used by others, as an absolute minimum you want an end of sprint code peer review. Once it's in the hand of paying customers, you'd want per commit/push peer sign off (i.e. it must be signed off by two others before it enters master branch). And for mature software, you want every change to be QA tested, possibly even by a dedicated QA team in a different building to yours, in a testing regime which cannot physically take less than three days to complete.

    A big mistake many startups make is sticking too long with loose software development practices they think make them "agile" or "flexible". It leads to ever increasing hidden maintenance costs which bog down growth and will eventually kill the platform. One of the most noticeable characteristics of all the big tech multinationals which became big from small startups is that they successfully either retired their early platform with a complete rewrite, or they invested enormous resources in bringing an early code base into something long term maintainable. 95% of startups fail to ever achieve this successfully, and therefore don't become big.
    MrMorooka wrote: »
    I'm getting increasingly unhappy with this, and am terrified of the effect this is having/will have on my career. It has all just begun to crystallise recently. I want to move, to a larger team, with a technical manager, with code reviews and CI and unit tests and actual design and planning, where I can be an efficient cog in a machine and learn how software should actually be developed in a team in the real world- actual 'software engineering' and and not just slinging code together then changing it based on my boss's whim of a new feature he thought of this morning.

    Good on you. Most suppress this feeling.

    BTW your boss sounds like he is suffering from "Founder's Curse". It's very common at startups, and likely unavoidable at startups. I've seen in it many, many forms during my career.
    MrMorooka wrote: »
    So my question is, can you name any companies like that in Dublin? That practice good engineering, where as a developer my managers care about and understand the 'how' and the technical details of the product. I have been looking at available listings, and I see a lot of startups with tiny teams, or teams that are just being set up so there is no existing culture in place, and that's the kind of thing I want to avoid. I worry that the kind of development culture I am thinking of doesn't exist in Dublin, or if it does, that I am not qualified to join such a place. Would appreciate any discussion/thoughts on this topic :o

    I think you're asking the wrong question. Even in famous tech multinationals, there is a huge gulf between the best teams and the worst, and the worst will be far worse than any startup you've seen. Google for example has some shockingly bad dev teams, but the average hides the mediocrity.

    So don't ask "which employer?". Ask "which team?" and how to identify such teams and ways and means of joining them (hint: you're going to have to do some networking).
    MrMorooka wrote: »
    I am thinking that I may even need to take a break and train myself, read all these books about software lifecycles and things, it just terrifies me that if despite the fact I have always been employed and my bosses have been very happy with me, and I have been writing code, I could still be unemployable when I leave here because I haven't learned how to work effectively on a team.

    As a professional remote working contractor, a lot of my business comes from startups, usually internal R&D startups within big established multinationals. I am one of those engineers who do their best work mostly working alone, so startup type environments where a jack of all trades master of none suits me well, and being a remote worker isn't an impediment.

    That may be the case for you too, but maybe you need a stint in a conventional team maintaining mature software to find out. My point is, it's very good you're open to improving your daily software practice, but it could be you really are best in startup type environments. Find that out first before making any long term commitments.

    Niall


  • Moderators, Computer Games Moderators, Technology & Internet Moderators Posts: 19,240 Mod ✭✭✭✭L.Jenkins


    MrMorooka wrote: »
    So, as background, I am 26, out of college(CS degree) 5 years or so since 2011. Since then I have only worked at startups, once as basically the core (and only) developer in a 2 man team, and now as 1 developer in a team of 4(all remote from each other and me) with a non-technical founder/manager(who is here in Dublin).

    This Manager needs to take a step back from the Tech side of the Business and simply aim to provide some direction to the Coders. If s/he wants changes make, then this should be discussed once a week at most.

    One of the Four Developers should take the lead as project and work towards Continuous Integration, to ensure there are no breakages between the Front and Back end. A question, who carries out testing or is anyone designated to test the System as a whole when significant changes have been made?
    Is basically what I have always been doing. Almost never does anyone look at any of the code I write, and I don't look at code others write, we each 'own' large chunks of functionality across the front and back end layers(so it's sliced by feature rather than layer).

    55215185.jpg

    The above in a nutshell. You all need to do some form of a review. How do you resolve an issue if all of you never review each others code?


Advertisement