Project Management Required

I have a lot of trouble ticket assigned to me. We release them to the customer in batches. The development cycle is usually about a month long for each. We have a trouble ticketing system. In that system, each ticket gets assigned to a release. Many of my tickets were not assigned to releases. There are only two future released currently planned.

The big boss said all tickets must get a release assigned in the ticketing system. Okay. I went through and just assigned everything to the next release. Check. But I wonder what they are using that release for? I bet this is used to convey expected resolution times to the customer. Oops.

Realistically there are only a few tickets that I am going to resolve in the next release. I already know that. I don’t get to spend all my time working this new release. I have to support the previous release in all the stages of testing it goes through. I am also taking a vacation next month. All this adds up to some unpleasant surprises come delivery time.

I need to make sure I am not part of the problem. Time to stand up and raise the alarm about this release issue. My team lead said I should just leave the release dates blank, forcing everyone to deal with the underlying issue. That is all good and dandy, but I am tired of getting beat up because my tickets don’t have release dates set.

Analysis Failure

My new team leader asked me to cost a fix to a bug the customer found. I looked up the ticket in our system. Somebody had already done an analysis and provided a design for the fix. I said I could code the fix in 3 days. There were a couple tricks to figure out. But hey. The hard part seemed to be done already. It could not take more than 3 days.

I did some additional analysis first. Took almost a whole day. I lined up each of the items in the report to their sources. Then I started trying to lay out how I was going to code up this mapping. I realized that half of the data was missing from the database.

I tracked down the author of the trouble ticket. She told me that the data was missing now, but would be present in a future release. Oops. I was supposed to deliver a fix now. While I could implement that missing part, that would be a big job. I called my team leader and broke the bad news to him.

My team lead said that commitments were made. Umm yeah. They were made based on someone already having done a design, and that the design was feasible. My lead started looking for ways for us to do a smaller scope of work and declare the problem fixed. This did not look like it would end well.

Continuing Education

I read a post a lot of replies to a Reddit group on computer science graduates. Met a dude there who is an old timer, looking to switch careers into computer science. He said that he is taking an online program at OSU. That is, the Oregon State University. They have a program especially for people who already have a degree in another major.

I checked out the degree. Looks interesting. They have different paces for you to complete the courses. Total cost is $29k. That might seem high at first. But if you think about it being spread over 5 years, that is under $6k per year, or $3k per semester. Still costly but doable. Who knows? I might even be interested.

Back in college, I choose engineering. I really should have done Computer Science. By the time I figured that out, I was pretty far along in the engineering route. Would have seriously extended my graduation date if I switched over to Comp Sci during my junior year. Hindsight is 20/20. However this might be an opportunity to do it all over.

The Non Scrum

I recently joined a newly formed team at work. The whole project was changing how they tracked work. We were going to have a daily scrum. Great. Sounds like agile to me. Been there done that. I got to the first meeting. Was surprised that the team lead was running the meeting and writing down status. Umm. That's not agile.

So what exactly is the daily scrum supposed to be like? Things like this:
  • Developers run the meeting
  • Only developers talking
  • Check to see if on track to meet sprint goal
  • Team members making commitments to each other
  • Developers addressing each other when talking
  • Sharing the big picture of what is happening
Here is what the scrum is not supposed to be about:
  • Not a status update
  • Not the scrum master running the meeting
  • Not interruptions from non-developers
  • Not for the boss to get reports from team members
  • Not developers talking to the scrum master
  • Not a recording meeting
Yikes. What have I got myself into? I have a few ideas. This might be partially some people who have no clue what agile is about. Might also be somebody selling a bill of agile, but not really committing to the real thing. Or it could be somebody with a different methodology, borrowing a lot of the agile terms but meaning something else. Who knows?

LeetCode Getting Downright Ugly

I continue doing LeetCode exercises. Worked on another "Medium" difficulty problem today. Seemed straightforward enough. Find the longest length of any substring in a specified string that does not have any duplicated characters.

This is my practice for C++. Therefore I am using the STL to get more experience with it. Store all substrings in a vector. Write a function to determine if a string has any dup chars using a map. This works for most of the one thousand test cases. But there are a few where LeetCode says my solution took too long.

LOL wut? Some test cases pass in a massive amount of text. I am enumerating all combinations of substrings in there. After I tighten up my code, I guess that my dup detector is just taking too long. Therefore I get rid of the STL map from it. Code is up with straight C arrays. Works fine.

LeetCode Getting Tricky

I decided I would try to LeetCode exercises for practice. Nailed the first one I tried yesterday. It was an easy problem. The one I tried today was assessed as Medium difficulty. At first I thought the problem was easy. It passed the sample test case pretty quickly. Then I saw what the challenge was. They were testing you for huge numbers.

At first I tried to just change my variables from int to long. Nope. Not good enough. Then I tried long long int. Figured they might be testing up to that. Nope. They were dealing with huge numbers. I did not want to implement a big number library. Should not have been a need to copy and paste the code for such a library too.

Then it dawned on me. They were providing the input numbers in a weird linked list format that encouraged the use of big number addition. I did not need to implement the whole big number library. Just needed to be able to add two digits, and determine if there was any carry over to the next place.

These LeetCode problems are tricky. And I have not gotten to a Hard problem yet.

Practicing on LeetCode

I have been reading the Computer Science Careers subreddit recently. There is a lot of talk about how to prepare for job interviews. Many people mention doing problems on LeetCode. I have never heard of that site. I want to interview for another job. Maybe I should be doing practice problems on there too.

So I created an account. Seems like I could proceed without paying for a developer subscription. I went to problem number one. The site was preconfigured to use C++ as the programming language. Does the site just use that because it is a popular language? Or did it figure out I know C++ from my profile?

Had some trouble getting my first entry to compile. The error messages were a bit cryptic. No trouble. I know how to debug, isolating the faults. Got my code to return the correct result for the sample inputs. Then I submitted my solution.

Was a bit disappointed that, although my solution was accepted, 95% of the other solutions executed faster than mine. Nobody told me we would be graded on speed. Next time I will have to optimize my solution.