Q and A with me

Q and A with me

Repost from 2015

I have recently been searching for a new developer job, and in the process, I have had a few questionnaire’s to fill out. So I thought that I would share them as a way to get to know me better.

How interested are you in learning new application stacks or languages?

I have already recognized that I need to add new languages and skills to keep up with the advancements in web development. I do spend some time studying/ learning things on my own time. I love Angular and I have been learning Angular 2/4 recently. I also started a CS101 (I am self taught with no college) which is taught using Python which was my first programming language and I have been enjoying getting to use it again. I would say that I am pretty interested in learning new things and just wish I had more time to do so.

What are your long term career goals?

I always fear this question. I feel as though I have missed out on opportunities because of how I answer it. The most enjoyable role that I had as at a startup that I worked at until they ran out of funding. I was able to build my own team and manage it. This, I think, would be my dream role. That being said, I am fully capable of being a team member. I do love mentoring new developers. I have been directly responsible for bringing a few people into the web development world. As for long term, I am looking for a place to stay. I really thought that I had this at at the startup I was at but that was not the case. I am not one to change jobs and would not be looking now if it were not for my contract expiring.

Are there any topics in computer science you have been or would like to research?

As stated above, am self-taught so I would have to say that I am interested in all of them!

In your ideal work flow how much time would you prefer to spend on maintenance activities vs new development?

Interesting question. In my opinion applications never seem to get to the ‘refactor phase’ as they are continually being updated. There is no question of the value that comes from refactoring but it is always the last thing that is focused on. I would honestly have to say that I think a solid 20% of the time would be ideal for refactoring.

Given limited or ambiguous specifications how do you typically gather information?

I have recently coined the term PDD or prayer driven development. When that does not work, I prefer direct contact. Emails are the last resort as we are inundated with too many emails daily. Slack is my favorite go to for messaging. If after a couple of messages the specifications are not clear, then it’s time for a phone call and/or screen share. Many times it is easier for people to relate something to you if they can ‘show’ you what they mean.

Given a large number of mutually exclusive tasks how would you prioritize them?

I guess this would depend on the business needs. Those are the priorities first and foremost. After that I usually try to look at all of the tasks and prioritize them in a logical manner. If they are all relatively equal, I would probably do the quickest tasks first and get them out of the way.

What is your strategy to learn unfamiliar skills in a time effective manner?

Repetition is the best way for me to do this.

How do you typically assess the viability of your solution to a design problem?

In a world of TDD, I will still answer this with by smoke testing the problem. If it is a UI related thing I might just make changes in the browser dev tools to see if the solution works.

Would you be willing to abandon a solution you have spent significant time on? If so how do you determine when to abandon the solution?

I have had to trash what I was working on and started over before. Deciding when to do that is not easy. You have to take into account the amount of time spent already, and what it would take to change directions. We (we pair program at at my current position) currently have been upgrading Angular 1.3 to Angular 1.6. This resulted in having to change the multi select dropdowns. We ended up trying to use three different libraries before finding the right one. When did we know to try a different one? When the one we were trying would not work for all of our needs.

How would you account for feature breaking changes in a specification after the functionality has been written and tested?

This is one of the biggest issues, in my opinion, in software development. Object oriented programming is the key to limiting the chances of this happening. We are currently reading Sandi Metz’s 99 bottles of OOP. There is no way for us as developers to guess what the future requirements might be or for that matter when the current requirements are changed.

Are you most efficient when tasks are dictated or would you prefer to define your own work flow and priorities?

I prefer to have tasks (user stories etc..) documented and if they are not already prioritized, then I can set my own priorities.

What expectations do you have for the leadership above you, in regards to your professional development?

This is probably the easiest question here. Simply put, give me the tools to succeed and provide feedback whether it is good or bad.

Why do you want to work at Company X?

This is the 4th or 5th time that I started to fill out this form. I never got past this question. This is the ‘interview’ question that kills me right from the start. The short answer is almost always, I do not know if I do want to work for you. For me, the initial interview/contact is like a first date. I am obviously interested enough that I am trying to fill out this form but I do not know if I will like Company X and I do not know if you will like me. Our first date SHOULD consist of a conversation where you tell me why I should want to work there and ultimately; if you even want me to work there.

