Perhaps I'm getting cranky in my old age, but I find it extremely irritating that there are programmers out there who do not attempt to use more than one programming language in their jobs.
It's a fucking 21st century, people, it's not that hard to learn a programming language enough to work in it.
Developing software in the Real World is different from all the theory. I'll attempt to explain my insights into this process, based on 25+ years in the industry in a number of different companies.
Friday, October 12, 2018
Followup on "NOW we need to test"
As expected, the test plan I wrote has been soundly ignored. I provided it, and the priorities are nowhere near that product. My originakl individual assessment has been deemed satisfactory.
I'm so glad that I spent the time writing up a test plan.
I'm so glad that I spent the time writing up a test plan.
Thursday, September 27, 2018
Saw it on a button
When I was in college, I had the hobby of collecting pin-on buttons with geek-related sayings. Stuff like "God is real unless declared integer" and the like.
During one exam, I wore one that read "I'm surrounded by idiots!"
I feel that today.
At The Job, we are realizing that a departed contractor left a lot of buggy code in his wake. As we find the problems, we are fixing them. One of them involved code that filtered out excess notifications based on time and some other factors. The other dev was done with his tasks and so he started looking at the code. We realized that it was not filtering correctly, so he started making fixes. When he was done, he asked how we were going to test it.
This is not a n00b, this is a dev with 25+ years experience. Sure, the project is fed gigabytes of data per day, but we already know that we can test a binary in isolation. So the obvious way to test it is to create a data file with the desired qualities for the filter (pass and block values) and run that file through the code.
So it seems to be to be blindingly obvious that this was the way. But it did not to him. So I ended up writing the generator and running the tests, showing hiom the results, waiting while he fixed things and put the new binary on the test machine, etc, etc, etc.
Sheesh.
I was trying to let him run with a section of the project as his domain, where he would be the SME, and I would stay out of it, but he just does not seem to cotton to the idea that he needs to be proactive and look ahead of the one thing he's currently doing.
All I gotta say is that my boss better put me in for another level bump ASAP
During one exam, I wore one that read "I'm surrounded by idiots!"
I feel that today.
At The Job, we are realizing that a departed contractor left a lot of buggy code in his wake. As we find the problems, we are fixing them. One of them involved code that filtered out excess notifications based on time and some other factors. The other dev was done with his tasks and so he started looking at the code. We realized that it was not filtering correctly, so he started making fixes. When he was done, he asked how we were going to test it.
This is not a n00b, this is a dev with 25+ years experience. Sure, the project is fed gigabytes of data per day, but we already know that we can test a binary in isolation. So the obvious way to test it is to create a data file with the desired qualities for the filter (pass and block values) and run that file through the code.
So it seems to be to be blindingly obvious that this was the way. But it did not to him. So I ended up writing the generator and running the tests, showing hiom the results, waiting while he fixed things and put the new binary on the test machine, etc, etc, etc.
Sheesh.
I was trying to let him run with a section of the project as his domain, where he would be the SME, and I would stay out of it, but he just does not seem to cotton to the idea that he needs to be proactive and look ahead of the one thing he's currently doing.
All I gotta say is that my boss better put me in for another level bump ASAP
Thursday, September 20, 2018
Sure, NOW they decide we need to test
So today the PM gets insistent in the daily that I need to write up a test plan for the rework of our DB population module. It was written incorrectly by a contractor who left recently, and there seems to be lingering blamestorming on how we did not know he was not doing the right thing (hint: when you have 5 priorities and only 3 developers, you end up having to assume everyone knows enough to ask for help).
Now, I get the desire for testing, but until this very week, nothing, I mean NOTHING has had an official test plan on this faux Agile fustercluck of a project. So why does this suddenly need a test plan? And who is going to test it? The DB relationship are part of the complexity of this part, and I'm the only one who has any idea of what those relationships are.
I swear, it's going to turn into me teaching someone the whole mess including how to test this, all the while being given other work, because someone else is 'doing the testing'
Now, I get the desire for testing, but until this very week, nothing, I mean NOTHING has had an official test plan on this faux Agile fustercluck of a project. So why does this suddenly need a test plan? And who is going to test it? The DB relationship are part of the complexity of this part, and I'm the only one who has any idea of what those relationships are.
I swear, it's going to turn into me teaching someone the whole mess including how to test this, all the while being given other work, because someone else is 'doing the testing'
Friday, August 03, 2018
Thinking outside the paradigmatic box
I've probably blogged about this previously, but I'm too lazy right now to search.
I've determined one crucial thing about good older programmers - they are not at all afraid to exit the programming language and use the system around it.
I have been helping a junior programmer with some tasks - he inherited a program partially built, and I was one of the builders. It's a multi-program system, with data being processed by a number of Python and C programs in sequence. He's been tasked with converting everything into a single program, and is having issues with getting the data from some steps into the next ones.
Where the box is, it seems, is in trying to stay totally inside Python. He asked for my help, and my immediate answer when he described the issue, was "Just redirect the output to a file, and read that file in as the next step. It avoid having to worry about the string/list formatting"
He seemed reluctant, and eventually found the step needed to convert the data formats (which I would have done in a similar fashion, but I would not have had the initial problem for more than 3 minutes before converting the data)
So one of the skills to develop is that of seeing where the box edges are, and that they are often just lines you can cross
I've determined one crucial thing about good older programmers - they are not at all afraid to exit the programming language and use the system around it.
I have been helping a junior programmer with some tasks - he inherited a program partially built, and I was one of the builders. It's a multi-program system, with data being processed by a number of Python and C programs in sequence. He's been tasked with converting everything into a single program, and is having issues with getting the data from some steps into the next ones.
Where the box is, it seems, is in trying to stay totally inside Python. He asked for my help, and my immediate answer when he described the issue, was "Just redirect the output to a file, and read that file in as the next step. It avoid having to worry about the string/list formatting"
He seemed reluctant, and eventually found the step needed to convert the data formats (which I would have done in a similar fashion, but I would not have had the initial problem for more than 3 minutes before converting the data)
So one of the skills to develop is that of seeing where the box edges are, and that they are often just lines you can cross
Thursday, July 12, 2018
Mega Low Maniacal (venting)
Ok, folks, I'm starting to get concerned that I'm either losing all estimation of my skills, or going full-bore diva.
I'm currently part of a small team (2 devs, one PM), and I'm finding it increasingly frustrating that I seem to be the only one on the team who has any idea of how to develop a software system. If anything needs doing, I seem to be the only one who has any idea how. If there is a bug in code, my suggestions as to cause or how to proceed are ignored, then turn out to be correct. Members of another associated team make suggestions that for the most part are either already in place (sometimes obviously), or are totally irrelevant.
The other dev is very good at doing one thing at a time at best, and while they do create test harnesses for the code, does not seem to grasp the need to live testing *and* actually take the step to do it. I have to push for the live tests. If a stumbling block appears, all progress halts and it's a "what do I do now?"
I appear to be the only one looking at the system as a whole, and the only one taking action to do the things that need to be done. Several times we have had the production build fail due to some issue with the other dev's code or build process, and I get to diagnose and fix that.
And I'm not even bitching about the housekeeping issues that I'm handling, which, due to the draconian security policies, are almost entirely manual, because we are not trusted with admin access to the systems.
I'm currently part of a small team (2 devs, one PM), and I'm finding it increasingly frustrating that I seem to be the only one on the team who has any idea of how to develop a software system. If anything needs doing, I seem to be the only one who has any idea how. If there is a bug in code, my suggestions as to cause or how to proceed are ignored, then turn out to be correct. Members of another associated team make suggestions that for the most part are either already in place (sometimes obviously), or are totally irrelevant.
The other dev is very good at doing one thing at a time at best, and while they do create test harnesses for the code, does not seem to grasp the need to live testing *and* actually take the step to do it. I have to push for the live tests. If a stumbling block appears, all progress halts and it's a "what do I do now?"
I appear to be the only one looking at the system as a whole, and the only one taking action to do the things that need to be done. Several times we have had the production build fail due to some issue with the other dev's code or build process, and I get to diagnose and fix that.
And I'm not even bitching about the housekeeping issues that I'm handling, which, due to the draconian security policies, are almost entirely manual, because we are not trusted with admin access to the systems.
Monday, June 25, 2018
Use what's already there, dammit
Venting post today.
Cow-orker and I are trying to debug performance in a multi-threaded application. I already added threads initially, so there was an example in the code to base anything new on. Of key significance is the casting of some references to arguments.
Yet cow-orker adds a new set of threads, and not only does not use that for the new code, but removes it from the part that it was already in.
So the code compiles under the old compiler mode, but fails when we get to the official build machine.
And the correct example was in the code to begin with.
Cow-orker and I are trying to debug performance in a multi-threaded application. I already added threads initially, so there was an example in the code to base anything new on. Of key significance is the casting of some references to arguments.
Yet cow-orker adds a new set of threads, and not only does not use that for the new code, but removes it from the part that it was already in.
So the code compiles under the old compiler mode, but fails when we get to the official build machine.
And the correct example was in the code to begin with.
Subscribe to:
Posts (Atom)