Tag Info

Hot answers tagged

272

Communicate your concerns in the most concise and non-confrontational way possible up the management ladder. Summarize the risks, but do not impose your conclusion on them. Management must always have the choice of what to do, but it is your job to assess and communicate the situation. Use email, so as to leave a paper trail when things go south. Having ...


89

The leader of this project will be the person who steps up and takes charge at the beginning. This applies to most things in life - not just software development. When everybody else is running around like chickens with no heads, the person who thinks things through, steps forward and says, "This is what we're going to do and this how we're going to do it." ...


87

Keep a paper trail (e.g. diary, saved emails, etc). Only include facts and objective observations. Leave all conclusions up to whomever (if anyone) reads what you've written. As a developer, if you're not viewed as an obstacle to the project you're likely to come out fine from the finger-pointing that will no doubt happen. Your manager may not be so ...


74

I'm going to recommend you take a little time to read 2 books. Death March is the canonical book that describes a pathological project management style that is widespread in software development. Due to schedule compression, feature bloat, or mismanagement, many projects end up in a bad state; it helps to understand that you are not alone and your project ...


68

Project Euler is good for learning CS math, but there's other things that might be a little more immediately practicable. Here are the most useful assignments I recall from undergrad: Implement all your favorite data structures: linked list, binary search tree, binary heap, chained hash, quadratic probing hash, etc. Build a string->string dictionary as an ...


65

To-do lists are magic. Generally you need to keep an active to-do list for each project and even while you're busy programming, if you think of something that has to be done and you can't do it immediately, then it goes on the list. Keep this list in a well-known place, either in a spreadsheet or text file in the project folder electronically, or in your ...


43

3 simple and cynical strategies to maintain career/sanity. See a train wreck in the making - get off the train: Failing projects are terrible for morale and unless you have ninja upward management skills will have some negative impact on your career. Jump now if you can see any soft landing. If that doesn't work keep your head down: People are going to ...


36

You could ask him/her to estimate how long it would take for her to access some far away location in an uninhabited corner of the world. As an extreme example, let's choose some lesser known peak in the Himalayas, where very few (if any) people have ever climbed on. She would need an awful lot of preparation plus practice before even starting the journey, ...


36

I'm guessing this is not a project at a workplace where you are a paid employee and something you do in your spare time for free? If you are making no money from this, then clearly there is no incentive for you, and no incentive for anyone else to come in fresh to deal with it. (unless maybe it is for a charity or similar voluntary organisation) As an ...


35

I just wanted to contribute some advice which is not going to be useful in your current situation, but you can start implementing it now to help in the future. Of course there are the obvious candidates such as todo lists and issue logs; looking at the recently added issues should give you a clue as to what you were doing when you were pulled off the ...


34

Short Version By adopting Zed Shaw's Programming, Motherf*cker! methodology? Longer (Serious) Version While Shaw - despite being a bit overly enthusiatic and (way) over the edge - definitely has a point there, there's a bit more to it than that... You quite simply need to learn to embrace something similar to a personal productivity ritual or ...


33

What to do now? Now, from tomorrow I'll be heading back to my old project and I realize that I do not remember what exactly was I doing and where to start! My guess is you have not done any of the next section. So looking up a todo list won't work. Block a period of time. Put this on your calendar and spend time reviewing the project. This might be ...


30

The main reason is an increase in scope, which the book "The Pragmatic Programmer" describes as: feature bloats creeping featurism requirement creep It is an aspect of the boiled-frog syndrome. The idea of the various "agile" method is to accelerate feedback and - hopefully - correct the evolution of the project in time. But the other reason is ...


29

Buy the K&R book, do the exercises. You'll (re)learn all you need about C, and a lot about CS too. Skip to the later chapters for parsing and Unixy goodness.


28

What impact will this soon-to-be failed project have on your career at the firm, and beyond? In my experience, merely being associated with successful projects is not an indicator of your own personal excellence. The qualities that you exhibit in the face of adversity and sometimes what looks to be certain failure, often gets noticed by the higher-ups, more ...


27

First, you need to get out of the mindset that you are now working for free, just because you've gotten what you believe is the final payment. You agreed to a price and were paid. If you had received all of the funds up front before even starting, would you have been doing the entire project for free? (BTW this is why I never work on fixed-price projects; ...


26

I've had my share of jobs in IT. Helpdesk, networking, software development, they all share similar problems. Quitting and starting anew, while refreshing, only brings about a new set of problems to deal with. There's a few things you can do to keep your sanity in check. Look for the real problem The client is trying to fully control projects. See if ...


25

Shifting requirements, faster delivery Agile is appealing because it gives the possibility of adapting to changing needs more quickly (or at all), and delivering those changes to the customer more quickly. This is why many companies fail when using Agile/Scrum: Managers don't understand that with great power (of setting quicker release dates and changing ...


25

Jarrod Nettles' answer pretty much summarises a lot what I was going to suggest, so I'll throw in some of what worked in my recent experiences in a similar situation. I would suggest finding some way to talk with them vocally, rather than by email. If you're not in the same area, get them all on Skype. If you're in the area, meet them at a coffee shop or ...


24

I'd start stopping to write things like this: Addendum: Please answer if you have experience with large-scale projects/open-source projects and try not to provide hypothetical/theoretical ideas, but practical, proven ones. This kind of arrogant attitude actually kills more open source projects than anything else. Open source is less about ...


23

I like examples. If you have an API that performs a variety of foo operations on bar objects, include practical examples, not just a single line showing how to call the function. Also make sure you include somewhere a high-level "big picture" overview of whatever is being documented. It's great to know the different types of foo operations available, but ...


22

Try creating a simple commercial product. Whats good about doing this is that if you can generate some sales for it, you can end up with a product that generates continuous (if small) revenue, whether you are paying attention to it or not. It will also be very valuable experience.


22

Build one to throw away comes from "not knowing what you don't know" at the start, so you learn as you go what you should have done at the start. Second System Effect comes from "now knowing what you did not know, however not knowing what you still don't know" i.e. Second system effect comes from trying to build a bigger, shinier, more complex system than ...


22

Announce your abandoning of the product to your community of users. Maybe you will find a successor for your role as maintainer. Try to organize some time of handover, as you would with a project in your day job. As esr put it in The Cathedral And The Bazaar: When you lose interest in a program, your last duty to it is to hand it off to a competent ...


22

First, don't panic. Imagine the worst that can happen. You try your hardest to understand the code base, can't get your head around it, tell your mentor, and he is disappointed and takes the responsibility away from you. But something good happened: you were honest about your limitations and didn't get in over your head and produce a bad product. That's ...


21

Yes. We are not sure what we are going to call the project/app we are working on at the mimute so we came up with a quick code name so we didn't waste time thinking about a name when it isn't strictly relevant.


21

Teaching I've taught a computer science class at a local university as an adjunct professor. The pay is decent, but it does require a one semester commitment. Update: As @Orbling said below, there are other benefits of teaching besides the money. Teaching has greatly helped me improve my communication skills, especially my public speaking. Getting a ...


21

The device is quite advanced, with more different functionalities than I could say from memory, and 98% of them are handled by this one huge executable. In one hand, the program is quite maintainable, well modularized inside, properly documented, there's a reasonable separation of functionalities by directories and files and so on. You said it ...


20

This is a very good question. In general, I prefer to keep things in English, because it is more or less the de-facto standard for software development. However, I also believe in creating domain models that represent the actual business, and the domain model should be described in terms that make sense to the business stakeholders. And if the business is ...



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