Culture Change?

  • (2 Pages)
  • +
  • 1
  • 2

15 Replies - 3829 Views - Last Post: 10 June 2016 - 11:23 AM

#1 majikthise   User is offline

  • New D.I.C Head

Reputation: 2
  • View blog
  • Posts: 4
  • Joined: 13-May 16

Culture Change?

Posted 14 May 2016 - 01:03 PM

I love my job, we create real software in the second coolest domain.

However, I believe we need a significant shift in our engineering mentality to produce the quality product our customers expect.
I don't want to go into details, but we do not follow the most basic software engineering practices. I was fresh out of uni when I started, and even then I was shocked at the state of the code base; three years later, nothing has changed and I feed I'm even contributing to the debt.

The question is, can the culture be changed to one that strives for excellence and how do we go about teaching the techincal skills required to obtain this excellence?

Is This A Good Question/Topic? 0
  • +

Replies To: Culture Change?

#2 tlhIn`toq   User is offline

  • Xamarin Cert. Dev.
  • member icon

Reputation: 6536
  • View blog
  • Posts: 14,450
  • Joined: 02-June 10

Re: Culture Change?

Posted 14 May 2016 - 01:18 PM

"The culture" ??

Whose culture? Your company... Your country... The Industry...

Since things are very good and up to date in my company, I'd have to say it isn't an industry problem.

Why I'm trying to say, in a round-about way is... If you know your company sucks, then either fix it or leave for one that doesn't.
Was This Post Helpful? 0
  • +
  • -

#3 majikthise   User is offline

  • New D.I.C Head

Reputation: 2
  • View blog
  • Posts: 4
  • Joined: 13-May 16

Re: Culture Change?

Posted 14 May 2016 - 01:29 PM

I think it's a problem with the company, but I love the place and I want to improve it.

I guess I'm looking for tips on how to lift our standards and skills.
Was This Post Helpful? 0
  • +
  • -

#4 Atli   User is offline

  • Enhance Your Calm
  • member icon

Reputation: 4241
  • View blog
  • Posts: 7,216
  • Joined: 08-June 10

Re: Culture Change?

Posted 14 May 2016 - 01:33 PM

That's simple. Enforce higher standards.

Those that don't know how, educate them.
Those that do know, and don't deliver anyway, fire them.

It may help to hire somebody specifically for this purpose.
Was This Post Helpful? 3
  • +
  • -

#5 tlhIn`toq   User is offline

  • Xamarin Cert. Dev.
  • member icon

Reputation: 6536
  • View blog
  • Posts: 14,450
  • Joined: 02-June 10

Re: Culture Change?

Posted 14 May 2016 - 03:30 PM

*
POPULAR

In the Army we said "Lead by example".

So what example are you providing to lead others?

I've always liked the idea of "Leave everything better than how you found it." It applies to every code file you open... Every camp site you visit. Every buddy's car you borrow.

I've got team members that only do just enough to meet the ticket description and no more. I try to do more... give more... If it means an extra hour then so be it. But it means people notice my work stands out. I'm a bit of a mouth even at work and I say to those guys "... but do you want to be a bit more proud of what you turn in? ..." etc. After a while it starts to take root, at least in some guys. Some are just lazy and hopeless. So you pick your battles.

When you get the chance to lead a new project, establish the 'better way' to do things at the onset; right from the start. When your project stands tall, does more, looks better, costs less, has less bugs, shows a lower cost of maintenance and expansion... then people pay attention. They ask you how you did it. They want you to do it again. Then they want you to implement it on a department-wide basis. And so on...

Changing the course of a company is like changing the course of an asteroid... If you do it early enough you only need to make a few small adjustment and let the new course develop over time. The course you're company is on will remain its course until you start applying a small amount of thrust in the right direction - and keep applying that push toward a new course over time.
Was This Post Helpful? 5
  • +
  • -

#6 astonecipher   User is offline

  • Senior Systems Engineer
  • member icon

Reputation: 3062
  • View blog
  • Posts: 11,750
  • Joined: 03-December 12

Re: Culture Change?

Posted 14 May 2016 - 03:46 PM

The problem with all legacy systems, is coding standards were not 'standard' upon their creation. The best you can hope for, is to leave each method a little better than the way you found it.

