Tag Info

Hot answers tagged

88

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." ...


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 ...


34

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, ...


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 ...


26

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

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

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 ...


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

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

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 ...


20

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 ...


20

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 ...


19

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 ...


18

Come on man, you're doing one of the most hard to do things on earth and you still have to work > 8 hours a day? I work fulltime, i don't even have time to make a contact form for a friend. When someone ask me to do anything for him i will just say - "I'm no kid now, i have a JOB! I will not waste the whole weekend to make some stupid website for some ...


17

I think that if you tried to pull me away from my family and all my personal responsibilites for an entire week of work promsing unpaid overtime and forced interaction with my co-workers I would do my best to opt out. I like a lot of my coworkers, but there is no way your whole team likes each other that much. If you have a bunch of single employees this ...


17

It is better to explain what the customer will get if you follow their requirements as they are written, and suggest that the requirements be rewritten to clarify the customer's true intent. But generally speaking it is the Project Manager's job to interpret the requirements in a way that will adequately fulfill the customer's needs. It is pointless to ...


16

I'd feel better if you said you had everything wrapped in unit tests. If you don't, you should build a test suite before even thinking about rearchitecting the application. Having a test suite will improve your understanding of the application, and will tell you when a change in the application breaks something.


16

Have you explained that to the person? You are the professional software engineer, so the person that you are building software for should be considering your knowledge and feedback when it comes to the design and implementation of software systems. The Cone of Uncertainty is probably a good starting point. Software projects are hard to estimate until more ...


16

No, it's not. If the code-base of projects you look at is too daunting, consider: Choosing a (even) smaller project to work with. Choose a smaller task within the project: Write an example/tutorial/demo for something Update and fix documentation (all projects, OS or no, need better docs) Fix many low-priority but easy to fix bugs (great exposure to code, ...


16

Martin Fowler's quote is relevant: "You can change your organization or change your organization." Given that you've apparently decided to change your organization (make it better) instead of change your organization (work for a different organization), here are a few suggestions. First, a lot of your course of action depends on details about the power ...


16

What I have done in the past is either convert the physical development machine to a VM, or if it is already a VM, retain it for future use. It's not as efficient as I'd like for disk space usage, but space is cheap. Also, this process is so much less expensive time-wise than trying to re-configure an environment in the future should the need arise.


15

I'm not sure where you are, but I've never had to do "homework" for an interview. I've frequently encountered problems during an interview, but they were either generic programming questions on various algorithms, data structures, or puzzles or extremely generic versions of problems that were faced in the position I was applying for (for example, consuming ...


15

Here are some simple steps you can follow: Make sure you understand what the project is supposed to do If it's a logging library, I would look at the feature list. Asynchronous logging? Databases? What kind of configuration? If it's a media player, I would look at the GUI, see if it keeps metadata in a database or just plays files, et cetera. Think how you ...


15

There are a couple of flaws in your Team Lead's argument: Well-designed classes and enums are intended to be used anywhere in your project, not just where they may make sense logically. Classes and enums that are properly documented with XML comments are very self-describing, by merely hovering over the item referencing it. You can always get to a class or ...


14

For the specific project there's not much you can do until you find out what the client wants. However, there are some things you can do now so your team is ready to go. How are you going to handle version control? Will you do code reviews? When will the daily standup meetings be held? What are the rules? What role does everyone play? How are builds ...


13

Nobody should start to undertake a large project. You start with a small trivial project, and you should never expect it to get large. If you do, you'll just overdesign and generally think it's more important than it is likely at that stage. Or worse - you might be scared away by the sheer size of the work you envision. So start small, and think ...



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