That being said, Company X is a well know and great learning tool. I have many times found answers to problems on the Company X blog. I have even hired a developer that had just finished your Rails course and he worked out pretty good. Another obvious benefit would be the size and therefor the stability of Company X. I am not looking for a short term relationship, but I am looking for a long term one ;)

Can you give us a brief description (in your own words, no resumes or CVs) of your background?

I started with RoR in 2010 when the company I was working for created a web based routing application in Rails. Needless to say I loved it and keep learning until going full time Rails developer in 2011. I have always been full stack and capable of everything from cutting up a PSD to make the HTML/CSS for the front end thru to server setup and devops. Last year I started to dig into Angular 2 and I am currently using Angular 1.3 on Rails where I work now.

As a manager, what approaches have you used to build and maintain close relationships with your direct reports? Have you found these to be effective? Why/why not?

I feel that my military background has made me a great manager. I also learned that there is a fine line between friend and direct reports. I am a hands on person and lead by example. I am also a great people person and know the difference between telling somebody to do something and asking them to do it. I do walk that fine line where I am friends with those that work for me but that is in the workplace only. Some might not like this technique but it was ingrained in the military; you don’t party with people that you might have to order to do something that might be deadly. While there are not normally deadly situations in programming, there are times when you need that separation between friend and manager.

Please describe your most challenging experience as a manager. What made the situation difficult for you? How did you resolve the situation? What would you do differently, given the opportunity?

The two things that come to mind are the one time I had to fire a developer for lack of skill/productivity and having to keep the balance between the C-level people and/or shareholders and the direction of the team.

Firing the developer was difficult because at the end of the day, people need their jobs. I do not think that I would do anything different though as I had given them ample opportunities to make improvements that went unheeded.

The balancing act between the CEO and the project direction was something that I blame myself for and I also feel partially responsible for the startup that I was working for to have failed. While I did have to take direction from the CEO, I should have pushed back more against things that took more time to build than it was worth. As the team lead (Director of Software Development) it was my job to ensure that we built a great product and went to market in a timely fashion and by not pushing back on the silly things (e.g. numerous re-styling of front customer facing web pages and rewriting copy repeatedly), that did not happen.

Please describe your experience managing software projects. What tools and techniques have you found effective? What tools and techniques have you found to be less than helpful?

I feel that we use Scrum and Agile terms way too often. I agree that they are both software development methodologies but people often get caught up in the term. I feel that “Agile” is iterative development to include continuous integration. The best way to manage being agile is using a Kanban board. I personally love using Pivotal Tracker but I have used many others. Performing daily standup’s to review the stories that are on the board prevents work from being and staying blocked. I am also a big fan of weekly retros to discuss development related things that are necessarily connected to existing work.

Please describe your experience working with a remote team (as a manager or otherwise). What did you find enjoyable? What did you find challenging?

Since 2008 I have mostly worked remotely. Since that time I have had a couple of jobs that were not remote although I did also have a client from 2011-2016 that was remote. I have also managed remote employees both in the US as well as in other countries.

The biggest issue that I have with remote work is if there are more employees working in house and just a few working remotely. It is hard to feel like part of the team when the majority of your co-workers are chatting it up around the water cooler and you are left out. A company that has a mix of onsite and remote workers MUST proactively work on making the remote workers feel like part of the group. I do love working remotely and I am more efficient when I do work remotely. With the tools available to us like Slack, Webex, ScreenHero, Skype etc. we do not NEED to be sitting next to each other in order to work effectively.

The biggest technical issue that comes to mind is an issue with Elastic Search. Where I am working now we use ES a lot and probably in ways that it is/was not designed for. After some fussing around, we ended up actually creating solid expectations based on smoke testing. On of the side issues was that business was not sure “how” they wanted it to work. We did a couple of screen shares and created a document of the various edge cases and what the “expectations” were for each. Figuring out what we wanted to do was the hard part. Once we got to that stage, adding the code was easy. I am not always 100% TDD test first but in this case, with so many edge cases, it was the right approach.