91

Why do developers ask "why" when someone asks them how to implement a solution? Because it requires more knowledge to evaluate whether a solution is appropriate than it does to actually implement the solution. It's very difficult to believe someone when they say, "I don't know how to do this, but I know for sure it's what I need to do." ...


78

An objective response: While my initial response to this question was based on my empirical experience as a soon-to-graduate CS student and my projected opinion of the type of people I wanted to work with in the CS field. There is actually an objective (with respect to the subjective opinions of the ACM SIGCSE and IEEE computing societies) answer. Every 10 ...


43

Is LISP still practiced/used in todays world, or is it a legacy language Yes, it is, but you have to know where to look. People who use LISP don't tend to shout too loudly about it but there's a handful of examples of a few high-profile startups having used it to great effect over the last 20 years. It is also very popular with small companies in Europe. ...


38

"Working fine" is indeed a great metric, but if you are the only one in the team able to decipher what you wrote, and thus maintain it, the code is close to worthless for the company for the mid or long-term. A good code is at least : working as intended human-readable / clear easily maintainable easily extensible for future changes safe without unneeded ...


30

Am I too aggressive about the changes which i am proposing ? Without specifics (what new techs you're proposing, why they're rejecting them, where they feel that DRY is impractical and why, etc), it's hard to evaluate the amount of merit to your proposals and that's important for your aggressiveness. If you want them to use a new framework because you ...


28

You're missing the point. Jeff Atwood is saying that being an excellent programmer requires more than just coding skills. It also requires being a good designer, working well with other people, and in general becoming a better thinker and problem solver. The greatest missing skill is somebody who's both good at understanding the engineering and who has ...


27

If he liked the product you built, but is stuck up on your use of Backbone, you both need to have a conversation about the desired tech stack. As developers, we ought to use tools that are readily available, and consequently, smoothly move our flow of work. If he expected you to build the front-end from scratch, he should have been explicit and had good ...


25

