• Hey, guest user. Hope you're enjoying NeoGAF! Have you considered registering for an account? Come join us and add your take to the daily discourse.

Computer Science Career Advice: 'Too' Detail Oriented?

Zoe

Member
If you work in an industry that has strict regulatory requirements, you can bet your ass there's going to be in-house QA.
 
Not everyone will become an architect. There are many many detail focused programmers out there, and sometimes they are preferred. You'll be fine, op.
 

dpunk3

Member
I'm having an issue understanding the math, and I feel so behind compared to other people in the CS program at my school. I can't find the motivation to do my own research, which I know is the only way to put myself ahead.
 

Rewind

Member
Anybody have any good resources for learning about design patterns and/or modern application development/web development practices?

I'm going to try test myself this week by building a website while writing the least amount of code as possible.
You could learn Angular or React. The flux (or store) design pattern is very popular due to one way data flow and both frameworks have support for it. React has Redux and Angular has NGRX which is basically redux for Angular but uses rxjs. Personally I would go the Angular / NGRX route and they have really good documentation on best practices and how to best layout a web app. Use the Angular CLI if you do Angular though, don't try and make a project from nothing, let the CLI build the boilerplate and handle webpack. React is less of a framework than Angular and is more modular. Things that are built into Angular, such as http helpers or animations, you need to get an npm package for. Angular has a steeper learning curve though because it is more than just doing JavaScript.
 

III-V

Member
Maybe continue your education, OP. I am not CS, I am EE, but basically we need all types: from detail oriented to big picture folks. As time goes on, you will find a good fit.
 
Self-contained code is good.

Design/architecture is a different skill, planning is a different skill. Few people are born with these.

I'd rather work with someone who's detail oriented vs not. The real question is whether that person can be productive (i.e produce good work in a timely fashion)
 
Sounds like you just need more experience. Since you obviously recognize the problem, the next step is to actively try to change.
 

Mission

Member
Have you been more than one place? Honestly it sounds a little like you need a mentor, or even just a senior developer.

Architecture should be for architects or senior developers. They should get the big picture and they should be able to explain the big picture to you while still giving you a small enough piece to work on that your detail will help.

You may also be better in situations where more logic is required than UI. I have coworkers like that. They are capable as UI folks but it's not what they are good at (really... almost any of them, and they will be the first to say that).

With your focus you might be better at new cognitive and data analysis work or data warehouse Cognos \ Informatica type work where you have stricter inputs and outputs. SAP. These all REALLY sought after areas that may better suit you.

Or again... just a mentor to help you stay on track.
 

xk0sm0sx

Member
So it's not your full-time career yet, just part-time and internships. Well good news, the reason is you're simply not experienced enough.

Most programmers are like this when starting out, only able to concentrate on their own tasks, and thinking way too hard about optimizing small details.
Sometimes I work with people like that too, and it's really bad. But the answer is simply because they haven't had enough experience, and I try to guide them out of that box.
You already accomplished the first step, which is realizing your flaw, which I say is better than most people would fare.

To be able to program while seeing the whole picture is very important, because it means getting things done. Being able to do that means you are already professional.
A way to gain that skill is to lead a project, or if you don't have a team, do a project by yourself.
You will struggle initially, as you realize certain things are very inefficient, but that's okay. Do another project and avoid those same mistakes. Do it enough times, and you start to realize, maybe I should have programmed this way. And you can apply those experience when you work with others.

So yeah, it's not something to fret about, the only bad thing is if you keep sticking to lone, self-contained code rather than whole projects, then you will never learn, which sadly is some professional programmers out there.
 
Sounds like you just need more experience. Since you obviously recognize the problem, the next step is to actively try to change.
Yeah, I agree with this.

Plus, programming for your computer science degree doesn't have a whole lot to do with programming in a development setting.

But the big picture and global abstractions of a system is something that takes time to learn, and it's a skill that you'll learn after years of actual software development experience. That's part of what being a junior is about - finding your weak spots (everybody has them) and accommodating, building yourself and investing in your own skill set.
 
Self-contained code is good.

Design/architecture is a different skill, planning is a different skill. Few people are born with these.

I'd rather work with someone who's detail oriented vs not. The real question is whether that person can be productive (i.e produce good work in a timely fashion)

