271

You're not any slower in completing projects. Previously, you thought your novice projects were done when they really were not. You should sell this quality to clients. "This company might get it done faster and cheaper, but is it really done? Or will you be hunting bugs for years?" Beyond that, you need to know and accept the old idiom: "Perfect is the ...


245

When I hear “Senior Developer” I think of someone who has mastered programming. I think of a person who can design, code and test a system. They can talk to system architecture or component design. They understand and use design patterns. This person can anticipate the performance bottlenecks, but knows not to pre-optimize. This person will leverage ...


182

Sounds like it's time for you to join the dark side: management. I'm not suggesting you give up programming and become a manager. But it seems like all the experience you've quoted up until now has been technical in nature. In simple operation of writing out a file, you can think of 10 different aspects that a less mature developer would never consider. Not ...


96

I had the (likely) same problem many years ago, it lasted for a few years and I overcame it. So maybe it would be of some interest to you to know how I achieved that, even if I'm not sure my way will also apply to you. You should also have a look here : The Seven Stages of Expertise in Software Engineering It shows that productivity is in great part a side ...


90

I worked for about 11 years in companies that didn't use source control. We managed (mostly by commenting changes and keeping code on a central server that could be recovered to any date). We never really asked whether there was a better way. That said, this was also in the days when I had the entire MSDN library in book form on my desk. Yes, there was ...


90

To become a technical lead the following are essential The ability to mentor staff members at all level of seniority, from someone who has been out of uni for 3 months to a person who has been programming for 30 years A good knowledge of your development domain. This includes: languages, frameworks, utilities, development environments A solid understanding ...


49

I think it depends on his attitude. If he is a very experienced programmer, and a good programmer, I think he would be able to pick up a version control system quickly. He may talk about it in two ways: Good I've never used version control, but I'm very excited to learn, and it seems like it would really help make development more efficient. I haven't ...


44

"Years of experience" is more of a probability scale than a measure of anything concrete. With more years in, you get an increased chance that a person has encountered things such as: Has participated in a crisis-like event. Has seen a project from beginning to end. Has seen a project fail to begin or end. Has worked on legacy code. Has worked on a blank ...


42

An important part of programming is managing and controlling complexity and for me personally, it is one of the top issues. If ignored then either the frequency of deficiencies surges or, as in your case, the ETA of finished software increases dramatically. Software complexity can be controlled and managed from many different levels and ways but a good ...


42

Reading other people's code is in fact a very good habit, since it's the best way to understand what's out there and what the programmer community will presumably be familiar with. Your code has to be understandable by you and by everyone else who will ever have to maintain it, so it's important to acquire an understanding of what is and isn't readable - ...


34

Let me give you some perspective from doing software development in DOS and Windows for over 20 years. Version control software in the Windows/PC world was often unreliable in the early-mid 90's. Visual Sourcesafe (VSS) was about the best Windows based one around but it could be quirky and many programmers hated it. Some teams simply wouldn't entertain ...


32

There will be as many answers to this question as there are programmers. But I judge them this way: A Junior developer will need near-constant help. Not only will they not know the business domain, but they may also struggle with the fundamentals of the language or the toolset. They don't know what they don't know, so without guidance, they will make ...


29

The thing with learning drastically different languages isn't about learning the languages, it's about getting exposure to different approaches to problems. Tools for the toolbox as it were. One thing to note is that Haskell isn't particularly old and it is actually a very good candidate for someone only familiar with mainstream languages. Even a very old ...


29

Can't you have version control without version control software? Ask how they managed their code. Maybe there was a home-grown system already in place. Wanting to do things manually, reinventing the wheel and being resistent to change are nothing new to programming. Are you going to drool over a candidate that uses Visual Source Safe and "only" VSS? When ...


27

In my experience the Lead has a little bit less to do with the dirty work of hands-on programming and more to do with management. To that end I'd recommend the following Invest more time in design and architectural pursuits and development. As a lead, your function is going to centre around providing technical guidance and direction to your team. You'll be ...


26

There is always a better way to write your code. No matter how excellent you find the code you write, you will be surprised how bad it is if you review it in a few years. Just because a few years before, you were unaware of some patterns you know today, or some language features you've learnt meanwhile, etc.


25

The simple answer is: accept it. In all systems there's trade-offs to be made between reliability, robustness, security, speed, hardware cost, development cost, time to market, you name it. You will not always agree with how the customer makes those trade-offs, but you're not the one making those decisions. All you can do is provide a considered opinion. ...


23

Stay Fit: Get Regular Practice Practice makes perfect. The more code you write AND read, the closer you get to enlightenment / mastery as a programmer / developer / software engineer / guru / ninja / craftsman / hacker / buzzword-of-choice. By not only coding and reading more, but also trying our new ways of writing code, the more open-minded you (...


22

The way people know about the book Mythical Man Month - which talks about bogus myth of Man-month in project planning - i guess there is a clear need for another parallel book called "Mythical Man Years" to explain why number of years is a useless metrics to evaluate people. There are many aspects to explain this: 1. Number of years alone don't count: ...


21

you're missing the point. Senior means nothing. Junior means nothing. Titles mean nothing. My title - Associate Business Systems Director. My responsibilities - managing all things IT from in house software development through to infrastrucure, through security, through to customer web sites. My software development experience - self taught. My network ...


21

Richard's comment is most of the answer already. Whenever you're programming for anything but a class exercise, you'll want to reuse as much existing code as possible, with just a few other considerations to balance. The advantages of code reuse are: You work faster, because some work has already been done. The existing code has a good chance of being ...


19

There is no excuse for not using version control, even for a small project developed by single developer. Setting up local version control is beyond trivial, benefits huge. Any developer not knowing that cannot be considered good nor experienced. As for companies perceiving version control as "novelty", which they are not willing to introduce: SCCS was ...


17

If they say "Excellent knowledge" then you should be able to identify and use all of the language's features correctly- including those from the latest C++11 Standard which are currently universally supported (unfortunately, meaning Visual Studio is the lowest common denominator here). A person with Excellent C++ knowledge can author their own type traits or ...


17

Think before you start coding. There is nothing more permanent than temporary solutions :) If it is awfully hard to solve a problem, most likely the problem itself is badly posed from the very beginning.


17

It sounds like your skills would be very useful for very high quality mission critical systems development, like finance/trading related applications, broadcasting, aerospace, defense... Errors in these sort of applications are very costly and they employ people who think like you as you can cover all the cases.


16

The truth is that modern systems are becoming increasingly complex. The computer is now similar to that game "Jenga" where you have all of these pieces relying on many of the others. Pull out the wrong piece and you have an error, pull out a correct/necessary piece and you still may produce an error. The more complex the system the more time you are likely ...


15

Reading and using other peoples code is an excellent way to learn, however it can also be a trap. You don't want to turn into a Cargo Cult Programmer: http://en.wikipedia.org/wiki/Cargo_cult_programming The term cargo cult programmer may apply when an unskilled or novice computer programmer (or one inexperienced with the problem at hand) copies some ...


14

There was a good blog post by Martin Fowler recently. Things that I took away from it are: It has nothing to do with how long you've been working for somebody. You work for three years and you become a senior developer. What happens after six years? Do you become a senior senior developer? Senior developers don't look down at you or think that they are ...


14

Unless I need something done this week, I don't care if candidates have any experience with the technology I am hiring them to use. If I already have one in-house expert, I care even less. In two months a good developer with no experience in a platform will be outperforming the average developer with ten years experience in it. The good developer will ...


14

A programmer who has never used version control has probably never cooperated with other programmers. I would probably never consider hiring such a programmer, regardless of any other credentials.


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