Culture Change - Advice Sought
-
Hi Apologies for the long post, but there is a more directed question at the end of the slightly rambling background. In September, I started working for an offshoot of another company, but since then, our IT departments are merging, and the cultures are completely different. In our office, established for just over a year there's me with bags of commercial IT experience, plus a guy with a PhD in aeronautical engineering, excellent dev & very quick on the uptake working with C# & SQL where possible. In the other office they have been established over 10 years and the IT is doing the job the company needs, but there are no good practices. Some examples :- Virtually all development is in Python, which is run as a mass of scheduled tasks. There is one particular task that runs around lunchtime to pick up all the submissions from the previous day, and another to pick up the same class of thing to mop up what has come in today runs at around 5pm. Each is a separate python script with a couple of classes declared at the top (which are declared in virtually every script I have seen), followed by around 1000 lines of code mixing in database access, processing logic & composition of output XML in a single block of code with nothing split out for readability. The two scripts differ in four lines - they don't appear to have heard of parameters. Also, they don't appear to have heard of stored procedures; I have seen scripts where, to get nested information, they run an inline query to get a set of data, then walk the set in Python & fire a separate query to get related information for each row. Did I mention that they have no form of source control? I really need to change the culture in the other office (I do have my boss's support in this). I started by going in there & demonstrating a bit of separation of concerns using classes in Python and unit testing, then leaving a copy of Clean Code with the guy who seems to be the main trusted developer who people look to for advice, but it sat on his desk unopened for 2 weeks. On the plus side, a young guy (just 18, left school at 16, started in the warehouse & moved into development purely because he showed an interest in it) emailed me to say he hoped it was OK that he had taken the book home at the weekend to read, and is picking up C# with remote assistance from me. He's mega-keen & will probably make an excellent developer. There are other developers who also seem willing to learn, and they have all said that that the guru is very set in his
-
Hi Apologies for the long post, but there is a more directed question at the end of the slightly rambling background. In September, I started working for an offshoot of another company, but since then, our IT departments are merging, and the cultures are completely different. In our office, established for just over a year there's me with bags of commercial IT experience, plus a guy with a PhD in aeronautical engineering, excellent dev & very quick on the uptake working with C# & SQL where possible. In the other office they have been established over 10 years and the IT is doing the job the company needs, but there are no good practices. Some examples :- Virtually all development is in Python, which is run as a mass of scheduled tasks. There is one particular task that runs around lunchtime to pick up all the submissions from the previous day, and another to pick up the same class of thing to mop up what has come in today runs at around 5pm. Each is a separate python script with a couple of classes declared at the top (which are declared in virtually every script I have seen), followed by around 1000 lines of code mixing in database access, processing logic & composition of output XML in a single block of code with nothing split out for readability. The two scripts differ in four lines - they don't appear to have heard of parameters. Also, they don't appear to have heard of stored procedures; I have seen scripts where, to get nested information, they run an inline query to get a set of data, then walk the set in Python & fire a separate query to get related information for each row. Did I mention that they have no form of source control? I really need to change the culture in the other office (I do have my boss's support in this). I started by going in there & demonstrating a bit of separation of concerns using classes in Python and unit testing, then leaving a copy of Clean Code with the guy who seems to be the main trusted developer who people look to for advice, but it sat on his desk unopened for 2 weeks. On the plus side, a young guy (just 18, left school at 16, started in the warehouse & moved into development purely because he showed an interest in it) emailed me to say he hoped it was OK that he had taken the book home at the weekend to read, and is picking up C# with remote assistance from me. He's mega-keen & will probably make an excellent developer. There are other developers who also seem willing to learn, and they have all said that that the guru is very set in his
First, the bad news. Without support from Management, changing the culture is impossible. Having said that, incremental changes are possible. For example, start with things that have obvious benefits, like a version control system. Emphasise the benefits - rollback abilities, change tracking, etc. Then, continue to other tools. Introducing new (to them) ideas such as stored procedures should be postponed until you have built up some credibility with Management in the new company. Good luck!
Freedom is the freedom to say that two plus two make four. If that is granted, all else follows. -- 6079 Smith W.
-
Hi Apologies for the long post, but there is a more directed question at the end of the slightly rambling background. In September, I started working for an offshoot of another company, but since then, our IT departments are merging, and the cultures are completely different. In our office, established for just over a year there's me with bags of commercial IT experience, plus a guy with a PhD in aeronautical engineering, excellent dev & very quick on the uptake working with C# & SQL where possible. In the other office they have been established over 10 years and the IT is doing the job the company needs, but there are no good practices. Some examples :- Virtually all development is in Python, which is run as a mass of scheduled tasks. There is one particular task that runs around lunchtime to pick up all the submissions from the previous day, and another to pick up the same class of thing to mop up what has come in today runs at around 5pm. Each is a separate python script with a couple of classes declared at the top (which are declared in virtually every script I have seen), followed by around 1000 lines of code mixing in database access, processing logic & composition of output XML in a single block of code with nothing split out for readability. The two scripts differ in four lines - they don't appear to have heard of parameters. Also, they don't appear to have heard of stored procedures; I have seen scripts where, to get nested information, they run an inline query to get a set of data, then walk the set in Python & fire a separate query to get related information for each row. Did I mention that they have no form of source control? I really need to change the culture in the other office (I do have my boss's support in this). I started by going in there & demonstrating a bit of separation of concerns using classes in Python and unit testing, then leaving a copy of Clean Code with the guy who seems to be the main trusted developer who people look to for advice, but it sat on his desk unopened for 2 weeks. On the plus side, a young guy (just 18, left school at 16, started in the warehouse & moved into development purely because he showed an interest in it) emailed me to say he hoped it was OK that he had taken the book home at the weekend to read, and is picking up C# with remote assistance from me. He's mega-keen & will probably make an excellent developer. There are other developers who also seem willing to learn, and they have all said that that the guru is very set in his
It sounds like you are on the right tracks. I would say have a look at the the Mikado Method[^] together with unit tests to ensure that you do not break anything on the way. Basically making small changes as you go along adding unit tests to ensure that your changes are correct. I sort of get what you say about stored procedure but I find myself in a situation where most of the business logic is in stored procedures which is a nightmare in its own special way. Also get them to watch the Uncle Bob videos, just as a way to introduce them to good coding practices.
“That which can be asserted without evidence, can be dismissed without evidence.”
― Christopher Hitchens