What are the techniques that you use just about everyday, but are still awful at? Are you bad at it because of the difficulty of the task, laziness to learn better, or some other reason?
closed as not constructive by Jonas, Mark Trapp, bigown Oct 14 '10 at 15:03
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or specific expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, see the FAQ for guidance.
CommentingComments should really explain why I've done something - however, I usually completely forget to comment on why I've changed something (if I was fixing a bug, for instance) or put a comment which doesn't help in the slightest. And then I get annoyed when I see bad comments in code :( |
|||||
|
Regular expressions.Really need to make an effort of learning those, once and for all. |
|||||||||
|
|
Time estimates are always a challenge. It doesn't help that we have pressure from both within and without to give unrealistically short estimates:
The solutions to these challenges are:
|
|||||||||||||
|
|
Debugging other people's hacky code. And yes, given that this is what 90% of the work is about in my current gig (and in most programming jobs), it's a huge problem. And the reason I'm bad at it is because I have a bad internal response to the task. Subconsciously, I think the thought process goes something like this:
....and often step 4 gets missed and I end up in a frustration loop where I hate my job. |
|||||||||
|
|
Typing. My typing is really bad (speed is OK but accuracy is poor) and I've never found the time or motivation to unlearn all my bad habits and learn to type "properly". |
|||||||||
|
|
Multi-threading. I quite often have to write stuff that runs asynchronously and it's as though my brain can retain the concepts but I totally forget what libraries/classes/methods I used last time and have to go back over my old code or go out in search of tutorials before I can get it again. Then debugging multi-threaded code... shudder |
|||||
|
|
I'm not as good at math as I should be. Compared to the general population I'm fairly competent, but for someone with a degree in computer science, I feel like I should be a lot better at it. |
|||
|
|
|
Behavior-Driven and Test-Driven Development... (or pretty much any other *-Driven Development.) All of my peers rave about it and talk about how it not only improves the quality of code but it also helps to organize your thoughts when it comes to development. Honestly, I've tried it before, but it's hard for me to justify writing tests for something that I haven't written yet. I don't know... I'm sure that if I got it I'd be standing right along my peers singing it's praises, but, honestly, I don't think my brain is wired that way. |
|||
|
|
|
SQL. I do 95% of my programming work in C# or C++ equivalents, and I can do DDL to create the appropriate tables just fine. However, when the time comes to populate a table with some sample data for debugging purposes, I have to look up INSERT INTO every time! |
|||
|
|
|
Syntax is my Nemesis. I can solve the problem conceptually easily enough, but having learned a squillion different languages and tools and frameworks or whatever, I think I can be forgiven for having to Google the right syntax now and then. <Rant> Don't you just hate paper programming excercises in interviews? All about syntax, nothing to do with my ability to solve real problems. Grr. </Rant> Anyway, the answer is easy. The IDE is usually quite helpful with syntax, and Google is my friend. |
|||||||||
|
|
Interfacing with Customers Not a technical skill, but a skill we should possess regardless. I'm not a people person in this regard. Just feed me the specs and I'm happy. |
|||
|
|
|
LINQ and Lambda Expressions Well the LINQ part only really applies to .NET but I always end up asking on SO rather than learning it for myself. |
|||
|
|
|
Microsoft Word formatting codes. Like it or not, writing documentation, specs, test plans, etc. is a part of programming. In my office, MS Word is the default tool. Nothing frustrates me more than trying to figure out how to keep large documents formatted correctly and consistently. I am always wrestling with autonumbering, tables, indenting, page breaks, and all the other ways Word "helps" by inserting hidden metainfo. |
|||
|
Not sure if this counts, but autotools are my nemesis. This means autoconf, automake, autotest and libtool. A lot of projects that I manage were inherited with those tools in use for build configuration, and every time I need to change something about them .. my brain starts throbbing. Classic example, right now, today I'm working on breaking some code that is shared by 10 things out into a few shared libraries. I've maintained library code managed by autotools, but I'm drawing a complete blank on how to start a whole new project using them. I should know how to do this, but I keep digging through existing code to get 'help'. CMake, here I come. |
|||
|
|
|
debugging. going in the code and try to figure out what he hell is happening and wher, trying to figure out what went wrong and where, putting logging into my code what watch the console |
|||||
|
|
OOP. Some concepts are making sense lately but still a lot to go. Hmm.. I like functional btw. |
|||||
|
Thinking.I would write an explanation why, but ... ugh, brain hurts. (Then again, they say that in the simple solutions lies the genius :-)) |
|||
|
|
|
Converting between binary, hex and decimal. I always have to pull out a calculator (or ask my colleague, who can do the conversions in his head quicker and more accurately than I can do them with the calculator). |
|||
|
|
|
Actually, C++. I use C# whenever I can but I do a lot of Windows Installer work and M$ in its infinite wisdom doesn't support custom actions written in .NET so occasionally I have to get the stone tablets out and crank out some of that horrible C++ mess. It's not just the language, it's the archaic nature of the tools and the APIs you have to work with. I should really spend some time getting better at it but as soon as I stop I'll just forget it all again - it's like my brain actively purges the evil from its neurons to be replaced with something more healthy. Like beer. |
|||
|
|