Enjoy bug fixing more than coding from scratch [closed] - debugging

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 12 years ago.
As I get more and more into my job I've had a lot of opportunity to code new projects from scratch. Almost every programmer I know really appreciates that opportunity.
But the further I go into it, the more I enjoy bug fixing. In fact, if I can spend a whole day looking over code, whether it be mine or someone else's code, and find some obscure bug, I feel much more accomplished than when I create code. Does anyone else feel this way, and are there any job advantages to this?

Maybe you should be a tester?

I can certainly relate. I think with me it is because I am never quite satisfied with my own code or design choices. Also because I started out in QA I never ever trust any code to work, certainly not mine.
I think TDD works very well with me when designing software, because once a test method has been created it shows that there is a "bug" and I'll need to fix it.

At my last job, we had a candidate apply for a position that was exactly the same way. We hired her and she worked out famously doing exactly that. I think an effective development team needs to have a nice mix of people who prefer doing different things: Back Office dev, UI, Database, Bug Fixing, etc...

You're a sick individual. Seek help immediately. :-) Seriously, you might want to look at a job in QA/maintenance, though, I don't know if that would be consider advantageous to your career.

That's interesting. I am the opposite way -- love to design and make things from scratch, working with other people.
I think it's great that some people like some things, and others like other things. The trick for a company is to hire people for the jobs that they really enjoy doing. So the job advantages to you is that other people don't enjoy those kinds of tasks as much as you do. You have less competition.

It's said that a plenty of developers spend around 50% of their time debugging instead of coding new stuff, that's why debugging skills are actually so important and you should code thinking that eventually you'll have to debug your own code, it's nice to see you enjoy it... but that's something I personally don't share with you =)
Personally the longest and more frustrating hours I have spent in front of a computer have been debugging, it MAY be fun when you're are working with your own code or somebody's else code that has been nicely created (well documented, properly formatted, etc.). Just as Bryan mentioned, in a certain way, you have a tester's spirit =)

Related