I've seen some course material from MIT, and it was shockingly bad. They had teaching materials which required VC5, bunches of implicit global variables, passing colours as "Blue" instead of 32bit ARGB, let alone 4x [0,1] floats, that sort of thing. I wouldn't trust a curriculum or code just because it comes from a big-name university. My CS degree (from a ...


23

First, despite the way your question is formulated, there is no end to any studying, especially not in our field, where new things pop up faster than you can read about them. That being said, when you want to improve, there are the following categories that I'd consider. For the most benefit/ROI you should choose something from your weakest area of course. ...


22

Under the heading of "etc." comes something which can easily take 50% or more of your time. Learn how to debug. This means learning the Scientific Method. I mean really learning it. And then applying it with brutal self-honesty. Learn how to state precisely what you know is true, what you know is not true, and those things which you don't know. Any time ...


20

It is completely normal. Hardly anyone can say that he/she knows the syntax of every PHP or Java class, function or framework. Your brain is better used for problem solving than for memorizing things. Obviously you tend to memorize things you use in a daily basis but as soon as several month pass without doing that specific thing, you forget the syntax. ...


20

I'm not sure that thinking about a problem ahead of time vs. iterative approach are contradictory to each other. Just like many other things, I think you should strive to achieve the balance between the two. How do you find the balance? That's something you learn with experience and often time best lessons (i.e. stuff that gives you experience) is when you ...


20

The simple answer to your question is to try Lisp, preferably in conjunction with SICP. Then you will be enlightened. That said... Code is Data Most languages make a sharp distinction between code and data; Lisp does not. This makes it possible to, for example, trivially write a Lisp parser in Lisp, and to manipulate Lisp code within Lisp. The best ...


19

[can] competitive programming help me in improving [the speed]? Yes, it can, and given sufficient time, it certainly will. However, speed is not the most important skill that you are going to improve. From my experience of participating with TopCoder for 10+ years, the most important skill that you are going to take from competitive programming is an ...


19

I will write this from my perspective as a Senior Developer (or insert any other fancy title you like here) that works with Junior developers frequently. This is probably a shortage on both your front, and the Senior Developers' front. One thing a lot of Junior developers don't understand is that whilst you (as a junior) are pushing to use new ...


18

This list is a start... you're asking a big question! How to clarify and write down what the customers wants ("requirements"). This is an art in and of itself. If you can do this, your programming job will be much better. How to estimate and project plan. People will ask you for an estimate, be prepared. How to constructively review other people's code. ...


17

At the risk of giving a "me too" answer, if you try it you'll see... If you study computer languages, you're likely to get the impression that it's at least half about parsing. If you learn Lisp, you'll realize parsing the surface syntax is nothing more than a convenience for people (like most of us) who don't like Lots of Irritating Single Parentheses. ...


16

Honestly, 90% of the "hacking" books and resources out there are junk. While they may give you insight into how script kiddies work, most don't go much further than that. The only true way to understand computer security is to understand systems (software and/or hardware in some cases) very thoroughly. In wholly understanding a given system, you will also ...


16

Don't let it stop you, but don't build it for yourself either. There are very difficult and extreme restrictions on PCI compliance, which is the technical hoop you have to jump through to store credit card information. Do yourself a big favor and use a service like Authorize.net or Stripe that lets you store all of that sensitive data on their servers and ...


15

He doesn't seem very "senior" to me to make a snap judgement call like that. I always tend to use a proper framework instead of the "Reinvent the square wheel" anti-pattern. If he was truly senior he would understand and know the value of a good framework. At best I would expect him to question Backbone.js choice over another MVC JavaScript framework and ...


14

You don't become professional just by reading books, but by practicing. Write code every day. Like you can't learn how to play a violin without playing, you have to code in order to become a developer. Like any other domain, development requires years and years of practice. Read code of other people. Why are they writing something this way? Is it better ...


14

In my experience, when people have excess difficulty coding algorithms in C, it's often because they are tightly coupling their data structure management with their algorithm instead of creating appropriate abstractions. For example, manually manipulating linked list pointers everywhere instead of making push() and pop() functions. They are too accustomed ...


14

"The question is specifically how does one engage with another programmer to ask a question, where the other has the answer and skip the debate about why the question is being asked." You can't, at least not deterministically. The other programmer is a person, not a computer, and not your servant. If you ask them a question they get to choose what they ...


13

The question is specifically how does one engage with another programmer to ask a question, where the other has the answer and skip the debate about why the question is being asked. You can't. Programmers, especially good ones, are wired to solve problems and to be efficient. When a customer or a fellow programmer comes looking for an answer - they will ...


12

Pretty much any software that "wants" to be extended over time, by multiple contributors who are not closely linked or coordinating, can benefit from a plug-in architecture of some sort. Common examples are operating systems, CAD and GIS tools, drawing and image manipulation tools, text editors and word processors, IDEs, web browsers, web content management ...


12

There are plenty of sources to learn from aside more experienced colleagues: books, blogs of skillful developers, Stack Exchange, lectures/conferences, etc. Code reviews are also crucial, and CodeReview.SE is a precious resource. Let's see how it could work on an example. Example You're reading a blog post which mentions a term "ETL". You don't know the ...


12

Think of this as a huge opportunity. Promotions often don't (and shouldn't) come from the number of years you've put into a company anymore. You've got what you think are some really good ideas, and your superiors/peers don't want to listen. Here is a strategy: Do something awesome Collect hard metrics for how awesome it is (this step is key) Demonstrate ...


12

Some quick thoughts. Be a leader, not a boss. Dont tell people what to do, and how to do it, instead give your team members problems to solve, challenges to own, and most importantly responsibility. Dont hide behind a schedule. Talk to your team, sit down with them and ask them how they're going and what frustrations / issues they have. Understand what it ...


12

I interpreted your question as "Can my functioning code be butchered in a review to a point where it doesn't even compile anymore?". Yes, it can. Generally, during a review you look at how your code does what it does. When you want to hand in your code, you say you have finished a certain part of the program. You say it works. Testing is then done to ...


10

As you beat your way through each problem, you become better at solving problems in general, and eventually, you may become really good at it. Eg, trade in your club for a nice circular saw. Time Doing Something + Paying Attention = Experience I've been programming for 24 years now, and have gotten quite proficient at diving into new areas that are ...


Only top voted, non community-wiki answers of a minimum length are eligible