I'm having trouble with this thread because of the terms. Being detail-oriented is a good thing for a coder. I think we're talking about narrow-thinking or blinders here. And code should be as self-contained as possible. Isn't that a key point of OOP? I'd like to hear more concrete examples of how this code isn't interoperable.
 

Rewind

Member
I'm having trouble with this thread because of the terms. Being detail-oriented is a good thing for a coder. I think we're talking about narrow-thinking or blinders here. And code should be as self-contained as possible. Isn't that a key point of OOP? I'd like to hear more concrete examples of how this code isn't interoperable.

Depends on what "self-contained" means. Writing decoupled code is important for a variety of reasons. However writing a block of code in a completely different style that doesn't fit with the rest of the code base is also a problem. The goal should be to have a consistent code base that has decoupled or independent components that can interact with each other in a variety of ways to form features.
 
Depends on what "self-contained" means. Writing decoupled code is important for a variety of reasons. However writing a block of code in a completely different style that doesn't fit with the rest of the code base is also a problem. The goal should be to have a consistent code base that has decoupled or independent components that can interact with each other in a variety of ways to form features.

Right. That is the goal.

I would never interpret code written in a style that doesn't fit or is hard to understand as "self-contained" though. I'd just call it shitty.
 

0xCA2

Member
Right. That is the goal.

I would never interpret code written in a style that doesn't fit or is hard to understand as "self-contained" though. I'd just call it shitty.

Good thing I never referenced style or said I wrote code that's hard to understand.
 

Painguy

Member
Hey OP, I suggest reading this to get an overview of coding design patterns. It's honestly not your fault that you code the way you do. Schools have generally been shit at teaching students coding design patterns.

Read these links to learn a bit more. It takes a lot of practice to burn these patterns to your brain, but just be patient. A year or 2 n u'll be chillin.

https://en.wikipedia.org/wiki/Software_design_pattern

https://en.wikibooks.org/wiki/Introduction_to_Software_Engineering/Architecture/Design_Patterns

https://code.tutsplus.com/articles/a-beginners-guide-to-design-patterns--net-12752

The link below applies to software dev in general, not just java.
http://www.journaldev.com/1827/java-design-patterns-example-tutorial
 

0xCA2

Member
Have you been more than one place? Honestly it sounds a little like you need a mentor, or even just a senior developer.

Architecture should be for architects or senior developers. They should get the big picture and they should be able to explain the big picture to you while still giving you a small enough piece to work on that your detail will help.

You may also be better in situations where more logic is required than UI. I have coworkers like that. They are capable as UI folks but it's not what they are good at (really... almost any of them, and they will be the first to say that).

With your focus you might be better at new cognitive and data analysis work or data warehouse Cognos \ Informatica type work where you have stricter inputs and outputs. SAP. These all REALLY sought after areas that may better suit you.

Or again... just a mentor to help you stay on track.

I've primarily worked in environments where I was given free reign and expected to be a specialist over my own section of the project. I've never had much guidance.

And to the bolded, yeah that's basically me. UI is my hell and I did it for a long time, too.
 
I gotta be honest, I think your problem might be largely personality and communication skills. I've worked with a lot of guys who could do the work, but couldn't work with a team.
 

Antagon

Member
Being detail oriented isn't a bad thing, OP. I'm on the spectrum myself and working as a developer for over 9 years now. Pragmatism and keeping check off the larger picture is important as well, but in a good team you don't necessarily need to do all those things yourself.

Have you worked in any place that practices scrum at least competently? For me, having small well defined issues really helps with keeping a clear goal in mind and keeps me from doing too much. Having regular retrospections also does wonders for me. I know, because right now I've been doing a project mostly on my own where all this is missing.

Also, don't sweat it about the architecture. You're new, you shouldn't really be expected doing this stuff yet. And bringing structure in smaller portions of the code (which I don't really consider architecture) is something that can be done really well after doing implementation. Just look at the red/green/refactor pattern of TDD or read the book 'Refactoring to patterns'.

Edit: Also, if you do want to look into related fields or specializations (like QA) security is a good place to look as well. Incredibly important and really dependent on details.
 

Zoe

Member
I'm having trouble with this thread because of the terms. Being detail-oriented is a good thing for a coder. I think we're talking about narrow-thinking or blinders here. And code should be as self-contained as possible. Isn't that a key point of OOP? I'd like to hear more concrete examples of how this code isn't interoperable.
I agree. I know people who are like that, and it is very difficult to work with them.
 