My company is working on rebuilding certain product lines through out the next two years. The hardest one, will be its flagship that started the company. It is 10 years old and was written by people that the company could afford at the time. It sucks! It is scheduled to move into rebuild phase the end of the third quarter with all feature upgrades stopping the end of the second quarter.

It's not a culture issue, it is a crappy developer issue. With no one to enforce standards, those standards are easily over looked, if known at all. This is also my issue with college coders. Just because it works, does not mean it is correct or maintainable.
Was This Post Helpful? 3
  • +
  • -

#7 jon.kiparsky   User is online

  • Beginner
  • member icon


Reputation: 11768
  • View blog
  • Posts: 19,977
  • Joined: 19-March 11

Re: Culture Change?

Posted 14 May 2016 - 03:57 PM

The Klingon speaks truth. Start with your own code. Decide what matters to you, and live up to that. Spend a while just doing that. What might matter to you? All manner of things: good test coverage, short functions, good naming, consistent style, small, precise commits with good commit messages, you name it. Pick the standards that you want to stick to, and as long as they're more strict than the ones in place now, follow them until it's a reflex.
Then, start asking for these things in code review. (you do do peer code review, right? right?) The phrase we use on my team is "not a blocker, but...". This means "I'm not going to raise a fuss about this, but I'd rather it was done this other way instead". Some people will pick up on this, and be happy that you're leading the charge. Get them on your side. Talk about standards, and what your standards would look like if you all ran the world. This might mean relaxing some of your standards, or adopting ones that aren't your first choice - make some compromises, if it gets you a few more people sticking to the compromised standard. Once this starts happening, the codebase will start getting nicer, and people will notice, and then you're on the way.

View Postastonecipher, on 14 May 2016 - 05:46 PM, said:

It's not a culture issue, it is a crappy developer issue.