copying algorithms and feeling guilt [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
so this might be a weird question, and it might be better to ask a psychologist but i thought since they probably wouldn't know much about programming, i could ask you guys. So i have an assignment and it asks me to solve a problem using an algorithm. So i finish the problem and then usually look online for better algorithms and see how people did theirs. But i was working on a problem that i had solved to about maybe 50%, but then i ran into a wall.
So i looked online and found this great algorithm, i want to use it (i have already implemented it) but i feel a bit jealous and guilty that i couldn't think of a way to solve it and like i have done something wrong. I will obviously cite where i got the algorithm from, so i'm not cheating. How should i view something like this, try to what i learned from the algorithm and try to apply it in the future? Do you guys ever feel like oh i copied it and i was unable to think about it on my own. I have like an ocd about this stuff. Thanks for any help and support
Consider this: if you had to always start from scratch and reinvent everything someone else figured out before you you'd still be sitting in a cave, hunt and gather plants for food - you get the picture.
Someone else invented the computer but you don't feel guilty about that, do you? There are a number of algorithms out there that are very fundamental and you use them even when you don't realize it - searching, sorting, memory management etc.
Copying is progress, it gives you the time to solve the new problems and someone else may end up copying your solutions if they are good.
...
However to get good you have to grunt through the basics and really get them. And blatantly copying won't give any better of a clue how to come up with your own. On top of that copying may be illegal - if a certain algorithm is protected by a patent for example.
My take is to use your better judgement and don't be too shy to copy but make sure you really understand what you're copying and strive to better yourself so that eventually others find you worth copying.
Referring to algorithms from the internet is obviously not cheating. B'coz that is the reason why a noble guy has uploaded it. You should be certain that you would not always be able to think the best algorithm even if you have the right knowledge. Algorithms are like art and it comes the best when you are in the right state of mind... Hence don't worry and enjoy programming.

How to phrase a request for feedback / support from management? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 3 years ago.
Improve this question
I'm in my first development job out of college and have been handed a (solo) project that is completely outside the range of my skills/experience both in terms of the technologies being used and the sheer scope of the thing.
I've spent the last 6 months or so basically completely retraining myself and then starting to do the thing, and although I did very well at college and I think that I'm on track for delivery, I've had zero feedback on what I've been doing and I'm suddenly starting to feel very much out of my depth.
My direct supervisor, while a nice guy and I think a competent coder, doesn't have the best communication skills and basically told me to "read a book" when I asked him for a bit of guidance, which is not really what I was hoping for!
Am I just being unrealistic about the amount of support I can expect as a junior developer? It seems to me that ignoring the issue and ploughing ahead runs the risk of a failed project which is to no-ones benefit. I could take my request for guidance a step higher to the head of development, but I don't want to sound like I'm saying I can't do the job nor do I want to make my supervisor look bad.
Can anyone suggest a good approach for saying "help!" without making myself or my supervisor look bad?
This is a great question, and I think a fairly common situation. Basically, I think what you're asking for is guidance on how to communicate with your boss, and the other people in your organization.
This might be a good time to look into the scrum framework, and take from it what seems applicable to your environment.
In particular, you mention that you might be in over your head. Or, there is an (implicit) expectation that you'll need to finish this project "tomorrow," when you really don't know how long it will take.
I suggest starting with a list. Write down everything you need to do. Include non-coding activities, like "research technology X for doing Y," and give each task a basic time estimate like "1" for short, "2" for medium, "3" for long. Then put the things in an order that you think makes sense.
Then meet with your boss, once a week, for like 20 minutes, to discuss what you did, and what you're going to do next week. Out of this discussion, you'll both see what's going on, and adjust expectations (and the list) accordingly. When conflicts of expectation come up, talk it out.
Regarding the amount of support to expect as a junior developer, this really depends on your organization, and your supervisor's opinion. As software engineering is still a relatively young profession, there isn't much in the way of industry-standard mentoring programs.
I suggest trying the list + meeting thing for a couple months, and observe how your opinion of the support situation changes. Then, go to a large conference as soon as possible; spend the money if you need to. You'll see who is struggling with similar situations, and also who is not, and you'll create your own, more-informed model of "how the industry is supposed to work."
Regarding a good approach to communicating, I (seriously) suggest The Seven Principles for Making Marriage Work by John Gottman, which has a lot of examples of what works and doesn't work when communicating with people.

What is the benefits of organizing programming code? [closed]

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 9 years ago.
Why do we need to organize code? What are the objectives of organizing code. Organizing code is a time consuming process until it becomes habit. I am trying estimate the cost and benefits of organizing any programming code
Imagine you are at the library; none of the books at the library are organized. If your work depends on finding references in books, you will waste a lot of time searching for the books. This may be a quick process if you have only a few hundred books, but when you have thousands or tens of thousands of books, you will need to ensure the books stay organized in order to efficiently locate them. You could also say "Organizing books is a time consuming process", but the end result is that it saves you time when/if they are kept organized.
The same thing happens as software becomes more complex. People won't want to add programs which are not well organized to well organized programs/codebases. It's hard to use/maintain programs which are complex and organized poorly (or not at all).
One of the biggest problems if you are faced with organizing a codebase is that it's very monotonous and time consuming -- it's easy to (unknowingly) introduce changes which result in bugs; these changes should receive significant testing (but it's not likely that a disorganized codebase has high test coverage). Disorganized programs which are reused and/or have long lifetimes usually require significantly more maintenance time over the life of the program.
If you're just banging out a proof of concept that is 100 lines and will remain independent of all other programs, you don't have to obsess over the organization of that program.
Organized code becomes much easier to maintain and extend over time than code that is placed wildly about. That's why programmers take so much care to name variables/methods/etc. well, keep methods short and specific, and so on. I would recommend reading Clean Code by Robert Martin.

Cocoa - Creating more customized apps [closed]

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 9 years ago.
So far in my use of objective c and cocoa, I have made some simple OSX apps that make use of some of the basic apple UI elements such as NSButton, NSTextFeild, NSView, etc. However, now I find that I'm wanting to add parts to my programs that don't fit so squarely within the given UI elements. ie. in a program I'm writing now, I want to create a checklist in which users can enter new elements, check off elements to delete them, etc. all with a custom UI. My problem right now is that I don't even know where to start looking for the information I need to learn how to create more advanced things like this, or what to search for to start finding information. Could anyone set me on the right track as to what information I should be looking for and where I can go to find it? Thanks.
You'll probably want to look at Cocos2d or even OpenGL. I'm guessing though that this may be overkill for your solution. You might also be able to override or extend some of the base UI elements.
If you're new to Objective-C and Mac OS programming, I would recommend taking it a bit slower with this. Often we developers dream up huge complex interfaces when really, just a basic, stock interface would work just fine for our users.
For your first release, keep it simple and just ship some code in short time. Then work with your users and see how they really want to work with your app and go from there.
Good luck!
db

Which single software quality aspect you always strive to achieve? [closed]

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 12 years ago.
Is it performance, scalabilty, maintainability, usability or what ? What is it that you always strive to achieve while creating a good software or application and why ?
I always prefer maintainability above anything. It's ok if its not otimized or has great user interface - it has to be maintainable. I'm sure each one of us would have something very important to say here. Whole idea is to gather as many as perspectives for improvement in software development.
There's a false premise here: that you want to optimize only one single aspect.
You need to strike a balance, even if that means none of the aspects is perfectly optimised.
For example, your suggestion of striving for maintainability is futile if the usability suffers so much that no-one wants to use your product.
(It could even be interpreted as a little bit selfish, putting your priorities for an easier life over those of the customer.)
Similarly, when I see people striving to get the fastest possible performance out of a component, when there is little customer-need for that... frustrating when they are impacting maintainability, or missing the opportunity to improve security.
It has to do what the customer wants it to do
It doesn't matter how fast, how efficient, how maintainable or how testable a piece of software is if it doesn't do what the customer wants then it's no use to them
A good usability for the end user and some elegance in the code for the fellow developers that might have to work on the same project.
Readability.
If code is readable it's easier to understand! Things like performance optimizations can come later if required after profiling your code.
I think all the other 'goals' you mention can be built on providing you have a readable -and therefore understandable - codebase

Resources