0xCA2

Member
People seem to not understand the connection between detail oriented thinking and 'tunnel vision'. Detail oriented thinking at its extreme leads to tunnel vision because one can only focus on a certain amount of details at a time. Imagine if your brain 'saw' (metaphor here) the world through binoculars with 10000x magnification, all of the time. You could *see* in extreme detail but only very small parts of the world at a time. That's roughly how me and other (but not all) autistic people perceive the world. Obviously it can be harnessed properly; I'm not saying all autistic people have the issues with programming that I do; I'm just struggling to figure out how to make things work for me.
 
I'm confused OP, are you given no requirements or documentation for the code/features that the company wants you to write?

I mean for example you say you have some issues with your code interfacing properly with other parts of the system because you feel you don't have a grasp of the "big picture" of what is going on with the overall codebase/project.

But surely for the task you are given you are either interacting with an API for a different part of the system, which should have good documentation/requirements. In that case your code will either be compliant with the API or it won't be, in which case it probably won't work at all.

If you are not using API's but interacting with code/classes/objects/modules etc... directly then what task is it exactly you are trying to accomplish, and once you have reached the point where the code works and is tested to reasonable degree why isn't that just..."done" so to speak?

I can understand getting annoyed if you are lacking some low level details of exactly WHAT is going on or exactly HOW something should work but I'm not really following you exactly. Can you give a mock code example of something you made and some other part of the system and why they integrate "badly"?
 
I'm confused OP, are you given no requirements or documentation for the code/features that the company wants you to write?

I mean for example you say you have some issues with your code interfacing properly with other parts of the system because you feel you don't have a grasp of the "big picture" of what is going on with the overall codebase/project.

But surely for the task you are given you are either interacting with an API for a different part of the system, which should have good documentation/requirements. In that case your code will either be compliant with the API or it won't be, in which case it probably won't work at all.

If you are not using API's but interacting with code/classes/objects/modules etc... directly then what task is it exactly you are trying to accomplish, and once you have reached the point where the code works and is tested to reasonable degree why isn't that just..."done" so to speak?

I can understand getting annoyed if you are lacking some low level details of exactly WHAT is going on or exactly HOW something should work but I'm not really following you exactly. Can you give a mock code example of something you made and some other part of the system and why they integrate "badly"?

I'm lost on that one, too. If he writes a piece of code and the requirements are it's supposed to spit out "foo" or "bar" depending on different conditions, and it does that, and the issue isn't style or readability then what are the ways it isn't fitting it with the rest of the codebase?
 

Relix

he's Virgin Tight™
Go with QA and Automation. I once worked closely with a developer such as what you say you are and it was a pain for the team... Everything was always delayed and needed to be perfect in his eyes. I understand code needs to be the best it can be but when you have a one month deadline you cannot get too fancy. As long as usability is there and performance is at an acceptable level, then good enough. If using agile we will get that technical debt and focus on optimizing next release. Sometimes we just need to get things released.
 

Skatterd

Member
Do NOT go into QA. I repeat. DO. NOT. GO. INTO. QA.

It's a dead-end path that's not respected by your bosses and peers (1) it's been outsourced to India, my entire QA department was gutted down to a handful of people and (2) companies are more and more expecting the dev people to do the QA job (essentially a 2-for-1 deal).

Most software shops don't give a shit about quality, and it shows in how the QA is treated.

Just don't do it. You're irrevocably fucking over your career. Maybe consider QA when your 50 and nearing retirement or something.

I understand this attitude but it is definitely not all true for all software. Especially government contractors.
 

prophetvx

Member
True. I guess there are some case where people still care about QA in web dev. Not so many, though.

Web dev in general is pretty heavily outsourced. There are so many shops emerging in Eastern Europe in particular that specialize in javascript dev. The only way one can insulate themselves is by being effective in full stack and moving into a solutions architect type of role.

If you specialize in one type of development, you're always on the chopping block if the company you work for prioritizes output over quality.
 

Lombax

Banned
OP as others have mentioned you may be a good fit for QA Automation rather than development.

Also depending on your location see if you can find a place like: Raytheon, General Dynamics, BAE Systems or similar. These types of companies are the king or developing sub-systems that interact with systems.
 
Top Bottom