I think there is a real sense in which it is a culture issue. A team that agrees on an explicit set of standards will do a better job of living up to those standards (even if they're not very good developers) than a team which hasn't come to that agreement (even if that team is composed of good developers)

On the other hand, you're right in so far as one of the things we mean when we say "good developer" is "adheres to coding standards"
Was This Post Helpful? 3
  • +
  • -

#8 jon.kiparsky   User is online

  • Beginner
  • member icon


Reputation: 11768
  • View blog
  • Posts: 19,977
  • Joined: 19-March 11

Re: Culture Change?

Posted 14 May 2016 - 04:04 PM

Quote

My company is working on rebuilding certain product lines through out the next two years. The hardest one, will be its flagship that started the company. It is 10 years old and was written by people that the company could afford at the time. It sucks! It is scheduled to move into rebuild phase the end of the third quarter with all feature upgrades stopping the end of the second quarter.


This is a common problem, and I'm not convinced that stopping new feature development is the right way to address it.* My current team inherited a pretty lousy codebase a year ago - no tests, every line violated PEP-8, functions running to hundreds of lines, you name it, we had it. Freezing new feature development was not an option. Instead, we set a baseline standard for new code - all new code would be covered at 100%, zero style errors allowed, etc - and started including tech debt tickets for the things that really needed dedicated work. Over the course of a year, everything that we touched improved dramatically, and we're now at 74% coverage, with PEP-8 down to a few hundred errors in files that we don't really ever touch. It wasn't easy, and we did have to push back on a few feature requests, but we were able to make a massive difference while still serving the stakeholders, and that was pretty good.
I felt good enough about this that we're about to embark on a similar plan with the side project - once I get the platform and test runner upgraded to decent stuff, we're going to be making major architectural changes by doing feature development. It's going to be awesome! (or something...)

(*Not that I think this is your decision, of course, but it's how things went for us over the last year.)
Was This Post Helpful? 3
  • +
  • -

#9 astonecipher   User is offline

  • Senior Systems Engineer
  • member icon

Reputation: 3062
  • View blog
  • Posts: 11,750
  • Joined: 03-December 12

Re: Culture Change?

Posted 14 May 2016 - 04:11 PM

Our issue is a severe case. We have evaluated multiple possibilities to prevent something so drastic, but with the abysmal code base for this particular line, one change affects hundreds of thousands of line of code. We also included the whole, all this code reflects the bug fixes that have taken course over the years. Root causes we a bad architecture from the beginning and piling it on from there. The DBA team has also started working on their side of the table, no pun intended, because of our 'rocket ship' style ERD we cannot use an ORM to streamline even a portion of it. No one is looking forward to this, but it is at a tipping point if something is not done about it soon.
Was This Post Helpful? 0
  • +
  • -

#10 jon.kiparsky   User is online

  • Beginner
  • member icon


Reputation: 11768
  • View blog
  • Posts: 19,977
  • Joined: 19-March 11

Re: Culture Change?

Posted 14 May 2016 - 04:33 PM

Yeah, that sounds like a tough case.

The hard part with something like this, and the reason I resisted the code-freeze solutions in our case, is that it's really hard to maintain stakeholder investment and involvement in a product that's gone dark on them. Good luck!
Was This Post Helpful? 0
  • +
  • -

#11 xclite   User is offline

  • I wrote you an code
  • member icon


Reputation: 1430
  • View blog
  • Posts: 4,282
  • Joined: 12-May 09

Re: Culture Change?

Posted 15 May 2016 - 06:30 AM

I think the advice to lead by example is sound. Some people will appreciate it and pick up. However, you should be prepared for the possibility that people just don't want to do better. You can spend a long time carrying these improvements on your back with no support (and likely even pushback in the form of comments on performance reviews or straight up arguments). At that point you have to decide if you want to lower your standards or leave.
Was This Post Helpful? 0
  • +
  • -

#12 majikthise   User is offline

  • New D.I.C Head

Reputation: 2
  • View blog
  • Posts: 4
  • Joined: 13-May 16

Re: Culture Change?

Posted 16 May 2016 - 11:55 AM

I've been trying to lead by example, and it is noticed, I'm just worried it isn't enough.

I was wondering if anyone had any luck with training?

We did do an "Advance Java" course, but everyone got stuck on lambdas and subtleties between different mutexes and didn't learn anything useful.

Has anyone done a course or know of some lesson materials that teach solid software engineering practices?
Could it be possible to start a group where we discuss a different topic each week?
Was This Post Helpful? 0
  • +
  • -

#13 jon.kiparsky   User is online

  • Beginner
  • member icon


Reputation: 11768
  • View blog
  • Posts: 19,977
  • Joined: 19-March 11

Re: Culture Change?

Posted 16 May 2016 - 12:47 PM

If you're concerned about style, look at style. It's all well and good to have skills workshops, if people want them, but don't get distracted by language features if you want to make changes about coding standards.

I suggest you start with a book called Clean Code by Bob Martin. It's a pretty deep treatment of what you're looking for. But better still would be to start with the things that concern you - the specific pain points that you're experiencing that make you want to change things. What are they? Can you explain why your way is better than their way? If so, you're on the right track. If not, maybe you can work out your thoughts here before you try them on your colleagues.
Was This Post Helpful? 1
  • +
  • -

#14 majikthise   User is offline

  • New D.I.C Head

Reputation: 2
  • View blog
  • Posts: 4
  • Joined: 13-May 16

Re: Culture Change?

Posted 16 May 2016 - 01:31 PM

There are some specific points:
* Overuse of singletons, which hide dependencies and make testing very difficult.
* Leaky abstractions, there is a downcast on every other line, again testing becomes hard.
* Depending on concretions not abstractions (hmmm, could affect testing).
* Very deep dependency hierarchies.
* Tendency to extend a class to get one bit of functionality and try to suppress the rest.

Yeah, I've heard good things about clean code, I'll order a copy and have a read.
Was This Post Helpful? 2
  • +
  • -

#15 PennyBoki   User is offline

  • D.I.C Lover
  • member icon

Reputation: 55
  • View blog
  • Posts: 2,345
  • Joined: 11-December 06

Re: Culture Change?

Posted 22 May 2016 - 05:13 AM

One thing one can do in such environment is maybe getting some of the people from the team that are interested in improving their work to a beer and have a discussion about the way things are being done, or better yet watch some of the Bob Martin's videos and then talk about it. I think uncle Bob's Clean Coder complements well the other recommendation by jon.kyparsky. Books like this really affects the way people do what they do.

This post has been edited by PennyBoki: 22 May 2016 - 05:14 AM

Was This Post Helpful? 1
  • +
  • -

  • (2 Pages)
  • +
  • 1
  • 2